From 4d9c2d13b1b1e023b566369d7e6f349b69f04762 Mon Sep 17 00:00:00 2001 From: gigamaster <1905497+gigamaster@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:08:58 +0100 Subject: [PATCH] folder structure --- .../city-roads/assets/index.c4b0dabc.js | 468 + .../city-roads/assets/index.e4ff2fbf.css | 1 + app/dataviz/city-roads/index.html | 63 + app/dataviz/mark-twain-portrait/.gitignore | 37 + app/dataviz/mark-twain-portrait/LICENSE | 21 + app/dataviz/mark-twain-portrait/README.md | 72 + app/dataviz/mark-twain-portrait/bundle.js | 21548 ++++++++++++++++ .../docs/mark_twain_cloud.png | Bin 0 -> 150085 bytes .../docs/mark_twain_small.png | Bin 0 -> 124720 bytes .../mark-twain-portrait/docs/mark_twist.gif | Bin 0 -> 1790470 bytes app/dataviz/mark-twain-portrait/index.html | 127 + app/dataviz/mark-twain-portrait/index.js | 65 + app/dataviz/mark-twain-portrait/lib/help.js | 39 + .../mark-twain-portrait/lib/navigator.js | 50 + .../mark-twain-portrait/lib/panzoom.min.js | 1 + .../lib/query-state.min.js | 1 + app/dataviz/mark-twain-portrait/package.json | 12 + app/dataviz/package-manager/app.js | 64 + .../glyphicons-halflings-regular.eot | Bin .../glyphicons-halflings-regular.svg | 0 .../glyphicons-halflings-regular.ttf | Bin .../glyphicons-halflings-regular.woff | Bin .../glyphicons-halflings-regular.woff2 | Bin app/dataviz/package-manager/index.html | 30 + app/dataviz/package-manager/styles.css | 5 + app/dataviz/primerpedia-master/.editorconfig | 9 + app/dataviz/primerpedia-master/.eslintrc.json | 24 + .../.github/PULL_REQUEST_TEMPLATE.md | 4 + .../primerpedia-master/.github/settings.yml | 20 + .../primerpedia-master/CONTRIBUTING.md | 38 + app/dataviz/primerpedia-master/LICENSE.md | 16 + app/dataviz/primerpedia-master/README.md | 29 + .../primerpedia-master/design/index.html | 651 + .../design/screen/co-editing_sm.png | Bin 0 -> 104513 bytes .../design/screen/collective-memory_sm.png | Bin 0 -> 149462 bytes .../screen/contributor-locations_sm.png | Bin 0 -> 21744 bytes .../design/screen/geo-topic-map_sm.png | Bin 0 -> 67166 bytes .../design/screen/history_flow_sm.png | Bin 0 -> 104924 bytes .../design/screen/most-controversial_sm.png | Bin 0 -> 71861 bytes .../design/screen/what-is-wikipedia_sm.png | Bin 0 -> 87609 bytes .../design/screen/wiki-atlas_sm.png | Bin 0 -> 98533 bytes .../design/screen/wikigalaxy_sm.png | Bin 0 -> 31280 bytes .../design/screen/wikipedia-globe_sm.png | Bin 0 -> 92686 bytes .../design/screen/wikipedia_worldview_sm.png | Bin 0 -> 45588 bytes .../primerpedia-master/design/script.js | 98 + .../primerpedia-master/design/style.css | 572 + app/dataviz/primerpedia-master/img/cc.png | Bin 0 -> 1000 bytes app/dataviz/primerpedia-master/img/cc.svg | 4 + .../primerpedia-master/img/favicon.png | Bin 0 -> 559 bytes app/dataviz/primerpedia-master/img/github.png | Bin 0 -> 1074 bytes app/dataviz/primerpedia-master/img/github.svg | 4 + app/dataviz/primerpedia-master/img/info.png | Bin 0 -> 871 bytes app/dataviz/primerpedia-master/img/info.svg | 4 + .../primerpedia-master/img/loading.svg | 12 + app/dataviz/primerpedia-master/index.html | 99 + app/dataviz/primerpedia-master/utils.js | 61 + .../primerpedia-master/wiki-outline.css | 171 + .../primerpedia-master/wiki-outline.js | 319 + .../Women_in_Computing.html | 0 .../compare.html | 0 .../css/fonts/font.abril-droidsans.css | 0 .../css/fonts/font.amatic-andika.css | 0 .../css/fonts/font.bevan-pontanosans.css | 0 .../css/fonts/font.bitter-raleway.css | 0 .../css/fonts/font.clicker-garamond.css | 0 .../css/fonts/font.dancing-ledger.css | 0 .../css/fonts/font.default.css | 0 .../css/fonts/font.fjalla-average.css | 0 .../css/fonts/font.georgia-helvetica.css | 0 .../css/fonts/font.knightlab.css | 0 .../css/fonts/font.lustria-lato.css | 0 .../css/fonts/font.medula-lato.css | 0 .../css/fonts/font.oldstandard.css | 0 .../css/fonts/font.opensans-gentiumbook.css | 0 .../css/fonts/font.playfair-faunaone.css | 0 .../css/fonts/font.playfair.css | 0 .../css/fonts/font.pt.css | 0 .../css/fonts/font.roboto-megrim.css | 0 .../css/fonts/font.rufina-sintony.css | 0 .../css/fonts/font.ubuntu.css | 0 .../css/fonts/font.unicaone-vollkorn.css | 0 .../css/icons/tl-icons.eot | Bin .../css/icons/tl-icons.svg | 0 .../css/icons/tl-icons.ttf | Bin .../css/icons/tl-icons.woff | Bin .../css/icons/tl-icons.woff2 | Bin .../css/themes/timeline.theme.contrast.css | 0 .../css/themes/timeline.theme.dark.css | 0 .../css/timeline.css | 0 .../css/timeline.css.map | 0 .../index.html | 0 .../js/locale/af.json | 0 .../js/locale/ar.json | 0 .../js/locale/be.json | 0 .../js/locale/bg.json | 0 .../js/locale/ca.json | 0 .../js/locale/cz.json | 0 .../js/locale/da.json | 0 .../js/locale/de.json | 0 .../js/locale/el.json | 0 .../js/locale/en-24hr.json | 0 .../js/locale/en-gb.json | 0 .../js/locale/en-week.json | 0 .../js/locale/en.json | 0 .../js/locale/eo.json | 0 .../js/locale/es.json | 0 .../js/locale/et.json | 0 .../js/locale/eu.json | 0 .../js/locale/fa.json | 0 .../js/locale/fi.json | 0 .../js/locale/fo.json | 0 .../js/locale/fr.json | 0 .../js/locale/fy.json | 0 .../js/locale/ga.json | 0 .../js/locale/gl.json | 0 .../js/locale/he.json | 0 .../js/locale/hi.json | 0 .../js/locale/hr.json | 0 .../js/locale/hu.json | 0 .../js/locale/hy.json | 0 .../js/locale/id.json | 0 .../js/locale/is.json | 0 .../js/locale/it.json | 0 .../js/locale/iw.json | 0 .../js/locale/ja.json | 0 .../js/locale/ka.json | 0 .../js/locale/ko.json | 0 .../js/locale/lb.json | 0 .../js/locale/lt.json | 0 .../js/locale/lv.json | 0 .../js/locale/ms.json | 0 .../js/locale/my.json | 0 .../js/locale/nb.json | 0 .../js/locale/ne.json | 0 .../js/locale/nl.json | 0 .../js/locale/nn.json | 0 .../js/locale/no.json | 0 .../js/locale/pl.json | 0 .../js/locale/pt-br.json | 0 .../js/locale/pt.json | 0 .../js/locale/rm.json | 0 .../js/locale/ro.json | 0 .../js/locale/ru.json | 0 .../js/locale/si.json | 0 .../js/locale/sk.json | 0 .../js/locale/sl.json | 0 .../js/locale/sr-cy.json | 0 .../js/locale/sr.json | 0 .../js/locale/sv.json | 0 .../js/locale/ta.json | 0 .../js/locale/te.json | 0 .../js/locale/th.json | 0 .../js/locale/tl.json | 0 .../js/locale/tr.json | 0 .../js/locale/uk.json | 0 .../js/locale/ur.json | 0 .../js/locale/vi.json | 0 .../js/locale/zh-cn.json | 0 .../js/locale/zh-tw.json | 0 .../js/timeline-min.js | 0 .../js/timeline.js | 0 .../js/timeline.js.LICENSE.txt | 0 .../js/timeline.js.map | 0 .../old-index.html | 0 .../popular_timelines.json | 0 app/map-travel/note.md | 0 .../webgl/blockly-playground/index2.html | 125 + app/private/index.html | 77 + .../archimate-explorer.md | 0 .../archimate-graph-explorer.md | 0 .../archimate-graph-explorer.webp | Bin .../archimate-graph-explorer/LICENSE | 0 .../components/dataAccess.js | 0 .../components/dataParserArchiFormat.js | 0 .../components/dataParserExchangeFormat.js | 0 .../components/filterBar.js | 0 .../components/graphDataSearch.js | 0 .../components/graphExplorer.js | 0 .../components/graphLink.js | 0 .../components/graphNode.js | 0 .../components/userModel.js | 0 .../components/userSettings.js | 0 .../css/archigraph.css | 0 .../css/autoComplete.css | 0 .../css/tail.select-light.css | 0 .../data/ArchiSurance.archimate | 0 .../data/ArchiSurance.xml | 0 .../archimate-graph-explorer/favicon.ico | Bin .../archimate-graph-explorer/favicon.svg | 0 .../archimate-graph-explorer/index.html | 0 .../archimate-graph-explorer/index.js | 0 .../libs/autoComplete.min.js | 0 .../libs/d3.v7.min.js | 0 .../libs/tail.select-full.min.js | 0 .../archimate-graph-explorer/settings.js | 0 .../00153750-96fd-427c-a872-4e4be1a148de.html | 0 .../001867d6-4a8b-43e9-aa32-688fcfc10683.html | 0 .../001bfa44-9efb-49eb-a995-faa03b4452d8.html | 0 .../00b93ea9-ee0d-4a27-ae9d-27de627fc1b1.html | 0 .../00d7cfc8-d571-4bce-86a1-dd8fa6b0d22d.html | 0 .../0117026d-417a-4ff5-85cf-cb61719eba54.html | 0 .../01245312-c383-4660-91d8-a827eeab8296.html | 0 .../01266943-7325-4c7f-8267-953255764bc4.html | 0 .../0132f121-7493-4927-abfa-37f57d08388e.html | 0 .../01403419-322e-43c8-9694-6632e76e5d3d.html | 0 .../01446e9e-49a1-485d-8993-369192bf1a0c.html | 0 .../0149b5e4-fc78-4a4c-bd73-991607fe1369.html | 0 .../015a6779-d76f-45e3-8f86-c8a057ac7610.html | 0 .../018ea3f8-b187-4665-a855-4980f527daa0.html | 0 .../019ac483-f2a5-4898-83c7-50fd7b0f662c.html | 0 .../01d5fd0e-33a1-4fbd-8601-9a07d52abdc7.html | 0 .../0209c78d-f76d-49a9-84db-4bd1e356bced.html | 0 .../0217c130-0fc6-4fa0-8dc3-b4c5658fa280.html | 0 .../02816aec-918d-4c92-81a7-cdab8a794617.html | 0 .../029368bd-ba18-44a5-aa48-8867481ec0fb.html | 0 .../02bb771a-69c4-4cf3-9652-9922e70a5c90.html | 0 .../02d07124-9a90-42e7-9e9b-3e255a3ba1f4.html | 0 .../02e58b95-d49f-4847-bdf1-27e16b04e6c1.html | 0 .../0303ea51-cd4f-461d-a2de-b10ffd64f3fb.html | 0 .../031a3fc1-3603-44c8-b721-a5feaa26e890.html | 0 .../033302e5-eebb-4d5b-b163-e7506e1b41a5.html | 0 .../0335b3ad-8da3-4227-a7a3-6e3dc4483ae2.html | 0 .../034eb67a-dab3-43e2-b31b-60d25417e552.html | 0 .../0362a7df-65ab-4c22-9a87-ec3e2530e770.html | 0 .../036a0c9f-2183-4c16-8350-9fe0bbcb02e4.html | 0 .../036b691b-f0a5-4872-83b6-f90786589aaf.html | 0 .../038711e7-da0d-48fa-8c3d-d2dc88243929.html | 0 .../039fba91-777d-455e-a777-254c8cce9ad8.html | 0 .../03c0bc58-c152-4acb-b4d3-a5f1c16d68e4.html | 0 .../03f87eb2-2132-479b-a15b-91fdf3be966d.html | 0 .../04033408-1683-4879-9253-1f7e91459cd9.html | 0 .../0447eb95-1ea2-4d66-a30d-ebcfaa2dfcc5.html | 0 .../04480f23-8a5f-4394-80eb-2045ac96e168.html | 0 .../045aa24f-42fd-4c9e-8a37-257159e42ac7.html | 0 .../046a670a-a8a1-4263-ba85-60298554248b.html | 0 .../04a99e2b-886e-45bc-a686-7277e12d1894.html | 0 .../04b51324-dadc-45f8-87eb-fc63f00b4049.html | 0 .../04e2027b-1457-499c-9a7d-47452e576a37.html | 0 .../04e2f6c8-5356-4c26-9c34-9d1957695bad.html | 0 .../04e66ae6-b766-4026-bf7b-4be34cf61cca.html | 0 .../04e7bd91-889c-4984-b801-8570fb6865e0.html | 0 .../054b00ab-1920-46e9-9370-a61cea42dede.html | 0 .../057084dc-4c25-4330-9bc7-9e9d50078866.html | 0 .../058962da-e3ac-4476-9e92-7d4ed2684b35.html | 0 .../05e1fe7e-253a-4bae-b0f5-d7d15c6fe024.html | 0 .../05e680be-908d-4a36-a29e-e6618ec2aa4e.html | 0 .../05f941d9-824a-4a6f-aed4-96587cce5a0f.html | 0 .../06070728-7f1c-4728-87fb-88fd92ba2c30.html | 0 .../062551cb-47b4-4304-b216-79f879b36e40.html | 0 .../0644dc6c-f935-4bea-93b1-32c155edebcc.html | 0 .../06671b6c-4b46-4d3c-b629-c31a7c00d8b3.html | 0 .../0688c199-086a-44fb-a276-21b502848aa7.html | 0 .../068b636b-5f6f-45eb-b0f7-732c9b28c4d4.html | 0 .../0690e245-613a-4a2c-9f43-b147fc3e7a07.html | 0 .../0697c0e8-fdda-4459-9427-8068ba055914.html | 0 .../06a8ffd5-1b4a-4db2-a870-2467175f9f40.html | 0 .../06b12fb8-bf8f-4566-a075-b748eca2d613.html | 0 .../06cb903d-282d-46bd-86c5-0a7adebc2177.html | 0 .../06e41b0c-4822-46e2-8c81-67edca1927bd.html | 0 .../06e77d14-ab08-4c70-a359-00c1c4e082da.html | 0 .../06ebef74-c5d6-4bb5-865f-005bd98309ff.html | 0 .../072e5d93-6c6c-4e3f-ab65-815c8583f241.html | 0 .../076c23b7-510e-4eeb-a8d2-4ca330959a4c.html | 0 .../0770e6d2-7a3a-4335-aa89-d142b4693a00.html | 0 .../0771c953-b812-4f67-9691-e5caf19c6fa7.html | 0 .../077e9221-a491-48f2-9dc8-4cd9d51b4a6e.html | 0 .../07946b71-a580-4cff-8f76-4905f963827f.html | 0 .../07c529aa-0e11-413b-9b2b-5313d6c88ecc.html | 0 .../07d35fcf-cdd1-472f-ae62-7f977e2ae34d.html | 0 .../07f3dc85-9ed5-4bd3-90dc-381060ff6428.html | 0 .../07faefae-5e2b-4b2d-af76-684b06ac42d4.html | 0 .../0800fdc7-6da5-461d-a3ec-23b8e8d7ceac.html | 0 .../08040fb4-a901-4d81-b515-202c9d43d275.html | 0 .../080417c6-900c-4407-acb1-0c52a36b4d5d.html | 0 .../0848a38a-d43b-481b-a195-986e905b5172.html | 0 .../0854eea0-a97b-4722-889e-85e1ac321744.html | 0 .../0858d938-ac2f-48da-be26-c5871c9ae151.html | 0 .../085aa218-e69f-4d72-a70b-0514cfa3381c.html | 0 .../085df0f5-b807-4bb0-88af-8ce4c5696d67.html | 0 .../086b0578-5ec7-48aa-ac91-434124fd33dd.html | 0 .../0872798e-6c3a-417b-84e6-0877d677b94c.html | 0 .../087f108a-f9c9-41c7-9b68-ee32d908e758.html | 0 .../08834cd9-39c0-4e22-a947-ee40b2ab3e9c.html | 0 .../08cf9ffe-490d-4a2d-83a2-ac2d857298f2.html | 0 .../08db2c78-4642-4154-ad8b-4339473ae7b8.html | 0 .../08e56bb6-c2be-4247-a796-87b1ca053b7d.html | 0 .../08eadcb5-ec18-441a-867e-9b11ccd15a26.html | 0 .../08f6b3e7-a0c0-4902-8c8c-317b48ac01b9.html | 0 .../08ffb885-f995-447c-a235-a4adb5072227.html | 0 .../09097539-dbdc-4d5e-8aae-01115bab4f0d.html | 0 .../09297ca7-b723-420f-9d11-0f0de9e7298e.html | 0 .../092c2888-02ed-4a4b-98f3-b571d1f08020.html | 0 .../096a7f79-56a9-4a18-8a1c-212fad805de7.html | 0 .../09c1293e-5af5-43a4-8240-2b56915c9357.html | 0 .../09eff8b3-98a2-4c99-a312-7579c05bb4d0.html | 0 .../0a2905ef-b921-42be-a839-ecf52a6993a5.html | 0 .../0a3140fd-52d5-475f-86e9-711a2900bd2c.html | 0 .../0a5410cb-3b71-472a-81da-e7aed87c4a9f.html | 0 .../0a843d8c-f2c9-441a-a9ff-87c8380a6dd6.html | 0 .../0ab4a412-b920-4282-aceb-d66fc2cbe927.html | 0 .../0b19da1e-a641-41b9-9cb3-3390debc1ccf.html | 0 .../0b1c4ad1-abf2-4796-a25d-ac68732a6442.html | 0 .../0b273323-a8eb-4590-8409-418bc245b011.html | 0 .../0b4be396-916a-4b22-a76a-15dfedaf3c5e.html | 0 .../0b73f0bd-8f02-46af-9488-d05d05e48419.html | 0 .../0b808a04-d1c0-492d-938d-efcc44167d31.html | 0 .../0bd0960c-0c34-473d-b076-2aa0c576c107.html | 0 .../0bd8a2d9-daed-4c53-a542-884a860aea19.html | 0 .../0be24535-8363-4e7a-a0f5-b76818433019.html | 0 .../0bf7ecc7-3b9e-475f-8e8a-221d126ff321.html | 0 .../0c0bebba-370a-4289-b39f-07de6f609728.html | 0 .../0c1b4650-3b94-45f7-a8c7-1dc6ecd0b5b1.html | 0 .../0c1e4f9e-9623-4b81-b57d-de65a35a10ac.html | 0 .../0ca3b7dc-83a6-4ea7-9dcc-176b6d16e87d.html | 0 .../0ca6fc1a-b11b-4d83-8ada-db2933808d51.html | 0 .../0cc92b06-bfe8-4d19-af8e-7a66112ac0b9.html | 0 .../0cddbd15-37be-4b59-b2fc-7da266c6f9ff.html | 0 .../0cf9017b-1fdf-42f5-9749-8ddb575d541b.html | 0 .../0d06528c-3bba-4412-b03e-2d8bf191a897.html | 0 .../0d0c9a5a-0f97-4624-aaf8-56dda69ae22e.html | 0 .../0d2c549f-8040-494d-b793-6b69772cbbeb.html | 0 .../0d57adde-828f-477a-ad6f-3cef79041e43.html | 0 .../0d62b7d0-bfa2-4b4b-bb15-d4c36e3237c6.html | 0 .../0d6c7d1d-377d-4225-93e9-1fe78033d2a5.html | 0 .../0d7519b6-94d1-430a-948e-9391f0167ce3.html | 0 .../0d7a0068-f2a1-4cc0-b206-e64f0eb79e86.html | 0 .../0d7ee36f-9b2d-466f-b6e8-b00effea6197.html | 0 .../0d995de1-54d7-4a5b-8b2a-9aed4548c00d.html | 0 .../0d9f83e4-7ec7-41b2-ac0b-ea104e93e83f.html | 0 .../0dc1240d-ba6c-41bc-9de9-825989e6b15d.html | 0 .../0dd3396d-e9a4-438f-977e-1f35337d9d21.html | 0 .../0de32a0f-bde6-49c6-96b1-ef1dd894d6f8.html | 0 .../0df3fce6-d909-4141-9efb-a7f51bb36ada.html | 0 .../0df4a03d-070d-4051-a9ea-568c89d8f71a.html | 0 .../0e0afdc9-bd7c-4d15-b173-07fa787596f8.html | 0 .../0e30f86f-ba18-4791-b7c8-81ca75c59c91.html | 0 .../0eac8275-fdfd-47f9-a8dc-3c848a29912b.html | 0 .../0ec0637a-4287-47e4-b317-cf795cd4beb0.html | 0 .../0f0f5554-8ba4-41bd-bb8d-6b2c642b0602.html | 0 .../0f1383f5-3e3c-4afd-9b6e-42b98748e50b.html | 0 .../0f14da7d-685b-4fdd-be1d-80a8ef6b18d9.html | 0 .../0f394840-040a-4592-8361-fd34fd8920dc.html | 0 .../0f829b68-8610-46d6-adfa-a9612e6b1fdd.html | 0 .../0f892456-2375-4032-86c5-a62e39cef333.html | 0 .../0f9388d3-e4be-49ad-8d5d-2101915b88e6.html | 0 .../0f9dfd03-578b-4ca8-b29b-845295a9db1b.html | 0 .../0fdc4bc6-d771-4220-a7c0-903d2d312509.html | 0 .../10085f58-abe4-426c-8937-ed557bc0e70f.html | 0 .../100a1ebc-e5b4-4386-b743-f040b9833fba.html | 0 .../10414579-f013-4b11-830e-fed855cdae5d.html | 0 .../10441c3d-084d-4428-ae9e-14c542702c15.html | 0 .../1048e4f5-e345-45c5-8737-9b7c7625bd48.html | 0 .../10533dfe-4808-4e21-96e9-495f0ad474df.html | 0 .../106f6be6-f6ef-436a-a387-f390c280200d.html | 0 .../107c922a-1dcb-4359-947c-2bded6a02126.html | 0 .../10ad6903-40ae-4238-849b-c92534c34174.html | 0 .../10c25e93-0140-42f4-836e-3a01c82bd9f8.html | 0 .../10cd301f-3a3e-4021-99ba-c437e9be5468.html | 0 .../10d2bb18-d2fc-4b39-a7b0-293effaab9de.html | 0 .../10d3916b-c30e-4280-8385-4c3221b55d6b.html | 0 .../10e11698-fbca-42bd-a519-f7c5cabb3c50.html | 0 .../112de6df-1271-4f3e-9f02-eebbe8de010f.html | 0 .../116820d3-9323-4550-bd4f-6ee389df4e15.html | 0 .../1181ff81-2bf9-4726-858b-7bf156b5b4e8.html | 0 .../1191925b-f93d-45c9-9027-5e884d76daa9.html | 0 .../11944170-e5c8-4afa-a4b4-87d3702f7f85.html | 0 .../11b54438-b3a9-4c30-8b57-49c326c53b75.html | 0 .../11c6cace-c34c-4611-982b-00d07c27717b.html | 0 .../1207a48e-e0d6-4ebf-9607-3e3459b04d05.html | 0 .../12211bfe-7693-46a6-b4dc-d904ec5f0ea9.html | 0 .../122e58ae-e7e0-4b5e-83bc-cb872fc8f7f7.html | 0 .../12458860-28f6-4f81-923c-821d41f7918b.html | 0 .../1261c8c5-60ae-4742-a666-8e1c2690a7a2.html | 0 .../126455fc-208b-405e-b02c-f8f9d4702f43.html | 0 .../1266ae34-ed5b-4c96-bf3a-92dc3222f0dc.html | 0 .../12724870-de30-43c7-9941-acd4059cc52e.html | 0 .../127b6846-5578-4393-afe3-9ae9f7c1330c.html | 0 .../129411aa-9e18-44a2-bb7d-e187d160b009.html | 0 .../12c6a177-009f-4c87-ac1b-68ac46a4ff13.html | 0 .../12cdb5e1-b5bc-4d53-980c-2b2f07e996c3.html | 0 .../12d59278-aa8d-47c6-82fb-8d531f4cc983.html | 0 .../12e0ec42-8192-46f0-a26d-babb28c64910.html | 0 .../12e3d8ac-c871-43ec-95e1-624659332761.html | 0 .../12f99b1b-503d-4156-81f6-d85d1e921948.html | 0 .../133bf5e2-7e4e-4ac0-b698-7cfa1916f8e1.html | 0 .../134b69f3-6512-4ead-81b8-f0701c9519c7.html | 0 .../1373fe02-0e8f-41f9-a13c-aa0c32c58abb.html | 0 .../13a565d5-01f7-47e3-9a9e-58d0563c802c.html | 0 .../13e251b5-30eb-47b0-8cbc-1361bd9cac9a.html | 0 .../13f57206-17e7-446d-b79f-fc8b40d2760b.html | 0 .../1405b28d-9229-43eb-bacb-7848991713e9.html | 0 .../14091a5b-421e-4dbc-9a2d-242ab487089a.html | 0 .../14276910-c68a-4201-94f4-cc605af28adf.html | 0 .../143f3013-3a1a-4850-9d81-15a1a4d67075.html | 0 .../144f1d73-e07a-4994-9459-f4092c08cb16.html | 0 .../1474fd42-f867-4891-ae38-6395e0b2dcff.html | 0 .../147e7762-5a23-4f72-bb1f-f08e1c10b1b0.html | 0 .../147e903b-6c0d-4df8-9927-0d242cd5c72e.html | 0 .../1498846b-668a-4a08-aac5-337402c19ead.html | 0 .../14bbaa88-21c8-4969-8d39-77d823268bc5.html | 0 .../14e0599c-5cdd-4b95-9ff1-47d4ce1691cb.html | 0 .../14e2390f-189c-4e68-974e-56c9421a7a72.html | 0 .../14e50c4d-634a-416d-9677-fa8ad2b4d2a3.html | 0 .../15130a97-7e7d-43cd-abd5-d289eda65921.html | 0 .../15187fba-56ec-4d5f-931b-a933941355e2.html | 0 .../1530d842-2c53-49c9-b207-eea165b340ce.html | 0 .../15ee36ff-6d21-43e4-b89f-aa776980fd5f.html | 0 .../15f6d5e1-591f-481c-99b7-71b9e4928204.html | 0 .../1628e329-2b36-4533-b974-f6e191898d67.html | 0 .../165250d7-d0f8-475a-bf9c-fc87ab935b49.html | 0 .../167941d3-6d52-46be-89b7-2ae3b2844f7e.html | 0 .../167ecdc0-0527-447c-8275-20ebcad2f437.html | 0 .../16a369a1-90b5-4e20-8dc2-86a728fbe257.html | 0 .../16aa4cef-9420-4278-97f7-e0d02fbdda1e.html | 0 .../16c691db-b66b-49a9-b33c-1b98f5eef1a3.html | 0 .../16e9055b-1594-4628-8218-21da4a74888d.html | 0 .../172a6122-a1c2-4db7-9dda-10b3091f6917.html | 0 .../1756b1ed-7c3f-458d-bf94-ae41d473c2c2.html | 0 .../1761f7fe-0732-4f2a-b1cf-c5db7f1afe08.html | 0 .../177fbd70-13b6-4991-b8fe-c89d42d0ba71.html | 0 .../17d4b6f5-6639-49ec-96e3-eb569f320c50.html | 0 .../17e6aad5-08ba-436c-a20e-7ed202c19ef4.html | 0 .../181728d6-872a-46d9-b1d2-f84dd91b388c.html | 0 .../184767ec-1af0-46ee-910a-69ebaf9c7667.html | 0 .../184ec664-e51a-426e-9758-c31111028184.html | 0 .../1869bba1-282c-4236-b993-3536e144f844.html | 0 .../1877ddd5-a071-4772-be94-140e0039f649.html | 0 .../1879c567-2ac3-4ae8-8c2a-3f744e784a7a.html | 0 .../187b60b1-f65e-42dc-bd5f-d842629b1539.html | 0 .../18a2b95b-9be4-4ad4-a12b-693e9aa4df15.html | 0 .../18a6a1cd-8091-481c-a427-00426345315b.html | 0 .../18c16533-62f5-420c-a51a-5a83a66b1de3.html | 0 .../18c1ef71-d743-4604-a32a-09f3122edb00.html | 0 .../18d14079-bd52-4bed-8fc2-02e4ebdf3fde.html | 0 .../191003d2-caa7-4ec7-9380-e19ac3c236ac.html | 0 .../191a3a83-e8c4-4487-87c9-e575f1f53929.html | 0 .../191f5973-0f0c-413f-9d6e-70fb399ef126.html | 0 .../19230be2-3cbe-4217-aae5-50ae4acc8a94.html | 0 .../19806658-e817-43c6-b1e5-f78626aaa7fb.html | 0 .../198caf4e-a556-463e-9da1-f11a01c70306.html | 0 .../198e99f3-263a-4e35-a273-7afe80920ed3.html | 0 .../198f4cdd-aa79-4556-b8d6-ea28634a6ace.html | 0 .../19a38c94-fed1-4bb8-a1c4-73c7163a1578.html | 0 .../19ae0117-8e3b-4aa1-b586-e26645214f61.html | 0 .../19d3ce2a-2f09-436f-8333-afb6849c8000.html | 0 .../19d487d0-ad86-424c-9871-075679fd2a65.html | 0 .../19f079b3-bd75-48d2-8e93-5a3ec836b510.html | 0 .../1a1717f4-f166-49b5-835b-c58283812850.html | 0 .../1a1d8c0b-63bd-4fc5-bcae-4ebaaa204f26.html | 0 .../1a22c4ea-85dd-4c64-afc2-d137a6efbc9b.html | 0 .../1a397f94-c143-4f50-8610-47958fe68444.html | 0 .../1a43c0b0-3336-49ea-a171-8031910ca9e5.html | 0 .../1a5374b1-f6e6-4301-8a87-40e6c11e074a.html | 0 .../1abaf931-2891-4891-818d-1bab6826f73f.html | 0 .../1aeb34d4-5e36-44df-b893-94cc92b0925e.html | 0 .../1af2f3ae-e6aa-476f-b927-04c15da2d849.html | 0 .../1b0e4eb2-d493-4895-932e-fa735226ea57.html | 0 .../1b1dcb1e-d3a5-4dbc-b2de-60c6db246b13.html | 0 .../1b5d5bef-b264-49fb-9454-5ea333b1119c.html | 0 .../1b7d2f17-5da2-42c3-b02e-2b632b820408.html | 0 .../1bb4e0aa-7ddf-421e-b7df-06967ab69ddc.html | 0 .../1bc39469-ee3d-4b89-a711-c2809bcdbfdf.html | 0 .../1be315dc-a0f1-4973-8686-58adc59cac54.html | 0 .../1bfa85c3-4266-4317-a28b-7413e709b154.html | 0 .../1c31d978-a724-40b0-b284-1ebb610be372.html | 0 .../1c50c668-5e14-43af-81a1-30cc24e55c67.html | 0 .../1c87e3e0-3eab-4020-b2cb-22c6876658f7.html | 0 .../1c8e8594-fa8e-43ca-81c7-555d001388a6.html | 0 .../1d16cb94-19a6-4560-acce-498ca700a49d.html | 0 .../1d5df0dc-b044-407f-a3b3-222303be2033.html | 0 .../1d5ed53d-20d8-407a-9563-a1755ca489ad.html | 0 .../1d7ff19e-1249-4700-8e97-36d72e887e2e.html | 0 .../1d8cb900-f8dc-47d6-9e22-5767982bcbad.html | 0 .../1dc37223-1593-43c4-8b99-95c69fec2183.html | 0 .../1df051af-9300-46ae-8bde-4c1f37a34065.html | 0 .../1e2bc857-df43-49a0-b723-1d32d4da0c3d.html | 0 .../1ec218ef-2982-4596-8b5d-4af0f940cde3.html | 0 .../1edc1f68-bc8f-4e9e-b3cb-d60902da7c7c.html | 0 .../1edccfed-b1af-4f7b-aaf9-44dc0d5b51bc.html | 0 .../1ee11837-825e-43eb-b21e-b849bea54cd4.html | 0 .../1f05c853-1f6c-4b48-b38a-5ec355876b64.html | 0 .../1f1131cb-1a47-4525-b7c9-e9e052fa55c9.html | 0 .../1f5f77e2-2406-4bd5-98b5-23c9c9e8ec92.html | 0 .../1f7237b0-588c-4414-96f6-45ee7f421960.html | 0 .../1f743c22-f2bd-46f6-b408-9001e96674ba.html | 0 .../1f86a4bc-7f8c-4270-a273-ccd801463359.html | 0 .../1f9879fa-94dc-4e8c-a4ea-59158ce9b85a.html | 0 .../1fccb2ec-2b1a-4257-8d0d-00429d6fe5a4.html | 0 .../1ff8f494-63d7-41bb-bbc7-c9f9733637ed.html | 0 .../200a062f-a546-43c9-9e79-7ee1a4705d54.html | 0 .../201abc48-c681-424e-80ff-1a9ba0cbc6dd.html | 0 .../202b510c-8e0d-4332-9262-78e577507684.html | 0 .../202d6be7-73e1-4b4c-af70-eb6b7aa4979f.html | 0 .../2057ac37-41f2-40f7-a5d4-c0fae9517bb3.html | 0 .../20627efb-ccab-4dee-812a-eff1f5a74454.html | 0 .../208071c6-d715-4119-8af3-c11b7bec3109.html | 0 .../208c6393-edc7-4a73-a8fe-66a2e8e90993.html | 0 .../20954642-38b0-47ac-b800-9a68e8e7e72a.html | 0 .../20a96016-dc22-4dfe-a6c0-c456c0622a7b.html | 0 .../20c3b72d-3212-4419-9c23-ac481496a229.html | 0 .../20df57c4-d397-45e9-a472-1bf429208880.html | 0 .../2108e14d-46fa-427b-9f1f-7d5a397279e3.html | 0 .../214a1085-ecf0-4dd9-91c9-537416f3dcdc.html | 0 .../214f173e-7c36-4e9c-a36b-f88eb051db1e.html | 0 .../216a825e-1645-41cc-8323-a9afc3f72052.html | 0 .../21736228-ab5a-40ad-a64f-503ede294d64.html | 0 .../21891305-06a4-4bd7-b235-6e11c60c9554.html | 0 .../21950e74-df0e-40e2-a4df-c8b939f3ef52.html | 0 .../21c74d85-6fbb-4565-b8c8-1b09434e44f9.html | 0 .../21cd03fa-d93f-4369-9f67-f95129f2e5c9.html | 0 .../21e7a602-0dc5-4d39-95d0-cf9561f2fa62.html | 0 .../21efa32b-952d-4021-bb21-b75cc9b5077e.html | 0 .../2223cb03-9844-4b18-a25b-5f637c678ed9.html | 0 .../22401ce2-4ebf-4af2-bbe3-2ecf893de41c.html | 0 .../22591bce-b4d9-4faf-8cac-0e790c193556.html | 0 .../22b1d87a-6e5d-46bc-aadf-2463cb8d0e29.html | 0 .../22b47d8f-fc6f-4bb5-86df-f7f782bfa62e.html | 0 .../22d9683b-867b-47e1-8be6-19624324a46a.html | 0 .../22e70958-5750-41fe-aaa0-325a1467d255.html | 0 .../23373cb8-ad9c-4d20-adfc-7bd1b8f5b09c.html | 0 .../2362773c-cdba-4679-8146-b3eb46daf54d.html | 0 .../23656865-52d1-41d9-becc-3bc4fb5bd071.html | 0 .../23769ae4-4a84-46d3-b1af-3acd4ce56c2b.html | 0 .../23878612-a7b8-4ae2-821d-b916bcdcfed3.html | 0 .../23944ce4-c489-4646-9350-39f5c73aae6c.html | 0 .../239d6908-7246-4e62-b206-0cc1cffccacd.html | 0 .../239dff83-e499-4152-9fa1-b04dd8029bc1.html | 0 .../23abcd1d-04f9-4d0f-b11f-3b20ea7a276e.html | 0 .../23babf2f-7dcd-4d87-97f2-6eba800e09a6.html | 0 .../23dc5f36-6a89-4f2e-80a9-e71f95d6b4a0.html | 0 .../23e37b75-6915-43f7-bcfe-1a44a284dcac.html | 0 .../23eb7b16-793d-497a-800f-55ff3d3c323c.html | 0 .../2401ab42-857f-4c1f-b852-7ed26b8d7fec.html | 0 .../2419a63d-dac7-4155-ac36-e90e1deca991.html | 0 .../245cce39-8899-4074-9689-4a9c730ac1d4.html | 0 .../24860630-9b93-41d7-9d48-3e7fef21bdc3.html | 0 .../249a1749-021e-44d2-8700-77068ca9efe4.html | 0 .../249b9af6-dc71-4638-bf67-9a16f50f07e8.html | 0 .../24a68c97-eb69-4a8c-9ede-4198f1a48f31.html | 0 .../24b0bb1f-3001-4438-b186-a7004cd2b423.html | 0 .../24b34ad9-3690-4e01-9ddb-0e12a00c5679.html | 0 .../24c4e0e2-28f7-40cb-8815-4f436316f504.html | 0 .../24cec455-5865-45db-8c27-06a21323cc55.html | 0 .../24dcf7b1-aa5f-45a1-bca9-69772a097091.html | 0 .../24e508f1-2ff7-40d3-8bd0-953ce8962194.html | 0 .../2500479e-ad85-41e2-9e31-62853262bf51.html | 0 .../250cb1d7-bd62-4d04-a24d-f5c494d13ed6.html | 0 .../2517d75c-6654-47a5-877c-bcc1703c8148.html | 0 .../253260d9-9412-43ef-93ab-7ab6404970bb.html | 0 .../253356e4-3d8e-4ab4-8cc4-67009affd06e.html | 0 .../25389b22-ef9b-45e9-886a-62d1b4accc3d.html | 0 .../2569e42e-abdd-40ee-bc16-dcf625a34a94.html | 0 .../2571adaa-4f8e-48f5-acce-5c45745ec768.html | 0 .../2578406c-4e11-4c1f-80cf-ddac7a03123b.html | 0 .../258ba471-5275-4c2c-a702-5b05af4e9d9b.html | 0 .../259842e7-7678-4b93-b13e-ba1b4b948e35.html | 0 .../25c2d463-e0f7-477f-8a3f-9606bb76965c.html | 0 .../25e021e8-bbf3-4392-ae6f-f3e40a3406ec.html | 0 .../25e6fae1-09b0-432e-bbc5-49030d47136c.html | 0 .../25ec59fb-25dd-44f0-a7cd-607298c55988.html | 0 .../25f747e7-621e-4cfd-92b2-4833c6a4d6f9.html | 0 .../26146db1-6d36-4062-868e-29d5fef43b66.html | 0 .../262205e1-0852-4c3c-8a02-bdcb6208e92c.html | 0 .../2633d6ca-a4b0-4780-b370-7949a29936be.html | 0 .../264e7b7f-f20b-4462-b8f0-bfe7cb3c64eb.html | 0 .../268af634-ae84-4780-914c-36e665602ced.html | 0 .../268c24a0-a8b4-4a2a-9cf5-a50fa8332a92.html | 0 .../269ffb4d-7e83-4220-b761-07503d478817.html | 0 .../26ade352-2159-4b0f-bd8f-ab9bf394966f.html | 0 .../26c006a9-677e-4cf8-83be-3f9a8c625d76.html | 0 .../26e38180-90df-459d-a4f3-9f9a6e60a0c0.html | 0 .../27298629-b799-4a78-9fd3-da3ce23d054d.html | 0 .../272b89e2-4c69-4dce-91c4-f82f4dd31919.html | 0 .../2733db79-c1bb-49c4-b3ef-a4ad7b1edf0d.html | 0 .../27959228-eca4-421b-8f49-144938215239.html | 0 .../27a4c3fb-444c-4b3e-ba35-43bad2321b8a.html | 0 .../27baa8b4-9a11-4ca4-b6b4-5e1fb2fa47a4.html | 0 .../27be43eb-055a-4f4c-87c6-74a06dfd66d1.html | 0 .../27d86bc8-1506-485b-aa89-e3b17d7461f7.html | 0 .../27ee8c69-e98c-4445-8d1a-ee48b44124c9.html | 0 .../27fbcef0-c6fc-4d8c-b53e-6c3d94f6ec8e.html | 0 .../283ab963-b04b-44b7-aaa3-e6afe3e7d7e1.html | 0 .../287059a2-1cb1-44e3-98b4-0bbbafc4b670.html | 0 .../28718719-5838-450d-b9d4-453e75c3c8de.html | 0 .../287ef69a-01ae-4d16-9417-96f6596ef34b.html | 0 .../2891277c-d08e-4201-9906-03b85a5afff4.html | 0 .../289d7482-e071-47b6-b1a9-ad358ab551a0.html | 0 .../28fc962b-de54-4f29-a3e7-457b409d42a0.html | 0 .../29021251-7bf3-472c-8ffb-5ee6f4cf6bb9.html | 0 .../290f0a8d-cd0e-497c-b68e-900e47b21e2f.html | 0 .../293054cc-b934-47f4-b67b-a2bb55030d51.html | 0 .../2931bda7-b524-4712-9656-8253db01ec51.html | 0 .../293622e8-ef69-48e3-93ec-30571f6535b0.html | 0 .../2979534e-2f29-4dc7-aeec-efa9e10629b0.html | 0 .../297e5031-8fd3-436f-87cc-ac52010e58ec.html | 0 .../297e8d01-971a-435a-a5fc-12ad59b0b70c.html | 0 .../299d968d-44e8-43b4-a619-eae56b1237da.html | 0 .../299e7ed5-fc17-4e94-b326-7cc24cb2c500.html | 0 .../29a63c74-b4f1-4078-bd04-dd7d982d7580.html | 0 .../29e016c6-1f24-4fb6-8297-b9082981be7a.html | 0 .../29ea3edd-2bac-4fb6-8026-6a76346a9e0f.html | 0 .../29efb4a1-ac7b-40fa-a500-4c22fcb0bb02.html | 0 .../29f75139-d073-4f4d-abfa-739f382db899.html | 0 .../2a06b384-8ba3-4121-872c-2bf7b60c4d29.html | 0 .../2a13f18e-57e2-44a7-8b88-523c0ab81a14.html | 0 .../2a16e7ad-0ad1-4def-8a25-c9befe098259.html | 0 .../2a1f93ec-e3c2-4ba5-b9fb-4459cb5901e3.html | 0 .../2a243009-e68e-4e07-9945-56b5a01887a8.html | 0 .../2a476574-6d69-4c73-b442-b2f7f28ec9e0.html | 0 .../2a50c049-d489-478b-93d6-f282695551ef.html | 0 .../2a5c7d37-fb24-4bb0-bd80-98e80edd3e97.html | 0 .../2a6c0cc5-115b-4a03-988a-b8e84364b724.html | 0 .../2a6d3a9f-6394-47d2-9541-27b2375958ec.html | 0 .../2a77d48a-f4e3-4e92-84cd-14f2b5c41c6b.html | 0 .../2a7cfaf9-9fab-4029-9275-1cf6ab08b5d5.html | 0 .../2abec36c-90ef-423f-8750-96c1dfa3be67.html | 0 .../2acbcac0-bdf4-4432-983f-4751794e751d.html | 0 .../2af59530-d8bc-4839-8688-4cd49538ef58.html | 0 .../2b168644-757d-4582-8cfe-466f56a580e3.html | 0 .../2b1ca45f-5c2c-4481-8cbf-ea35bb6d2238.html | 0 .../2b4e2f2c-1ee1-40cf-a585-e312f018aabc.html | 0 .../2ba41903-705e-4695-97f9-3ab965e8ddf2.html | 0 .../2bb95ce4-ff8d-4c02-adc4-6cb448c1fcad.html | 0 .../2bce96c5-5bd6-483b-97fa-c041d0daa4e8.html | 0 .../2bd9421e-d0fd-4b3a-a2df-788065229d82.html | 0 .../2c1f1185-f602-4df8-bc76-dd8291b0bf8e.html | 0 .../2c2948c6-404d-4a9d-bf7c-6cd4347dfad6.html | 0 .../2c2d0996-42e8-4106-a8d6-41bb3942a586.html | 0 .../2c4494bb-5a33-440a-9fc9-f939aba725e1.html | 0 .../2c5d89b7-048e-42e3-b1fa-c6c1148e2e51.html | 0 .../2ca1e76f-c457-478e-9d2e-13a48e522446.html | 0 .../2cb108e2-c5a9-4bbe-809f-28c20afe397b.html | 0 .../2d218991-e00f-4e88-9a10-98b49a68a3b9.html | 0 .../2d2fa6fe-0634-4f21-b18b-a3208c1c657a.html | 0 .../2d573388-32b9-450e-80ac-194b2bcc5686.html | 0 .../2d5d0142-18eb-4115-8c0f-65fd7132b28d.html | 0 .../2d6cf43f-e908-4d6d-89a3-23f955440be0.html | 0 .../2da04d11-a551-44b2-aecf-36c41c3e454f.html | 0 .../2dbe8afd-f6b3-4d3a-a444-05276d2f5953.html | 0 .../2dcc580a-6a40-4990-bc09-f45a2d1ab09f.html | 0 .../2dd05395-cd94-4df6-9e8a-ad9d7311f61f.html | 0 .../2ddf15e6-2d6a-4afc-8721-5ffdaece978c.html | 0 .../2de81234-dff1-44bd-ad3c-772c9e05cb5b.html | 0 .../2e1406ff-ec6c-48c3-b4d5-fa4a40c9f9fb.html | 0 .../2e3309ae-df49-4ece-bc5d-e62017f54d89.html | 0 .../2e93dcbb-cea5-4d20-80a2-4b7d78b57041.html | 0 .../2e9491dd-3c73-4a90-a220-1445c0a9c89d.html | 0 .../2eb234dc-4316-475e-9c0e-f21f1b30ee65.html | 0 .../2ec5144b-8ffb-4fab-ad15-67aa1535ebc5.html | 0 .../2ecd470d-6477-406b-8f40-ea7e6b0c42b2.html | 0 .../2ed12ca2-ef27-43ea-a8b9-acca8251e804.html | 0 .../2ee3a23c-7f25-4d8b-b521-e4cb7247d1ea.html | 0 .../2f43e27b-f7a9-4d35-9a3e-055d1e9d49cc.html | 0 .../2f5c1f69-0bee-477c-af53-204ddd184459.html | 0 .../2f6ed32e-a242-44a4-9416-4b32e07594e4.html | 0 .../2f7681de-fbde-4d8d-849b-d36d5dabac0e.html | 0 .../2f7d7208-15c9-4f67-847b-1e09350cf081.html | 0 .../2f9504be-324a-47f9-a8d5-ca449d8c5d93.html | 0 .../2f95aa26-1fbc-4961-a25c-f847bdca9d87.html | 0 .../2fb8648d-acb4-49fc-a826-b384deba9a63.html | 0 .../2fb973e7-bc3e-43cb-a893-d186de6c19c1.html | 0 .../2fc0e16d-cf41-4cee-b734-f1390b6a356b.html | 0 .../2fca6c68-7658-40e0-83cb-975acbc62641.html | 0 .../2fe7709f-b641-45b9-a8a4-eb8461f0f5e1.html | 0 .../2fe97dd4-35d0-4a2a-b9b5-2bc8b272974b.html | 0 .../300cad8a-ff99-4ef2-9c17-b898db528263.html | 0 .../30140bbf-9534-4a79-bd50-60f4d6ed8029.html | 0 .../3029afb4-ce51-4978-8980-7857d8e8d88b.html | 0 .../302dcff2-c6ac-45b7-a956-b146686e5c78.html | 0 .../30382d0c-124d-424b-bd1a-bfdc5c132257.html | 0 .../30460c37-e48f-4a7b-86a0-ff10706d3568.html | 0 .../306418ba-6009-4cd4-9a01-a31fc97685b5.html | 0 .../30766b8d-5f19-4660-821a-717b7ab89e3a.html | 0 .../3087387b-7d4f-4c91-ac7f-f7e7d2c80c6c.html | 0 .../308e3c90-be3e-4d49-9478-0f5b33ec4ae2.html | 0 .../309b0cdd-7609-4532-9d2a-89f67addf4fa.html | 0 .../30b80d01-6fa7-488c-8938-a16ee4b6b9d3.html | 0 .../30d15ae7-c830-4ca7-ac47-b1e01f6a12c2.html | 0 .../30d41ba5-c815-4dc3-a3cf-0dd2e7a26782.html | 0 .../31062253-e2f0-472e-ba38-91382bc1c3dc.html | 0 .../31153102-0ed7-4ad2-848e-d28b6a06e9dc.html | 0 .../3136bb1a-49ff-4424-b77c-b31fbdac6b21.html | 0 .../313bf21b-1912-4f2a-97d7-6df343946ab6.html | 0 .../313d3b82-6f9e-4d90-b126-d29daae4f5e0.html | 0 .../31aac27d-566b-423c-aa37-86bd03a24d80.html | 0 .../31c6590a-9f75-404d-863c-abdda1c85f54.html | 0 .../31c902b7-6cff-4368-918f-0229a86d3ce7.html | 0 .../31ebc99d-63c2-417c-98a7-2db8e5323b18.html | 0 .../32147210-538f-498a-86a8-9493c54d236d.html | 0 .../324ec9cd-8a6f-4821-a7a6-3f972c773285.html | 0 .../3263f2d0-10a5-40c3-914b-f599cdf67b3d.html | 0 .../329b28e2-e6c3-4beb-9a43-a78023fa2557.html | 0 .../32c571b9-5e8a-4025-81c9-961eb9f60bb9.html | 0 .../32d4db5f-43d0-454a-b87f-1e6ff2249465.html | 0 .../32dd474d-fd73-49dc-aafa-0c9f53cffef9.html | 0 .../32dfec47-ef28-4146-91d9-bc5335644624.html | 0 .../32f713c4-9391-4dca-b0b1-b9f53a5372dd.html | 0 .../3302ed2a-5e4c-423e-b704-8146663c4dc2.html | 0 .../331dd87d-0670-4fef-9dcd-3207a5d17b87.html | 0 .../33547ded-5d95-429a-b931-33f7fda81738.html | 0 .../3363742c-9b5a-4fcf-a20b-33da136a01c0.html | 0 .../33a04d9a-de87-41dd-914b-ef09f23bbf62.html | 0 .../33ab57d2-9bff-4baa-a23b-ffb685862409.html | 0 .../33b08a33-2b61-4324-b614-da3a857fe8da.html | 0 .../33b0e9cc-adcf-4ce6-915c-a736f8a05901.html | 0 .../33e3bb35-ebff-4ebf-a150-110cf5c6afe0.html | 0 .../33e40b21-4a7c-48d1-ad51-c56f86d7e6c1.html | 0 .../33e4ab2f-cff9-4830-a440-3e05e1c89503.html | 0 .../33f3a96a-110f-46bd-a5d6-4e0ba75eeb2f.html | 0 .../341e599f-01a3-43ad-bb1e-1b3b62fd7945.html | 0 .../342aaa46-bd87-4c66-9202-0ff9074f2b77.html | 0 .../34438712-59d4-4df2-b0e0-e2bc84d672a3.html | 0 .../344a84d8-a5bd-40e7-9969-7fc24c4d015d.html | 0 .../344dad49-f60e-456f-b423-939bf605b607.html | 0 .../344f1c04-8b44-4f06-ade0-cf2a5ea28e0b.html | 0 .../345b6a6f-8b84-48ac-baeb-c51b2dc5c50d.html | 0 .../346652da-65b8-451b-b1da-0cfc16574457.html | 0 .../346c234e-4c88-45f3-a8e0-392fd06e2bfd.html | 0 .../347192fe-96c1-4969-982f-4a556794aad1.html | 0 .../348a104b-b1bd-4537-bf6a-356bfebbbef9.html | 0 .../34c29e45-fda1-43a8-9d99-29a5e5d2a1a5.html | 0 .../34c898cd-00fc-4809-b759-650d4f4ee082.html | 0 .../34d0bee5-95e9-4f19-80af-0284e8c42e26.html | 0 .../34d58a92-43a1-4be6-872e-79919fff22f1.html | 0 .../34df4b1d-82f4-49e5-9f3c-17b49c257268.html | 0 .../34fab4f6-c7d1-412e-8ce3-ff993c215fe1.html | 0 .../34ff6e3a-08c6-46b6-ace5-1054287261f7.html | 0 .../3510d228-2c3f-4206-9d81-a074e1632754.html | 0 .../35183a7e-f3e5-48d1-aaf5-4e983632dfca.html | 0 .../35251afb-20e9-4414-bf04-5aca71bdeb7f.html | 0 .../3534584e-f82a-4d67-b331-e74f281d695d.html | 0 .../353534be-26c5-430b-8714-9e2af459b92f.html | 0 .../355967f6-c78b-49b7-b427-afd2dc498219.html | 0 .../3571fab9-d4ba-47e9-9478-fb6d0e10138d.html | 0 .../35a8f1c8-235e-402e-bdf3-5c3cb46c44dd.html | 0 .../35bd6bd6-dca4-4062-bfa6-c6aca3c4cb40.html | 0 .../35c93035-07e0-49a7-8b33-671c736a8f49.html | 0 .../35d70375-67d7-469b-8930-062b96abf3fe.html | 0 .../35f2c5f1-71c0-4fa8-a726-16c997284262.html | 0 .../360a936f-6113-43c0-9124-e50662917c53.html | 0 .../3616529e-764b-420a-9059-ec0f167d10b1.html | 0 .../362ac4a2-bde9-4e1e-9a33-8af104730332.html | 0 .../363e855a-6b28-4a4e-b4b8-27a3b192fce9.html | 0 .../3642c9ea-839f-4a72-b7d1-ab3b378bc96b.html | 0 .../36754788-6447-4782-9449-c2446e80cc30.html | 0 .../367fba07-1835-4cc1-ad90-740ed130be8e.html | 0 .../369cc983-20d7-42ae-967a-c369f335eab8.html | 0 .../36cd00d4-6f98-40f9-ab33-a2b8578eae23.html | 0 .../36d34419-c995-4b05-9bb5-9f96525c01a9.html | 0 .../36d37374-717d-4690-9625-ae7ff88b766f.html | 0 .../371e0c7e-6874-4c04-8d2f-494b66210ca3.html | 0 .../374a9a8b-eb0d-4d0e-bdc3-6e48d09712bd.html | 0 .../3769dea3-6af7-476d-a607-85d8d79b006d.html | 0 .../376a8354-6941-4c85-9b6b-522da11e38cd.html | 0 .../378ee0e0-80d4-4c09-b579-cb0794260cc3.html | 0 .../37ae96b5-26e1-418e-b710-64bc7d89d4b8.html | 0 .../37af8010-f282-47c0-995c-b1450d2bcd0e.html | 0 .../37e1e04e-f3f3-478f-90dd-cfa60fd1e375.html | 0 .../3803673c-0d33-4500-9494-d1abdc050bf9.html | 0 .../380e0806-f9b9-4581-ba08-21cacd80beee.html | 0 .../384cb1e0-baf3-4dd7-bd51-e453d32c3183.html | 0 .../38518878-b054-4de4-a562-db342f6d9b01.html | 0 .../386e19d0-1150-43e2-8af2-2cc21823d358.html | 0 .../38786ef9-61f7-4470-949d-ae9bbb28d562.html | 0 .../387ccf9c-3ffe-4f2f-ae6b-1a1381998cdc.html | 0 .../38a88c9a-0687-4591-8e04-5516d316fe47.html | 0 .../38c0969c-6017-4e48-85a0-df5401195fed.html | 0 .../38c11818-ae69-4fe6-b6e0-2396669472cc.html | 0 .../38d64fb8-0e87-41aa-aa52-5f29dee1c3ff.html | 0 .../38e043f6-8f0e-48c3-ac09-c6cc741699d1.html | 0 .../38fcfe90-7a36-471d-8cf6-fd81a056bc7d.html | 0 .../38fdace6-e04d-4c5c-996a-1df4eaf153a0.html | 0 .../39301e78-cc00-4d2a-a499-6f065231123b.html | 0 .../395addce-e348-4d87-afe2-77984770b640.html | 0 .../39667b3e-a04d-47c3-9565-17f5a9dbd46d.html | 0 .../3998e128-2467-4889-9b33-379c0b00201a.html | 0 .../39b7a692-2b1c-43e4-b048-b05e6227c834.html | 0 .../39c72f20-e8ca-43cd-ba43-7048b9b99659.html | 0 .../39deea09-a16b-425f-8f0a-66e9a0204588.html | 0 .../39ea87a5-f401-4c55-8ffb-987cd7a3ef49.html | 0 .../3a0d211a-6211-497e-98ec-f93956aa1a0e.html | 0 .../3a185814-e9dd-46a8-b5bb-f0d666902a6e.html | 0 .../3a3143f0-26ba-4e61-8a5a-c157a037d919.html | 0 .../3a472361-6910-4aba-87c0-35431268aeb6.html | 0 .../3a5f0d93-da42-4db0-b15b-c2e9d85368da.html | 0 .../3a89a592-b948-4fb8-bb50-caf523f6ae07.html | 0 .../3a94af14-35ec-45b6-87f1-f8f26694031a.html | 0 .../3ab2b078-91f1-4a86-9f20-207e30f86c06.html | 0 .../3abf138b-8eb2-44a2-a9ed-14b57956047f.html | 0 .../3ad2412a-9c36-41e2-a172-1f7fbc224feb.html | 0 .../3ae02454-1ab4-42d5-870c-5b9ffd95f1aa.html | 0 .../3afa9659-c88a-481a-8e19-05f79a87eefb.html | 0 .../3b319fe2-ff32-445f-859d-faaff897d435.html | 0 .../3b533c27-355b-4df3-8777-8449c074e48d.html | 0 .../3b628977-65da-4517-b8df-cae471be0c7a.html | 0 .../3b813348-4d08-45a3-80f7-7f391b6d0b6c.html | 0 .../3ba2aefe-bed3-431c-b14a-cb3ef5c19871.html | 0 .../3bb778e2-14b7-4e62-b28e-5284c7e20736.html | 0 .../3bda7662-ad59-4985-b717-f823aa9dddfe.html | 0 .../3be3303a-ec41-41f7-a430-c4852e2c70c3.html | 0 .../3c399e91-fc5e-4387-b471-a505df1dd7be.html | 0 .../3c47a3d4-4357-4405-b753-da903d3ab3bb.html | 0 .../3c4b5296-4858-4f84-990d-d3ff0a7e404f.html | 0 .../3c60a380-0361-4e18-a00f-aa89766aa8ca.html | 0 .../3c68ecb3-c96f-4f98-97d8-e2694fab13cb.html | 0 .../3caf8ce5-6b4e-427e-8b1f-4470fbede306.html | 0 .../3ce6f846-7b19-4e2f-866d-13b23161494d.html | 0 .../3d3b603f-3dc2-4a65-b8a5-46557df666cc.html | 0 .../3d623558-75a3-4964-9498-7c5b617f068c.html | 0 .../3d6f8c67-aa0a-462e-824c-fff4ab10197b.html | 0 .../3d78a9a9-653d-4a46-9594-38ec07840ce1.html | 0 .../3d7c30fb-43eb-48aa-ba4f-c304321c3159.html | 0 .../3d850c83-cf97-4924-ad09-77552188d562.html | 0 .../3d876956-8529-4457-83bf-b93c146caaa3.html | 0 .../3d9546f7-0161-4cd3-9bb0-af72ade1dada.html | 0 .../3da0c3ed-97cf-42d0-8999-4469ea707453.html | 0 .../3db39d23-3b5c-4a0a-bd77-eb77006a9cce.html | 0 .../3dedcd9c-0a13-4fff-977d-43bb3499c54d.html | 0 .../3e04a61c-baab-4463-8469-61d6e3e0ffcc.html | 0 .../3e0b14e1-da41-4759-acd9-7f1dd0647fbb.html | 0 .../3e0d0512-69a4-4f0a-ab4c-7b64e10b1dd2.html | 0 .../3e1e4b98-7b06-46da-8e65-c5445f8940ff.html | 0 .../3e4e54f6-ba36-43dc-bd71-b0fc2112785d.html | 0 .../3e59ad1f-a418-4436-a339-22a8d7a649b0.html | 0 .../3e5ca74b-eca2-4444-8eb7-92702f5e27c0.html | 0 .../3e62662d-357e-4593-828e-a767c1c62f6b.html | 0 .../3ebd05ac-51fb-49b7-907b-8bed2612591e.html | 0 .../3eca78bc-30d3-42a5-a979-cfba6abbf313.html | 0 .../3effac5f-383a-4be5-9fb3-f5a90a8a9ea4.html | 0 .../3f297867-8d43-435c-b9f9-000d949af931.html | 0 .../3f5289ab-2e89-4a91-a238-add4bbd0b0cb.html | 0 .../3fd4f94c-54f4-478f-adb7-0b1d2dad941f.html | 0 .../3ff027b7-d862-4cb2-a5bc-a45ef96e9168.html | 0 .../4044ad30-23d6-4398-9ee1-2f9e1b302a8d.html | 0 .../40530bfe-c8aa-4e32-a4c0-970198bb38f6.html | 0 .../40552614-ba38-44b5-84e4-293aade92bf8.html | 0 .../40598d33-5edc-4cc8-8c3f-522fea2cc3b5.html | 0 .../406a562f-e380-41dc-bcf9-06d302c82437.html | 0 .../406b760d-3145-4582-ad69-bf691afb74da.html | 0 .../40974c23-8e3d-4a89-a342-5836574a6caf.html | 0 .../40b2b486-5d56-4926-afc1-e0a4abdf9829.html | 0 .../40ca7d20-09d6-47af-8662-9714551cd2f7.html | 0 .../410fd908-5d33-4d4d-ac4f-7b8c655799f5.html | 0 .../410ff3e0-fc97-4046-bd82-cc74609a9c01.html | 0 .../411b1e05-69eb-4302-8a71-587933c98828.html | 0 .../412a3d56-8761-4f51-9553-9dc56f99f10e.html | 0 .../41343d36-1c57-4d29-8a95-d779985e1006.html | 0 .../413f5099-cd92-4167-a65e-9962bc57639a.html | 0 .../41686b45-bd75-498b-a1dc-e166e0f55c21.html | 0 .../41971700-9d8a-4dff-8b3a-32de8ece5bd7.html | 0 .../41fee9fb-9265-418b-a452-14d76f2ff46b.html | 0 .../423115a3-41be-4f5c-9606-6fe705400447.html | 0 .../423e663f-fc6e-46b2-ad1f-3ecfe16ccbe1.html | 0 .../424a0839-cc05-442b-b8a1-f4ece73aafce.html | 0 .../424fd4ab-62c9-4ee0-b246-c85264d36c8e.html | 0 .../42599288-b3ba-4f4a-8c24-ac1aa55f6acb.html | 0 .../428820b4-e83a-4424-8942-fe89687ba7a2.html | 0 .../42abe59d-7648-4f31-8cae-787f4d34c0a1.html | 0 .../42ceb9ed-fcd4-4709-a3c2-9dc802f9b6af.html | 0 .../42cf8ad6-16f8-486f-8d13-2582e3f283df.html | 0 .../4337dbf6-9814-458a-92fa-f4b36d99473a.html | 0 .../433fb7c8-dd56-4678-8769-81da461a0196.html | 0 .../4361b583-b359-4f05-8ee9-0f5a78bed298.html | 0 .../4362d9ac-b46a-4c43-b7bc-b1c2d600e204.html | 0 .../4377212a-f623-456f-8216-2c4216635ec8.html | 0 .../437b3e58-06fe-42e7-b4e9-11943c6e3a13.html | 0 .../43981727-789a-4022-b3f0-26c773753ef3.html | 0 .../43c58105-f880-4dfc-81c9-81e7d82b3cb3.html | 0 .../43eec41f-7b1f-40f6-83f8-a900b597303d.html | 0 .../43f07ce8-af2a-4edc-b5c9-a7fa1f3735e9.html | 0 .../4427ad46-e4a1-45f4-abe0-5cee8256649e.html | 0 .../4429f610-8944-42ac-8bba-33f5d058bade.html | 0 .../445b198b-fcda-4ae8-91d2-8b117b8ab232.html | 0 .../447d0d0c-eabc-4fee-ab11-7299000ef59d.html | 0 .../4488e404-e91c-485d-aeae-de79a9e06782.html | 0 .../44a23048-9178-4b56-8405-f1e1990464cc.html | 0 .../44b67bb9-e458-4cd0-b957-75088717410d.html | 0 .../44b69b62-390e-48cd-98b4-62aac6cef575.html | 0 .../44bfbcf3-675c-4ea9-81ac-af9fcfd41113.html | 0 .../44d922e5-3460-4bd8-9807-7344290c8009.html | 0 .../44e57901-6747-4876-a172-089336040c55.html | 0 .../44f57d38-cdb9-4473-aed6-3d6b75856904.html | 0 .../450e5f8b-12fa-4c39-879f-9ae7921f4504.html | 0 .../45215740-c0b2-4b9b-ae39-9654494c4a55.html | 0 .../452f7e89-2c89-413a-91cd-5151c841b63d.html | 0 .../4540863e-6d37-421b-8c1f-58a76a969221.html | 0 .../455729e0-5b98-4e40-9b45-61b75ba8f657.html | 0 .../457a155b-4153-41fb-b195-767a57939644.html | 0 .../4592e064-06cc-4b54-891e-3dc586a215d0.html | 0 .../459a2f1d-4883-4246-b39e-d92678fe2789.html | 0 .../45a60d6b-6769-4833-a72d-5d3503479b69.html | 0 .../45cdd89a-82fa-417d-aded-e00e4a764001.html | 0 .../45de42f6-b255-471a-9824-df5cfebe763b.html | 0 .../45e8d923-6edc-4130-954f-de43a774b6c4.html | 0 .../4624894c-301e-4e82-b048-bb1f5d349c61.html | 0 .../463ee9cf-fedf-45d6-950a-b6351514200c.html | 0 .../463f23ed-58ff-4ddd-af76-96a19362850a.html | 0 .../46af0ce4-c5b9-4e24-b2bc-8d839783511a.html | 0 .../46bdc73b-00dd-46f8-9d1d-8667bd4e98d1.html | 0 .../46bde59c-2d3e-4a54-88c0-5712c83973f8.html | 0 .../46bf3477-9283-4d2f-95d3-3152747a14ab.html | 0 .../46f5f352-25a0-458f-83ac-2600e796f20a.html | 0 .../46f713aa-bf52-4f51-8cf6-33f646543643.html | 0 .../473431f8-47fc-4d90-b428-a85fd607e406.html | 0 .../47630ef2-ec2b-4aa3-ab0c-e19a1066f841.html | 0 .../4768cff5-1294-4555-9d7a-35fece1696e7.html | 0 .../47740041-cc54-4fed-a1c6-e4432d27bc9c.html | 0 .../4774afb2-2799-4e1d-86cf-71bc598a17a9.html | 0 .../47a0904e-0879-4618-8572-a1d03ca341a4.html | 0 .../47b0d2bb-0100-404c-9f80-c6cbf2138b5d.html | 0 .../47d387b4-691a-4b89-8f5b-76cd13c4ad94.html | 0 .../47d41cfe-28f6-446d-8c45-af96c8b9ae05.html | 0 .../47fb3a1f-6128-41b4-9ca6-83a52b459b8e.html | 0 .../4829e155-0b21-41a0-8cad-3a2e3bdec14c.html | 0 .../487f191b-ddcc-437c-bddd-c3044e843b44.html | 0 .../4882dcf9-930c-4a88-bdca-f0f048ff89cf.html | 0 .../488e1a10-3d1e-4ba0-bb76-9eef40f16ebf.html | 0 .../48aabc22-2836-46d8-812c-dddab3b804db.html | 0 .../48b14924-23e6-43c5-8c4e-dec91c20c0ae.html | 0 .../48bc05c4-8a10-4c6a-b93d-f9fb4befa66b.html | 0 .../48f4da85-709d-4d98-aa39-d5463eeef594.html | 0 .../4900609a-2fc0-4d0b-9e0f-70458d73ec5b.html | 0 .../4909e97b-b2f1-44d1-9e30-a7c51f11b19e.html | 0 .../492166ea-c866-4d75-99a8-85849a48e428.html | 0 .../49294cb0-5fd6-4769-89a1-91d271a2abae.html | 0 .../49305898-2431-4b6a-ab59-561077316525.html | 0 .../493b6db7-d053-4d6a-827c-9259e91e2527.html | 0 .../494e5350-f38d-4585-acfe-10a2695ca620.html | 0 .../495bcc91-daae-490e-a75f-3cbf83477384.html | 0 .../49618a5e-3a19-4f03-9ce8-6fe5d0e54a80.html | 0 .../49622d46-1f35-4293-9ba7-121a753f068f.html | 0 .../496576f6-4ba5-436d-83c0-2da0265f7741.html | 0 .../4996e1fa-e049-41cd-b224-b1046472f32e.html | 0 .../49b65eff-c325-400b-b8fc-c8af162e3857.html | 0 .../49cd7a27-bbfa-4995-a778-9888cb7bb4e2.html | 0 .../49e1d5d6-87ee-48d8-8553-1620c1079132.html | 0 .../49f2fa45-0f81-4f48-b393-50abc05e3f75.html | 0 .../4a10cb91-a388-420e-ae10-0b9cf38c34e3.html | 0 .../4a2a2e28-92a6-4ee1-b6f6-0e8e919d634f.html | 0 .../4a3d5e9c-90c3-4ba4-b1b6-dee5698b5c04.html | 0 .../4a5309dc-8ea2-47da-b544-11e00499370c.html | 0 .../4a705734-d740-43e3-b29f-39e50f455df0.html | 0 .../4a872c55-5e1f-40bd-84e1-62efef230adc.html | 0 .../4a969242-9f88-4efe-89b0-ede5772e5f94.html | 0 .../4a97b48a-3309-4253-8bdb-6607b56d98cb.html | 0 .../4ab71322-4ebc-4865-907f-69087ff29706.html | 0 .../4abff7fe-4853-4631-9461-50f0c3af0d0f.html | 0 .../4ae89df5-26e5-45c5-9ddd-b6f773bbd172.html | 0 .../4af2fade-5ac9-49d8-9c09-7846708025bb.html | 0 .../4afcb92a-5a81-474c-88a6-135111bcc8e8.html | 0 .../4b1aeebf-8afb-4559-a099-0ee38e1c8cca.html | 0 .../4b1f4157-510e-4564-b3cd-b4b2106fea61.html | 0 .../4b2a6f86-6085-4a36-900c-5fd610b04f2b.html | 0 .../4b6489fb-0987-4c8b-abdd-a99d024e828b.html | 0 .../4b783a6a-9f6d-4c8c-87ad-f612b82f180b.html | 0 .../4b8d23c2-b79f-4b2c-aa64-1a5d6d5d013a.html | 0 .../4b96a42a-6226-4d2d-8902-cd4f48b887a6.html | 0 .../4c1d30c0-2d15-4daa-9fb5-bf3244032813.html | 0 .../4c2412f1-e077-43f3-8500-5a31d8172863.html | 0 .../4c54ca4f-a039-4ce1-8ff0-cafbdb80c3d6.html | 0 .../4c6618e0-85d3-4fc6-922d-b7b5b39a4b5e.html | 0 .../4c8107e7-7a52-422c-a848-bc2d75242041.html | 0 .../4c891094-8c89-4ee5-a0bc-986f8c591d68.html | 0 .../4c8f9959-b613-48a0-96ed-ed8871a0a4b4.html | 0 .../4ca0059b-65db-4c84-b6db-dbd535562585.html | 0 .../4ca1c51c-36b9-4f30-80ef-92484b634101.html | 0 .../4ca5608b-50aa-4c04-8b5d-2342c63a198c.html | 0 .../4cb0376a-3e99-48d8-80e0-6833a0b7cdd2.html | 0 .../4cc39a85-fa80-44e5-89b6-8177b7082f92.html | 0 .../4cc878e0-9054-435e-9306-396f373ff1ee.html | 0 .../4cd49822-e401-4513-b730-f7a51772547c.html | 0 .../4ce1ee5e-f954-499c-921c-d13e47c52fd7.html | 0 .../4ce7e2a4-8378-4d88-b7c4-fc3fc698aeca.html | 0 .../4d0fdefe-8656-46c9-95a2-87ee644c57ce.html | 0 .../4d30f823-a8dc-4cd8-a9b2-a13c9b7c33e3.html | 0 .../4d4ed945-76f2-4868-b6ec-3e98d36f4a5e.html | 0 .../4d573c05-8c61-4e91-a92e-38beef88e8d9.html | 0 .../4db4294c-5130-4ab9-bb6d-e16018854ab2.html | 0 .../4dc5106c-2ae2-422d-966d-0d7466c6ad51.html | 0 .../4de107d2-1071-4b02-a873-72b6c8515280.html | 0 .../4de308ff-f691-49d4-85b0-ee7a330cce2f.html | 0 .../4de9382c-c2c1-456f-9822-2f6f38f1a651.html | 0 .../4de94def-9e46-4d4e-beea-c4b3b9c328e5.html | 0 .../4df50bba-7425-4103-8733-ac349af75997.html | 0 .../4e0be864-15b9-4e6e-8e72-40a1df38914a.html | 0 .../4e246913-a51a-428f-b5ca-6548f9702b61.html | 0 .../4e331733-ac5a-470d-b925-111a441335bf.html | 0 .../4e845139-0257-4b12-b0ff-97636237c300.html | 0 .../4e931b06-a91a-425c-a1f4-4c90f999da31.html | 0 .../4e9dac48-17a9-4e7f-91f7-dcdc162b21a0.html | 0 .../4ea0945d-b57f-48ec-ae1e-1d85b79dc695.html | 0 .../4ea3e1aa-b3d3-44ec-b28b-6f9061b28367.html | 0 .../4ebef52e-96c5-4769-9bac-8eb1024edf32.html | 0 .../4ed00558-12ec-4faf-ac8f-e58f371ca1e2.html | 0 .../4ed6232b-5629-41fb-97a1-8883ffb473c3.html | 0 .../4ed94ccd-c8ae-4364-937d-a7fcf614c146.html | 0 .../4eebc286-1aa0-456a-b469-668cb4c549c9.html | 0 .../4eec6004-8366-485d-9a8e-23f76e217468.html | 0 .../4eeee538-ef0e-4125-938c-9f3a97db5a1e.html | 0 .../4ef81ae4-abe9-42f6-ade3-fe3644e80c06.html | 0 .../4f1855f9-a060-438f-b7d2-bab2836b79c7.html | 0 .../4f25eebb-b862-4824-9ca7-c5ba96a4a28e.html | 0 .../4f28d63a-167c-4855-95d3-26785ae4bc5b.html | 0 .../4f2ac16b-9c63-4bf4-b99f-d8ab90ca2dc9.html | 0 .../4f3a8c5f-47da-48a0-a0f6-5bab3b6b6138.html | 0 .../4f6bcb75-8e9c-46fc-9116-469fda3ef75d.html | 0 .../4f73814a-1b43-4e5a-95af-9b58aaf7cbba.html | 0 .../4f772e11-76b6-4db5-a02d-b23fbb274e6e.html | 0 .../4f9502e9-e855-4eba-9340-29f8fe140f9f.html | 0 .../4fc20e68-fdc5-458e-8c22-2b912ffa9309.html | 0 .../4ff0413e-511f-423c-9a37-5d3e404e3491.html | 0 .../50120a72-bf1b-459b-91f1-d4701607ba8a.html | 0 .../5020ad7a-e55a-40e7-94a1-d5fc3af81f73.html | 0 .../50331086-bbe7-4c28-bddf-1f649fd0db9f.html | 0 .../505acefb-f4e2-495e-a63d-511231c7be7d.html | 0 .../506c5e70-8da9-4c28-8496-e1335ace193a.html | 0 .../507809d0-75a2-4a6f-94a0-79d2c6b41941.html | 0 .../5095cb09-0202-45b6-bb3d-3a9b8f008952.html | 0 .../5095f115-1c2f-4389-b4fa-d0b4166bb864.html | 0 .../50d12871-c6ae-4013-bdc6-2c76c04e9e07.html | 0 .../50d3b798-d18b-4de8-bb7d-728f011f0ada.html | 0 .../50fde729-2146-4563-94f8-c46f72423124.html | 0 .../5119f68f-c735-42ef-b7c2-ea714e077375.html | 0 .../5145ad05-a097-4251-965d-95f6295c656d.html | 0 .../5145c02d-3ad9-482e-a942-0a07d775dbeb.html | 0 .../5162e9da-a511-4d3c-8534-0a588ee8deed.html | 0 .../51746061-71a2-48be-87fe-8b4b52a32e85.html | 0 .../518f1be3-f6f7-4516-b0d8-b945975ec463.html | 0 .../519624e8-81b7-4ef9-bd5b-37c8a8fe1a78.html | 0 .../51cb338d-cc9f-43b2-a4a0-bb379bdb7e90.html | 0 .../51dc5fb7-c3e6-40ab-b4bc-bb40e46fc20d.html | 0 .../51f79e4f-366c-4517-ab77-cf3718e9cca0.html | 0 .../522b2dd7-5d0e-433c-b5bb-73b2d1c5dd65.html | 0 .../5255554d-d30d-410e-9aab-3539ee74e397.html | 0 .../52670cf4-0ba3-4b22-a744-fbd1dee03dce.html | 0 .../5273f92d-771d-41bc-886c-64fcc44432d9.html | 0 .../528eb6c3-f83f-4b9c-993e-75d0f938f4bb.html | 0 .../52bf9a89-1e94-405a-a9d5-36e509b8d891.html | 0 .../52cd6a59-dd02-43e0-a823-c5061bc58ac8.html | 0 .../52d9d5ee-9d5e-4571-ac28-98027d9aac26.html | 0 .../52e10074-b586-4e68-bc5c-b39b6f3fd1dd.html | 0 .../53012bae-ff2a-48c2-b9ad-2d0edad2524c.html | 0 .../530515bb-c000-4e10-96ae-610b72e5719c.html | 0 .../532ab2b6-fca3-4560-a7ba-9ef188768edf.html | 0 .../534a8304-35c6-4918-8aa4-ec64bac05b80.html | 0 .../53510c36-c8eb-44df-936e-91cbf3459797.html | 0 .../536098c5-c0b8-421f-8140-27e86a6e984e.html | 0 .../538c01f0-17c9-44e7-b050-121d211c5108.html | 0 .../538ee594-4403-4ddc-861e-8d6724abdc95.html | 0 .../53a03414-8ad8-490b-9886-5929760d68fa.html | 0 .../53a3062b-4da9-4fb4-a356-e75025e97253.html | 0 .../53e4b533-5841-46f9-8518-c9b9bbcbc5d8.html | 0 .../543b2f64-f414-4f44-ac8c-d3f41611cccc.html | 0 .../544ae29e-104c-4ac2-81fd-e3ae4aeb34f6.html | 0 .../545b2a14-7c86-4c31-81e8-247479f5d3ea.html | 0 .../5485955d-60e4-44e3-b716-f366244929ca.html | 0 .../549975f4-36f0-44f9-9e3b-f1020c4f4aed.html | 0 .../549ebad3-e954-41d5-acb9-7ff6260ca555.html | 0 .../54aa9a71-bbc9-4f73-9b28-bdcb1f4744a2.html | 0 .../54aaadb8-b49b-4665-b3d8-e9410a723d17.html | 0 .../54b73c71-d125-412b-bdc7-969878a949ab.html | 0 .../54b7b297-bcc5-4bd2-843f-98b5c69c5218.html | 0 .../54b9691f-1b54-4d7f-985e-34474bd52938.html | 0 .../54c653d5-7e02-4889-b648-56b1d9969130.html | 0 .../54d5a6cd-4356-49b1-a7da-8285531a89c8.html | 0 .../552a9c11-180b-411a-afe9-11e1d8b6f168.html | 0 .../552d81a0-204a-4a44-b746-f9ea1f2122cb.html | 0 .../55438ff0-6e2d-468c-9cf6-31b517bf4b37.html | 0 .../5543c3b2-9d08-4b3e-8c6b-8dc538f638d2.html | 0 .../55528aa2-cfcb-45b9-9f15-5bdbfdf43e1f.html | 0 .../555e702f-d41d-4dc6-8862-d30092964b51.html | 0 .../556d508e-037d-4e79-af2e-784308766626.html | 0 .../5576a4ba-d771-4ff2-be95-dbda8cf1a471.html | 0 .../558a124e-58ec-4824-900f-6d89e5d5f2a2.html | 0 .../55b8b423-3aa4-4b89-bce5-97479317c1c0.html | 0 .../55bad125-cb5f-4c93-9b21-f1f1e2212541.html | 0 .../55dac9bd-d79e-4735-82b0-6c519d6bf9b6.html | 0 .../55f11a40-ec7b-4704-b358-b157e0f01431.html | 0 .../56045a56-3926-4705-9a00-1f8d4894c3dd.html | 0 .../561f5ea8-7720-43aa-86bc-66cc05d4e7f0.html | 0 .../563469cf-45b2-4130-9f55-2d47dd0b3fd1.html | 0 .../563cd097-cfdd-4c3e-8ef4-a99114cbe9d7.html | 0 .../56511f84-4897-4871-a1e1-1e26f801e001.html | 0 .../566ab4cc-821f-405e-85b5-3b2b557a8803.html | 0 .../5681a510-92b7-4b52-8297-dc2ccca2b93f.html | 0 .../56a16cf2-b5f7-4b0b-927b-38807e078139.html | 0 .../56baa7ca-5e34-41ef-8063-7dcddfdd0576.html | 0 .../56bc87e9-6fa2-4d26-9116-5ec47ac93614.html | 0 .../56db8e88-4a1c-4cb5-8d30-f778bbe948a4.html | 0 .../56e14912-e683-4c54-9206-1d5bd15c21d7.html | 0 .../56eaf8dc-3b39-4ad7-bafc-eccf7ffe0105.html | 0 .../5701c09e-3618-4f5a-b17a-9350803bb76f.html | 0 .../570f2323-8083-477e-8b7b-c5f85b6b19c7.html | 0 .../572845c9-7918-46f4-8807-42fa496818a7.html | 0 .../572ab0cc-16d7-4831-a2ed-1f3d8c276a6b.html | 0 .../57388536-e0e4-46c2-9761-4c14e6cdd059.html | 0 .../5787210f-a85d-4984-aa09-e0b6792b4f5b.html | 0 .../57ad3238-4dc7-4fe4-bead-859a0b9be839.html | 0 .../57b4b4ee-a148-4b1a-b13a-a55907d75d04.html | 0 .../57b79896-ded8-4a91-bb98-a73325fc2c6d.html | 0 .../57ca066a-5605-4284-95ea-aa025f8c8fa7.html | 0 .../57ddd4ab-2ec1-4c28-8337-8676fb4a142b.html | 0 .../5800541d-83fb-4921-a9c1-1ad768fcadf6.html | 0 .../581e027e-ca59-46ba-96b4-82cb6911b67f.html | 0 .../5837d2c0-83d3-4c63-b780-0b61f04c67fe.html | 0 .../583b065d-bb7f-4bdc-894a-d635778f00c0.html | 0 .../5841c584-7499-4b42-80fe-92fa2142813f.html | 0 .../584c33d4-cb49-49bb-bfc2-7a7c09a7e8b1.html | 0 .../5869de9e-c242-4fa5-bc8b-455353ae1a15.html | 0 .../587cda69-2cf6-4053-8d7d-71651e83b0b7.html | 0 .../58aec216-4406-4a17-b5ba-041b6c722fd9.html | 0 .../58cae7fa-60f5-438f-8967-dbe1631b2af9.html | 0 .../58daeefd-8cb8-4dde-9549-ccf2796b5aad.html | 0 .../58e138de-2ac7-40a4-88ac-61a9f4bcef54.html | 0 .../58f2d865-0bb4-46a8-b9f7-6f546d281b85.html | 0 .../58fd1837-9784-4f4e-9b13-bdef1675822e.html | 0 .../590ca982-3902-45eb-8ec4-1ea6e1b5aeba.html | 0 .../59493ec6-da71-40db-a398-520b4e11fd5b.html | 0 .../595f9f00-5531-4d19-b9e4-297a626f9a7b.html | 0 .../59a493fd-440a-4d1c-a60a-e3072fec8012.html | 0 .../59b6463d-5e12-45ed-8132-6362db72a819.html | 0 .../59bddd1b-b25d-4e14-81f3-243834b99d20.html | 0 .../59cae095-2f89-4e83-904d-fdc79f669a12.html | 0 .../59f11096-77eb-4d92-b50b-0529a16f3494.html | 0 .../5a077929-ebc5-4d7d-a1f9-ce749257358d.html | 0 .../5a1b1938-6f25-46c8-aebb-9bfc79bde87e.html | 0 .../5a2e1a30-e408-420e-a326-5ce9ee863927.html | 0 .../5a369bde-f8b8-4528-9a27-908127221b2a.html | 0 .../5a379691-367f-4469-a1d0-54f6e7535f60.html | 0 .../5a44356f-dc15-4562-88ba-2a894305efaa.html | 0 .../5a44c175-cb76-452c-ada8-3dbcac50d35f.html | 0 .../5a4819d4-4cb1-46e2-9a10-805078c65cbd.html | 0 .../5a53ba2c-9a44-4dfc-9a36-08711bb4e0b3.html | 0 .../5a794013-4d05-4c6f-8f5c-502e7388d606.html | 0 .../5a8a0f84-d253-413a-a403-a0c36a8a3d9b.html | 0 .../5ab06bd8-8236-40fa-bacb-037ca1f8ad97.html | 0 .../5abd6042-0bcd-4ad6-8fcd-89901a006e54.html | 0 .../5abf35e2-87d9-4eed-8435-c0ba711e1985.html | 0 .../5acb6b6f-1e46-4021-afd2-4212e4723eb2.html | 0 .../5afa310c-14ba-4021-b247-42061eb899df.html | 0 .../5aff711d-0a76-4a9a-b8fb-0b446edd88e9.html | 0 .../5b256e10-4015-412b-8ed9-0aff4dcada89.html | 0 .../5b46fbb4-4cec-4229-9a53-161447956dae.html | 0 .../5b526450-1f95-44fc-9b5c-3f891157b305.html | 0 .../5b78a350-ac9e-4b9d-89ff-665f8eca486e.html | 0 .../5b9b9481-76f2-4a12-bb68-5e6dd98796f0.html | 0 .../5bdc89f8-2e4b-4ec2-8825-be336a9a8620.html | 0 .../5bfc92d3-0272-48fa-a301-bac9e74c3450.html | 0 .../5c0fc772-536c-471c-93af-548b4740fff7.html | 0 .../5c325c04-85c6-40fd-aed8-2f8b1d4afe5f.html | 0 .../5c370b06-c60e-4155-b5b1-b52bf1fa7c15.html | 0 .../5c3b64d5-be06-4079-a44e-f424319cc2c4.html | 0 .../5c52f32a-631e-4891-8516-acec411c797d.html | 0 .../5c65312f-86a9-4d45-b57e-49673fd8a513.html | 0 .../5c7a24ab-410d-4ab5-8eeb-185fe57b64a9.html | 0 .../5c7ce289-8f86-4d22-9eb3-0d9a83bfa1d9.html | 0 .../5c890dfc-c3cc-4173-81f5-e1274a043281.html | 0 .../5c8c78a0-2d20-4f1a-a8c4-8a72d7f23a19.html | 0 .../5c968f53-cd55-45b6-bf58-785331a53592.html | 0 .../5cb524e7-0f22-4711-ae58-755d43360cd7.html | 0 .../5cc7c7b9-35ab-4385-ae1e-752f9b4f51bc.html | 0 .../5cfa4c7d-207e-429f-bcc0-31a251041180.html | 0 .../5d0e72fd-71b4-46b7-9fb3-a63a981b9f71.html | 0 .../5d350bad-7ecb-4bbc-8ab8-6a1de3affaeb.html | 0 .../5d3ff718-ce9a-47ef-b6c3-d8a335e6994c.html | 0 .../5d67390b-bd20-4a12-8fa9-5fee81a992ab.html | 0 .../5d933d85-92e7-4a90-9d6f-22e6b450a32e.html | 0 .../5dad76fe-0ed0-4816-99a1-df482bf60963.html | 0 .../5dbbde73-b226-49a6-840e-a27774917ff3.html | 0 .../5dd3c6c5-8486-45f6-9f75-c5362fbdaf09.html | 0 .../5ddce6c8-9810-4a19-a55e-ea3d21f9d1a5.html | 0 .../5de1106d-30c1-4e3e-9156-cee76dc98947.html | 0 .../5e04f8f3-98fa-4c01-829c-0e8efd0f6974.html | 0 .../5e0b0376-d07a-4764-a008-1300f4d6b53b.html | 0 .../5e45b584-ec1b-475e-b1b9-4460dc6367af.html | 0 .../5e4ff5c2-bd74-47d5-baeb-dcc609783817.html | 0 .../5e575b1b-53ee-4a4f-bbdf-e54ba45f78be.html | 0 .../5e77b3c5-efdd-49f6-94b4-ed25c977cc76.html | 0 .../5e9282d2-77f3-4ffb-ad48-196c34627e0f.html | 0 .../5e92a653-27f1-4c33-b1ed-0b74d7776b49.html | 0 .../5ec422cb-94f0-4d24-b7f6-fcc173d93a91.html | 0 .../5ed31002-ccb2-4b86-9375-33d21b353acc.html | 0 .../5ed87c8b-7ef7-41f6-8414-0910813015f9.html | 0 .../5f199ec3-4fca-43cf-b3a3-6011f6322ca0.html | 0 .../5f251b3d-bb09-4b96-8997-7f7648943d82.html | 0 .../5f3949aa-ce18-4abb-a4ca-50d8ea81c6f3.html | 0 .../5f430770-776d-459a-85a6-4e175baaf7b0.html | 0 .../5fd97ef1-0f0f-4c91-8ef3-e0f24cfdfc42.html | 0 .../5fdee7ed-a7ad-463b-8fc3-709565251607.html | 0 .../5fe58954-6712-4295-8e85-5f62b732bd6a.html | 0 .../6005fdce-8aac-4d43-a6ca-475f130fa750.html | 0 .../600736d0-3082-47b3-811f-7890e654b421.html | 0 .../6013615d-be0f-46d5-b170-9838c8934467.html | 0 .../6023c67f-e0b3-47f2-903c-329fc3455320.html | 0 .../60729b9e-753c-4bce-bdf8-58840f23bf8a.html | 0 .../60a83cb5-2e87-435c-a51b-8bcf44585f3d.html | 0 .../60e5ed5d-2f3e-48a9-8efd-f074e4438c87.html | 0 .../60fdbba7-c833-432a-8972-0b22f683cdb5.html | 0 .../61143a0e-0fde-435e-b036-7c17ae70cecd.html | 0 .../61211431-3f4b-45df-a76f-da74ad72ea66.html | 0 .../6121ce35-a94e-44c3-9275-9313528364cd.html | 0 .../612a7a00-b75d-4531-85ff-22d60a4e08b8.html | 0 .../612ef3b0-fde1-4fab-8240-70b8ac491c83.html | 0 .../614c2940-ca97-44b2-be9f-fa882f9cc4b2.html | 0 .../614eb841-21fa-4f66-8ea7-1bec2faf28f5.html | 0 .../615772f3-9095-43f1-9a57-9c03a4baa202.html | 0 .../6190df1d-9633-4df1-ba3d-6a4a541fe1ba.html | 0 .../6192b24c-2633-4e00-8183-e73a8a0d2f0d.html | 0 .../61a9e2e0-15ca-4085-89d0-b39ca185cb36.html | 0 .../61c3ca2d-ad31-4102-aa7b-a948c53867aa.html | 0 .../61d86d4f-03ae-47fb-9417-e3a6e9a4f7da.html | 0 .../61dde111-7d4b-422f-b85b-e6fa8768c83a.html | 0 .../62061d48-e64c-4689-92b2-bdfdea65846a.html | 0 .../622273f5-5552-4709-97d1-156a468bb128.html | 0 .../6241ff8b-17f9-4e49-9fae-df1959275eac.html | 0 .../62470fa6-694b-47c8-9f09-7aa05fe5e3db.html | 0 .../625453d2-d776-4f80-aa59-d07b734124b1.html | 0 .../6260342b-5e62-42fe-9e99-ed5e221115e7.html | 0 .../62605a01-a522-49bb-bf27-23cf4bf14c9c.html | 0 .../627cbd8d-7d16-44d2-b923-0cfea6e5aef6.html | 0 .../628584a1-85df-47e5-a0ac-87844eedc3e4.html | 0 .../62dca4ff-f60c-46e7-9d74-a9ab22daede2.html | 0 .../62fcda04-51e2-4faa-9a49-eb0c68ef4b52.html | 0 .../63021166-0e4e-4582-9431-3af4aae3878a.html | 0 .../630f388f-859f-40d2-ab3f-655bb50ad366.html | 0 .../6338011b-e44e-4ef6-be5f-df7bf3f0ecd8.html | 0 .../6348d96d-02ba-4aea-96db-e27302bbd10d.html | 0 .../6350cbe3-ba42-4fb1-b9bb-78ac181b45d1.html | 0 .../6355e740-1883-48f8-aa1a-b71c5a48ad33.html | 0 .../635b9ac3-862f-43cc-9e9c-86df53b6cc1a.html | 0 .../63604a20-e4e6-4079-aac0-09fd59fb87c2.html | 0 .../636ade19-e611-49d5-9828-6fef268c502c.html | 0 .../63715cc2-356c-4d7d-a201-2c1417a64b53.html | 0 .../63e7d3de-7202-4564-b829-e7448783a680.html | 0 .../6412d308-5fd9-4351-b4b3-cbf45d362d1b.html | 0 .../642217f7-e106-4258-84c4-0b845cbb95de.html | 0 .../643379d6-2f99-45d2-98a8-32c3878cc342.html | 0 .../64adc9ba-3311-44d7-ba82-16b444ca432a.html | 0 .../64d40e8d-47fd-46d9-ab27-2354d6f360e1.html | 0 .../64dbcb32-1dce-443b-b808-4288eadca6ee.html | 0 .../650a7740-56fc-43d3-b730-2ab869cfb017.html | 0 .../654e74af-1650-43b1-9264-a2247dcb272e.html | 0 .../65533e1b-c3ae-431f-bfda-272473b6a9b2.html | 0 .../65647add-eb5e-4723-999e-41977072c6b8.html | 0 .../659e0743-dbf1-491b-ab69-91dd09527b57.html | 0 .../65a0e30c-522e-48e0-bb5f-df9b98400b06.html | 0 .../65a5a1da-5ddd-4d8a-95c1-a70c5e7dde53.html | 0 .../65b8015e-3d2f-4ceb-a1ac-edfe60c02a44.html | 0 .../65c7c8e8-f52d-411c-85e2-3a0340356859.html | 0 .../65ca3b70-af4c-4848-b2b9-4eca22c3a313.html | 0 .../66149ca5-b8ff-4c2e-9a99-3821a377fe9d.html | 0 .../667da828-e1e1-4430-b4b7-8a81ea2939b5.html | 0 .../6690914b-5c8f-4ad2-a50c-a5bb5a21ffb1.html | 0 .../66c02ea2-f079-439b-b635-94cf8dad2f78.html | 0 .../66f54c2c-20d6-4a43-8801-8d086c2cac84.html | 0 .../671ec8a1-1a6f-4cec-b2e9-7616514f79e6.html | 0 .../672be36c-77b3-4236-ad5c-fce65570e481.html | 0 .../67345781-45cb-4a88-94ad-199985f8cc1b.html | 0 .../676d922f-5696-41cf-be99-6531210d6825.html | 0 .../67793f28-ff85-4072-b859-8950a157ef8e.html | 0 .../6799aade-0433-4e1f-ba60-86ad2aab4d32.html | 0 .../67b2fe61-5ee0-48a3-9f89-3ffdb50f508d.html | 0 .../6805e29f-efa1-4269-98f3-7ac48cba5bfd.html | 0 .../683c336c-78fd-436a-b6fe-58f299788d15.html | 0 .../6863321b-d4ac-4a2b-8ea7-e69b563328e3.html | 0 .../688c4b8d-468c-4318-8a17-7595ece8d9d6.html | 0 .../68b00601-5ffb-401c-b550-ef7de132928a.html | 0 .../68ece873-57cc-4e40-bd81-380a337b0a38.html | 0 .../68f66411-b93e-4e22-b808-ba9d121db139.html | 0 .../690015ae-1257-4f6d-96e3-61300d201adb.html | 0 .../69045eda-11d3-42e2-8d1f-3e31272c7ac7.html | 0 .../694b92df-b89d-4774-a9be-48d939c755d6.html | 0 .../698392d5-97a3-4531-8055-785f87217391.html | 0 .../69848a93-8d00-4fd0-a8dc-0f813d549d01.html | 0 .../698727c7-bcbb-4183-a0f6-c6c1a72b562a.html | 0 .../698a47a2-5558-4010-852d-b01e11a59fdc.html | 0 .../69df5fdf-e42d-4ee3-908c-75e4f3ae29f5.html | 0 .../6a133a06-b68c-467e-8d1d-efaae4b34f2d.html | 0 .../6a18597e-204e-4534-a2f6-abdddb30caed.html | 0 .../6a311a1f-7471-4dcc-918b-9b312f11a547.html | 0 .../6a3b2dc4-5ef7-486f-9b70-5f5f021f069e.html | 0 .../6a4e0542-4459-4215-a9a1-aaaed1b47b8d.html | 0 .../6a603f8b-c3e2-4654-8d89-93dfe61ed38c.html | 0 .../6a649085-a9dd-4bbe-a254-ba9cb8ff7bf2.html | 0 .../6a8070f1-8f25-4cd4-9178-10a03099deec.html | 0 .../6a872d2f-5904-4c8d-9a83-b2e9c68849fa.html | 0 .../6a8dadf9-fff4-4a77-9222-5fca6b29bb4b.html | 0 .../6a96c0a0-84a9-401a-ae08-6b800e63f3bb.html | 0 .../6a9d40f8-e3ef-4347-8df2-989ee512bf5c.html | 0 .../6ab418b7-4cf5-47ee-b7da-adebab1275d5.html | 0 .../6ab834d2-3d62-4a38-9776-d1c76f9d5933.html | 0 .../6ac6a9a1-2eee-44a5-a130-f0379d70429a.html | 0 .../6ad371be-066d-4153-9004-82bbdec390a7.html | 0 .../6ad9da56-87d8-4ce8-a84b-f316541057c4.html | 0 .../6aede364-15f8-40c9-acba-7f2addf9e6c1.html | 0 .../6b366e3e-b5e3-4eec-8694-68c28f270e6e.html | 0 .../6b46c36b-6213-429a-810f-1bb2c7736302.html | 0 .../6b61ed70-afab-4ab3-b6db-e37a46f534d3.html | 0 .../6b85ea41-8f87-4645-a459-ef1a50658a08.html | 0 .../6b8732bc-e810-4f44-94e5-610f15ed855a.html | 0 .../6ba4e212-5e20-4fae-b2f7-4257515c8ff6.html | 0 .../6bb97f58-9f2b-4b1b-94a2-e40c0d650057.html | 0 .../6bbd0eed-484c-475b-a982-9d198e992503.html | 0 .../6bc39668-e9f0-4908-99bc-6df7962bf1d5.html | 0 .../6bd7c308-1e33-43ca-a1ca-0b30b1e1d717.html | 0 .../6bd8d368-85f0-4575-816f-2a2fee8733be.html | 0 .../6bed8a09-e693-4d37-a0c5-9b30ca9af4fb.html | 0 .../6bf27381-600c-4290-9ab7-4dace79f9a1a.html | 0 .../6bf8cd8b-9a2a-4e83-97be-1f20e6805ef5.html | 0 .../6c0e081d-d15d-418c-b5ba-66d569dee771.html | 0 .../6c1dd6bf-bb7d-4b1d-b4aa-bd3ee8e32561.html | 0 .../6c1f5b51-7b83-4ffe-8100-394bc2ba1af4.html | 0 .../6c213a37-e876-49bc-ae8b-2e0b834a966e.html | 0 .../6c3b3cc6-2460-4491-a59f-f8b856ab913d.html | 0 .../6c608ea2-5ea7-4020-a69b-8ed5000ed8fa.html | 0 .../6c64605f-1709-4edb-be3a-4248038fbb74.html | 0 .../6c68a2db-189a-4dc0-9466-d5efa36d1cfe.html | 0 .../6c6b1064-2110-4553-9221-aa9679b7cd38.html | 0 .../6c9e515a-c5bd-4cc8-aa9f-ce89ebdc07be.html | 0 .../6cb10b21-8b2a-4d0f-9b88-aa241392b558.html | 0 .../6cb2101d-2f1c-45ce-abf3-fd714d3af917.html | 0 .../6cbf4281-6f83-4819-9a3c-6a3674e93d69.html | 0 .../6cc1f174-95c1-4762-8427-a0d4d33164a9.html | 0 .../6cd4bf4c-b973-4b4c-8047-1887915613f7.html | 0 .../6d0662f3-888a-49e6-b442-f4adb699422f.html | 0 .../6d278b51-8fa1-4743-8c60-12a06b6a151c.html | 0 .../6d34d8ce-5844-44c1-afd1-757658bb35fa.html | 0 .../6d5566d8-8091-4d98-86a5-867d4e4e0321.html | 0 .../6d5a3748-1ea4-4006-a54e-3089ebc71a0a.html | 0 .../6d95dcd1-46dd-4f50-bf6f-6d3157880e00.html | 0 .../6db11900-8df2-4470-a9ec-d2b5227c0006.html | 0 .../6dd4953b-bf48-4cb8-a6a6-3892cce9a71a.html | 0 .../6e3fc856-abcf-464e-8cc6-b9721c14546c.html | 0 .../6e631512-fb58-4090-8b43-28dfb876195b.html | 0 .../6e929f69-49dc-48cf-b56e-a14e777e08c8.html | 0 .../6eab3eb6-63db-4ce5-8d62-1ec109e1af5a.html | 0 .../6ed41abb-3221-4e00-8ff4-f5a58e1bf48c.html | 0 .../6ed511fb-2baa-4e2d-801d-0427de329539.html | 0 .../6edcd82b-2a93-4809-b47a-cce947b30804.html | 0 .../6ee002a3-10f4-479a-97f6-68daa08c9537.html | 0 .../6f3998ab-fb52-4c29-863e-e6594c656429.html | 0 .../6f493ee8-40dd-41fa-8675-150396039460.html | 0 .../6f53848e-7e6e-4f33-9588-e45d0870b5e4.html | 0 .../6f6d45c7-77b8-4926-a6c6-7485424e2c6b.html | 0 .../6f8b51d9-d2c2-4fbc-a1dd-320f41e1a1e7.html | 0 .../6f8e8e3d-cbe0-4640-a85a-a534cdbe4d30.html | 0 .../6fb27709-1cba-46cf-b8b0-650da61df1da.html | 0 .../6fdde70b-56d7-4d56-aab8-e9ef5b709a07.html | 0 .../6fedf950-cd3a-481e-b369-d0fa31fba1c5.html | 0 .../6fef4564-1aa9-476e-b331-51effa976ce3.html | 0 .../6ff04e69-e3be-4b73-99f2-226b2725c5c0.html | 0 .../7001c336-b3a9-4249-ae15-7a32de318b25.html | 0 .../701b4b28-c5e4-4858-bca6-e17de4f630f9.html | 0 .../701f1e90-b54c-42b4-ae19-f9499fb215ec.html | 0 .../70636f99-f3b2-496f-8898-974fd1c310ec.html | 0 .../707083f7-04bb-4deb-b314-f0c586fc3b73.html | 0 .../7079edb5-c00f-4029-b4be-cef1f200963d.html | 0 .../7081a0e5-899d-4ee3-a95f-69443e8a6d86.html | 0 .../7084e2b6-86bd-4e74-a875-ca21a34abb3a.html | 0 .../709db0aa-e0ea-4f4e-b76a-214d80431c20.html | 0 .../70b04c25-d8c8-4476-b490-fbb20cef0949.html | 0 .../70bd6c46-1a7f-4c66-bb8d-bf420983f38e.html | 0 .../70cb05f9-42ad-4aa0-8f75-f7980936f0b9.html | 0 .../70cb470d-4a58-4bd2-8e9d-dd78a2ca3501.html | 0 .../70d8613a-72d4-4730-9fbd-ed6941aa2ca1.html | 0 .../70fc02e4-a115-4983-8cd8-b147d5530790.html | 0 .../710d4039-2c05-482d-985b-7412f03bcc32.html | 0 .../7131508b-110f-41ba-b1e1-d1d8ded7a734.html | 0 .../71376460-4cbb-4a29-92e3-441429820e3c.html | 0 .../713ed22f-7233-437d-9f28-40944a404015.html | 0 .../717adc1d-6835-475a-a673-b39029774b63.html | 0 .../717e08d7-ed19-4058-9eca-43f0905b65c7.html | 0 .../718509f5-0feb-4613-a1e9-9813ad913264.html | 0 .../71aa7cb4-10c1-43b0-9367-18c55681afd1.html | 0 .../71c2ca3e-13e1-4250-b710-510b8dc828d1.html | 0 .../720b6fa8-bc18-4c09-aaa3-7cd420a3b499.html | 0 .../725e6855-b53e-4305-a57d-594f2acfe6a7.html | 0 .../725e737b-c7a5-44bc-9a24-a88e6226a23a.html | 0 .../729165ac-9da9-487e-8024-702707a378b6.html | 0 .../72c10b89-ed4d-4acc-be6d-a20bc4ead7c3.html | 0 .../72cb33d7-ee4e-4639-b379-b4504f669d46.html | 0 .../72d1117b-0bd3-4b59-a5c9-7c7ad206b6f3.html | 0 .../72d26a30-82bc-459e-a675-97e8f2689f97.html | 0 .../72d66006-86f1-4138-9fea-9b72fa4e33b1.html | 0 .../72e3422f-6c8d-4b95-b650-8c34703f5583.html | 0 .../72f28dd5-3a76-47f0-a212-cfd189319d7e.html | 0 .../730dd1d3-a655-4daa-ac09-68abdb42cafc.html | 0 .../732a917d-fa49-40d0-bb6b-eef450e60190.html | 0 .../732b639b-3051-4a43-8528-56a6dc66cb44.html | 0 .../7335324b-58de-4b12-9687-0a59d26ff1df.html | 0 .../7399e9d0-1e94-4627-861a-990847438f11.html | 0 .../73a93f0b-43ad-4fd8-94d1-127f1125687a.html | 0 .../73bf18be-d84e-4f42-869b-b2896c9ae3bb.html | 0 .../73cc7c75-0d7e-431c-9d2f-9556e999fb9c.html | 0 .../7407beea-9249-47e1-81d1-e8335874febe.html | 0 .../74120c32-2eee-4774-81d7-37c14407212e.html | 0 .../741ff466-a6be-40c7-bd90-b80f714f6b2c.html | 0 .../743a7c0c-1db4-4096-ad2e-c52e393227f4.html | 0 .../743d46b7-3986-4411-a82f-aa6969186bbd.html | 0 .../7467cbdb-2ac6-4045-b3f5-92b0999cfe26.html | 0 .../74b651ca-639f-4ee1-a4a6-d38726ea3a8f.html | 0 .../74ef1492-b574-428d-8f50-2ce657bf5651.html | 0 .../74f653b7-40c4-4f24-8b8f-c13ca74cb351.html | 0 .../753447f1-58ff-4397-8677-d866a90f1499.html | 0 .../754b33f4-7229-4952-a59b-e9e6109f9ba9.html | 0 .../755c04c1-9edd-4224-85cf-9fbb3ac6c53a.html | 0 .../75822214-6b54-4e95-944f-2c0c91170dec.html | 0 .../7598b9b6-def2-4779-9078-37c859f4d1ed.html | 0 .../75a40da8-e65b-41de-8f1b-9d139a3d9bf0.html | 0 .../75b54088-1aa1-4190-a044-08883017e1fa.html | 0 .../75baa641-27d2-44c9-84b5-8b210d7b5094.html | 0 .../75c61e2e-f7e3-4f12-831f-48881a9a562b.html | 0 .../75fdfd12-c2ff-48c8-bca9-52d14b7f5bc5.html | 0 .../75fe2825-a60b-401e-8d75-69a2ddf9ae45.html | 0 .../760de84f-076f-4a5b-b787-896f25ba1c9b.html | 0 .../7623aa53-79c8-4f75-9cca-261f7fb4f0e0.html | 0 .../76640611-9309-4964-a6c2-8315374e5dd0.html | 0 .../76940a26-0a0a-4949-b724-d62c791afdae.html | 0 .../769b071a-9ca0-4bbb-bb8f-e95449cf23fa.html | 0 .../76a3d5fb-4604-4999-9e91-816be2b61dfe.html | 0 .../76d5aee5-22d5-4bde-b425-3dbf2bbf1c1e.html | 0 .../76ed6aea-cb02-436b-8962-e5c453fd24e2.html | 0 .../7732504b-e92a-478c-a845-ed46374feea2.html | 0 .../77444a80-6a6b-44f3-803c-f4716681f120.html | 0 .../77603d1a-a21b-431f-a00b-2953a0517032.html | 0 .../7785afdb-ce0a-499c-9b74-935f60911fc4.html | 0 .../778b919c-a317-4fa7-91a9-99b147a562ff.html | 0 .../7792aa6a-8081-4b61-95d4-60f5227a082e.html | 0 .../77c269e6-0ac7-44d7-9a32-6860d00ca53a.html | 0 .../77ddda3f-a034-438e-bd27-313608cedda4.html | 0 .../780c1f05-7119-4ea0-a208-83fed7c01ed4.html | 0 .../782e72a8-48d9-4aeb-8d4c-6334a9454983.html | 0 .../78449488-ccec-410f-b944-253bc1fbf18c.html | 0 .../784b4f86-5b88-4dda-8e06-a7d24ac80672.html | 0 .../786a73f8-1a22-4b74-b869-8b2403004165.html | 0 .../786f9c4e-96a9-4960-981b-157b1f95c3a6.html | 0 .../787d92a5-21e9-4525-9df7-9051432d982d.html | 0 .../787dbc66-9d6d-4936-baf5-3e7c12c29df3.html | 0 .../78954c05-f523-4038-87b1-74f611aaa8b8.html | 0 .../78af6847-9f85-46d6-a683-97069b09d685.html | 0 .../78b7ff71-cd35-4468-bff8-1c61ed30a5fb.html | 0 .../792158df-e3e0-456a-8fbb-aa916c5b4c6b.html | 0 .../79267d6b-c452-4aa4-af7c-c99bd4af0b3e.html | 0 .../792d2478-d878-4793-a21d-53d79c7e0564.html | 0 .../7939b041-4fea-4550-96c8-a0f702c5b8f8.html | 0 .../795ef5cc-a823-4f5a-86d3-bc55944dd3bf.html | 0 .../79696b51-5b80-4bad-876c-c4cb64d30c46.html | 0 .../798580da-06fe-4beb-b654-73701e3e6e11.html | 0 .../79b7c720-2536-4bd4-9713-a848894888e9.html | 0 .../79c4c504-de72-49ee-b702-09b1c83a53ed.html | 0 .../79d3ed6d-8953-43a0-b88f-dda39a503517.html | 0 .../79ec60c5-e4aa-414f-80b8-114f0409e546.html | 0 .../7a466117-f71f-4522-8902-a4542173fcd5.html | 0 .../7a4834c3-d53c-4886-ac3d-076424e4bafd.html | 0 .../7a4b78ec-d809-4452-b9de-40610cbef645.html | 0 .../7a5e5e6e-1304-49f7-92c3-7acac4187ec5.html | 0 .../7a6be3a4-6d13-470f-ab49-8a132d230bb1.html | 0 .../7a861750-9066-441d-a2be-f0c66550b493.html | 0 .../7a998687-9edf-462d-a83e-ec1389ea0e0a.html | 0 .../7a99f005-a6d1-4e0b-a656-9759e38b8b59.html | 0 .../7a9bcd48-5c9f-44b8-ab4c-6e60162a7aef.html | 0 .../7a9cd837-bd0f-45cd-bf41-ddd6df04e47b.html | 0 .../7aa63544-c4b4-4e29-8c24-dc9f678da57d.html | 0 .../7aac0914-8b30-404f-855f-f641c58aed5a.html | 0 .../7ad4173b-075c-472f-8dbb-e13a050c696a.html | 0 .../7ad8d2bb-4481-4551-ac00-6007e2a6d073.html | 0 .../7b0613c4-07be-4a38-98e0-41a390fc1db6.html | 0 .../7b0777e5-97f6-4122-81dd-9069813b9139.html | 0 .../7b3be635-e9d9-45af-90e6-7d2f6b3c48b2.html | 0 .../7b5a460b-5565-43af-9925-9837f5f6afc5.html | 0 .../7b674efe-743b-4a05-b299-fb035bc3e12b.html | 0 .../7b84db37-a615-4869-bfa9-0d38dc511be2.html | 0 .../7b86e9b9-613c-49d1-8a82-e553ca7b125c.html | 0 .../7b98f288-adac-484f-b219-0d7df8ca0dd8.html | 0 .../7ba5f2f4-db75-4ba2-943e-5e316a142acc.html | 0 .../7bb2ffd6-202d-4a56-8ea9-ddd2a351d89b.html | 0 .../7bb5b921-78da-4b09-8d87-50c89de1dc02.html | 0 .../7bb75f26-97a9-4af4-a298-5c4cc43d0c31.html | 0 .../7bbedf1a-fef5-414a-926e-6e2a0591a7d5.html | 0 .../7bcabbd9-3762-481a-9c4a-06967992ebba.html | 0 .../7bcdc0fc-704e-4156-8719-16631355b5bb.html | 0 .../7bdf966b-1fc1-487d-a552-b120cda9c246.html | 0 .../7bf0eb8f-15a3-4b46-9407-08902dd2f8bc.html | 0 .../7c05cca0-d1c6-450f-a1e7-a84973e7208f.html | 0 .../7c3bfdc7-d991-4421-9c79-6e7b608d6620.html | 0 .../7c479aa5-f2f3-4ff6-bc3f-831d3f70fdee.html | 0 .../7c62c9d7-2a12-42e4-87aa-08c58e785228.html | 0 .../7cb08c6a-1a26-4634-ad7f-497de8508e9f.html | 0 .../7cb6ccd9-b690-4455-b043-fdc14e6c4ab6.html | 0 .../7cf0999c-4c6a-4743-a036-3db22509e409.html | 0 .../7cf572bb-d827-45d2-a3eb-b825b32420b8.html | 0 .../7d53a85e-1096-4124-93d5-033bbdd23f36.html | 0 .../7d8b2e58-5361-4a6c-8219-fe3d9737bf8b.html | 0 .../7de41c03-81c5-428d-aa85-758c6baff37c.html | 0 .../7e2d281b-de44-40bd-9a2f-94b3a031abc5.html | 0 .../7e3c13be-ced6-4b99-b5e3-68558192d5b1.html | 0 .../7e6a522c-03cf-465c-b96e-77f40258cecb.html | 0 .../7e9ad6d7-6488-4308-94b0-5f69512dd4b0.html | 0 .../7e9aef2b-5ff2-4df1-8a95-b786ec487ca0.html | 0 .../7ebd3731-fcdd-4d74-8f37-ddfc03d2ae89.html | 0 .../7ee4f379-36e6-4c62-b628-2c217c6e14f4.html | 0 .../7f066eaa-8f13-42e6-93fc-5bdd2fafa513.html | 0 .../7f19db87-48d0-4423-a361-c331697e8b02.html | 0 .../7f7acd56-3325-4443-a7da-8f47af0a729a.html | 0 .../7f908501-48d8-4ea9-afa4-04eb90baffb8.html | 0 .../7fccef99-2f26-4f8f-a0da-aae4f4502fc6.html | 0 .../7feeecce-1a55-4405-9f71-76bafb994de5.html | 0 .../80455dce-a7bb-4180-8f29-87ccd171fa98.html | 0 .../805c1096-a96c-4993-935d-8121445b7d40.html | 0 .../8060987a-13cb-4544-a309-6653f4db997a.html | 0 .../807e037f-0729-440d-a898-a938092d7058.html | 0 .../808cdec8-47b6-4b8e-95be-12a129498ebe.html | 0 .../80956356-4ea6-4356-a437-b0fa73e7e6d6.html | 0 .../809b1ccd-04ab-4e20-a026-594981cee164.html | 0 .../80a78905-abcf-4737-bfbd-416619634a06.html | 0 .../80c87a8f-ec39-45c2-8631-8ad9380b9979.html | 0 .../80df8c88-7e2b-4ef8-801f-1acb7712e6ad.html | 0 .../80e63175-a800-4ffc-af40-fbd426b5b79e.html | 0 .../80e67490-1522-4d22-a725-7d79623dc635.html | 0 .../80ec529a-94d3-422c-82d6-13809d5d02f8.html | 0 .../81013ace-64ce-4eef-847b-b99586ef799c.html | 0 .../81078e50-6e20-4cc8-b3ae-6827fe40f341.html | 0 .../81367423-4165-4495-8632-a53d984b1a94.html | 0 .../813e6bbe-7698-421a-82f2-a346c71cbe83.html | 0 .../814c2e3a-b7c6-455b-a166-bf7f54778022.html | 0 .../8161692a-a922-4881-8b8e-c44b1e529fe3.html | 0 .../819e1f33-ce6c-48c4-a75f-209ef2e245ad.html | 0 .../81aae19a-d61c-40fd-970f-df500dc6d0ef.html | 0 .../81c666da-32ca-4b39-953d-68cf252847ca.html | 0 .../81d6be25-ff91-4c42-b895-2a3ea9fef5cd.html | 0 .../81e54fb2-cb70-4c20-94fd-86987d35eed1.html | 0 .../81e5c11e-e050-4932-8134-577ce1adfdc0.html | 0 .../81e5c995-25a8-45f7-872f-8c73c16a4416.html | 0 .../81f3a567-fc87-46fa-b868-2452e0b9b499.html | 0 .../81fa20df-31d9-45cc-9d85-dd181273c4d3.html | 0 .../81fd6800-7287-4ef0-8717-57943bee3168.html | 0 .../823f0fce-d895-4465-b558-b83ee014b6c1.html | 0 .../824dcb4c-e91d-46ca-9588-cf5a7d8b2f24.html | 0 .../825529fd-b67a-46b7-89b2-96bb5cf52f76.html | 0 .../825a2f6b-3e57-4ddc-94ce-cade4366c261.html | 0 .../825fa90c-b7c3-4591-8c70-f5033b6efa1d.html | 0 .../826957c7-0543-4e5b-89ea-37752e535265.html | 0 .../826d14a6-6913-431b-9f07-d7b64ea9d48e.html | 0 .../8285521f-dfab-4ef4-8a88-dde1cf197c43.html | 0 .../82b77d59-719c-4901-af9e-f9aacb38ef55.html | 0 .../82e2ad3e-f802-4fef-8267-1dfc71f8cb77.html | 0 .../82fb2b67-cdab-45e3-9e93-251e551abd01.html | 0 .../8309ed90-6391-4fd5-bc55-e3957d90e2d8.html | 0 .../8315d59d-8040-47e9-9817-b80d6ae70dd4.html | 0 .../8347ae1b-ab39-42c3-b126-b005f2ef8068.html | 0 .../834f3a28-4c91-4ec1-a33c-8d084114cd66.html | 0 .../8368b01e-4272-4cc1-977f-be3ca9f3c3af.html | 0 .../836ef196-86af-456c-b2ac-a1f85391d84b.html | 0 .../83762849-58fe-4f46-8af4-741af08cd82f.html | 0 .../841db655-228d-4ccc-8efb-fcbb60b54049.html | 0 .../84208203-83bd-4690-9e0f-86fc05411a18.html | 0 .../842357da-4642-416e-a37d-ebe3764b206b.html | 0 .../8441fe4b-7bdc-4f4b-9797-92a69ea79d40.html | 0 .../845af5e9-0104-41da-8bd7-21464a22affd.html | 0 .../8497373e-9286-4ad7-9659-0cece9a886d6.html | 0 .../84a257ab-2190-4bdf-91ea-f77632c83f39.html | 0 .../84e6a41b-65c5-480e-a591-2544fcaeb60f.html | 0 .../84fcd39f-26fa-4b1a-8b2f-f9e6fa3061ea.html | 0 .../8506003c-ee4a-4318-bef9-841e980b8315.html | 0 .../8543921d-5cd3-4135-8b9d-365e9531a212.html | 0 .../8562dd50-4b39-4b5c-94df-884e97a2f482.html | 0 .../856edaaa-0a0b-49d4-8f70-71ecc25c1477.html | 0 .../856fe98e-5370-4d46-b5d1-8bc406b90a22.html | 0 .../859081c4-c5ea-4867-af65-fb1387ca1b78.html | 0 .../85ae5af9-347c-495e-8182-22f607694a13.html | 0 .../85c29c72-4bfe-4a15-b46e-7047980cc274.html | 0 .../85ee6177-9c02-4aa5-9763-2a7cd112f64a.html | 0 .../861af0b2-5737-44c1-b86e-3780fd400d00.html | 0 .../86247d00-e214-4bd1-bb67-c38297098d7f.html | 0 .../8630160d-c84a-49c1-84ed-a42663e079f3.html | 0 .../86447c5b-d428-48ab-aef0-c0683826c184.html | 0 .../8667b9f9-013f-461d-b3bd-6d2fddd4865c.html | 0 .../86741569-fea8-4655-954b-4c2d718b61c9.html | 0 .../8683dfdd-7231-4ff3-9f82-dc4149590e83.html | 0 .../86af082c-5425-4181-a2a9-59d5ee14abbb.html | 0 .../86bd5052-c048-4a38-a582-582af93edec7.html | 0 .../86cac03f-124b-42b9-84a0-fc059458bfeb.html | 0 .../86d1b2be-1a87-4a42-a8c1-0896a6ab1ebd.html | 0 .../86f188c1-97fd-4fe5-b4b4-e6816f56ab6a.html | 0 .../870de64e-552c-4946-978b-7500f8928858.html | 0 .../875149ca-d1a5-41d9-a556-cc893ba56c2b.html | 0 .../87814675-e0b1-4633-8eaf-dc1be9576cac.html | 0 .../8793d284-828b-49df-9b49-689094a71a11.html | 0 .../87c548d5-dd47-432a-beea-eb3b9222faff.html | 0 .../87cb2873-d1c0-430e-9289-4e227224ecc5.html | 0 .../87d4512e-fa17-454c-bc03-c94b2f1c5933.html | 0 .../87d81775-d18f-4ded-ad98-62d358d75abb.html | 0 .../87eaf295-c646-4071-8a1f-94e30f03c94a.html | 0 .../87ef8cbd-e3da-4c73-8c17-a433d3874881.html | 0 .../8828357a-60e3-4e04-9a6c-ae350935036c.html | 0 .../8828de28-5ca8-4b67-addf-578c8a3e3ce9.html | 0 .../88465e9c-c9a5-45e7-9d21-9b6e3f68643b.html | 0 .../8857d1f2-28c7-4472-b86b-49841518a886.html | 0 .../8888ea72-ddec-48ac-b0cf-5191ac1f4907.html | 0 .../8889e311-8a48-4715-a786-993ed08727f8.html | 0 .../888a162b-595f-4ec5-9766-f9dad395faa5.html | 0 .../8894c03c-a8f0-478a-8c0c-0f2c05515182.html | 0 .../88bd4073-37c3-42a7-ab43-2bdc31cdcf90.html | 0 .../88c7834c-7ef3-414f-a937-721d9da900ec.html | 0 .../8902aa9d-08b9-42ca-bbe6-5af94f28006f.html | 0 .../89079f28-cb67-47da-aae4-62de1b9d458e.html | 0 .../891ecfb4-3f1d-4284-8a9d-b1eb6d54b3e8.html | 0 .../891f26c2-a2dc-4d83-9c40-c181bd0cf03e.html | 0 .../89285df5-0cda-477f-b728-cc0df13a2b94.html | 0 .../89322ae2-63c5-4d86-b85d-43c8f31c7663.html | 0 .../8947a986-0eb6-455d-a0c2-bf591386c7a2.html | 0 .../895db6df-444a-4c05-a108-c75d4fefb13d.html | 0 .../897904a0-8908-4fb4-9d57-0a5d351a2e1b.html | 0 .../89b08627-572e-4de3-a6ad-c06763c7187f.html | 0 .../89b268f6-4b7c-496d-9105-0179d9cfd5cc.html | 0 .../89c6d18e-2520-4f45-9491-2e06df7a111e.html | 0 .../8a034075-2434-46eb-956c-de96bc9f0a1c.html | 0 .../8a12d7c8-d8b9-43bf-85bf-70f63adae291.html | 0 .../8a1f9b9b-e921-4151-99fb-3be622d78dc8.html | 0 .../8a20a68b-0efe-4a8c-99b3-7392fac45bfa.html | 0 .../8a2c30e2-8a0f-405c-a845-be7647db431b.html | 0 .../8a5afee5-57d3-4754-b5e4-b7fc05a2e371.html | 0 .../8a61eb2f-1855-443a-8721-eeedeac3539e.html | 0 .../8a8655d0-94a8-44e8-90e8-f314837da334.html | 0 .../8a8e1f4e-9b48-486b-bee9-82b630780ca7.html | 0 .../8ab3499e-6282-48b0-a762-148c61832653.html | 0 .../8add3e54-7cbb-44ea-9b84-0d9f4f032782.html | 0 .../8aebd491-cc9b-48e0-9db5-ff2471f7f164.html | 0 .../8aede6db-a131-4600-8d56-416d816e8bd0.html | 0 .../8b0d8d09-4055-4a8d-a9d7-1866d9253592.html | 0 .../8b248485-df7a-4efd-bdd1-b3f1cafd92bb.html | 0 .../8b4fa802-3aa8-4302-a18a-ddb8df771d1e.html | 0 .../8b6ec273-ba28-44bc-81af-8bd15350549e.html | 0 .../8baf539d-65e5-44d8-a8ec-c1753aa289dc.html | 0 .../8bb3d6ae-a2e2-4364-a353-bfb9e5c876a2.html | 0 .../8bc284bd-2e13-4889-819a-dea81e2140a6.html | 0 .../8bc7e39a-cb68-4da4-97e9-a180cccfc1c7.html | 0 .../8bfe9437-ba1f-4683-817e-037ed595d10d.html | 0 .../8c062917-7faa-47ee-a1e9-58dc87f09283.html | 0 .../8c23583e-9138-4d37-872e-db7a8bca85ee.html | 0 .../8c2df815-1faa-4972-87e1-d3fd3bfc9d09.html | 0 .../8c37908d-bfa6-4003-93aa-0d57d0e95a3e.html | 0 .../8c3a6edc-708b-4911-8232-a77a1ba965be.html | 0 .../8c480ce8-acb2-40bf-9281-de37ee5db87e.html | 0 .../8c837b6f-1422-49a8-913d-67481f6f21f4.html | 0 .../8ca79c0f-fe24-4196-86a1-c4014fd5639c.html | 0 .../8ccf579e-d069-48df-ae93-fa669dbf02cc.html | 0 .../8cd92c8c-6378-4940-912b-0ae70583521e.html | 0 .../8cdd4a94-8214-49b1-9be4-3cac2b8f7dc8.html | 0 .../8d04b6b4-b2ae-4d83-b250-3251b02c6fd7.html | 0 .../8d243eb3-9205-4b50-a653-c53c0479adb6.html | 0 .../8d407704-0b48-4dac-b6c6-747af7c9a130.html | 0 .../8d82b6cb-1828-483b-a09e-74cc03d483e4.html | 0 .../8ddc515a-8dab-4a37-ac0b-5a959a23626c.html | 0 .../8e2097aa-4424-498e-9176-b3ac526c81db.html | 0 .../8e260166-5c34-4450-aa0c-054e224a265b.html | 0 .../8e3faeb2-f38f-44d3-9c37-f7471de50c69.html | 0 .../8e47a8f1-e72a-4fd3-8ec2-d2cc26c49a30.html | 0 .../8e5b42ff-d5a0-40f8-88c5-25f0464464d9.html | 0 .../8e631974-3ff4-4342-a629-6e90852018c6.html | 0 .../8e696b51-47f5-44eb-83be-ba4bf68e3570.html | 0 .../8e9544b5-77bb-4204-9220-537d219df1c4.html | 0 .../8eab5c07-9306-4202-91fb-3eff46b80620.html | 0 .../8eb71372-f9bc-4787-931f-0166c46d6651.html | 0 .../8ebd66ae-d314-4595-b57f-62019a6610a4.html | 0 .../8ecf49d9-97a1-4a05-a48f-29f102bedeb3.html | 0 .../8ed97981-581b-4787-bda0-10856b9ff86d.html | 0 .../8edb1e15-1f80-4432-b012-6cd4383b0742.html | 0 .../8efef66e-1ebc-4d44-b316-5e1536d196b6.html | 0 .../8f1ad1e6-ed79-4056-ab53-58101323fdef.html | 0 .../8f370c8d-3cf6-4612-9bb0-3cc9143e01c2.html | 0 .../8f3757d6-f764-4aa9-a2da-2d8ffc0ac2ef.html | 0 .../8f5cc296-f020-4d06-b9b6-1d19b180df37.html | 0 .../8f616a60-ee38-4ad4-a667-23dc795fd08c.html | 0 .../8f7541c4-57d1-4d1d-accb-1dade7a77712.html | 0 .../8f86a80a-69f2-4d96-8d67-a25101b7f7e6.html | 0 .../8fbcdc5c-73fe-4af1-be8d-e9a54ec44421.html | 0 .../8fd0bf88-0450-4c34-951b-c71513a9769d.html | 0 .../8fd943f2-df4c-43e0-b6fe-6233578c6b5d.html | 0 .../8fe2f5da-bf26-4273-b8f5-d3bc99f05872.html | 0 .../8ff97e17-eed8-4498-9a4c-4cf76d7c794c.html | 0 .../9002e88d-287d-48b8-8975-4bb9ff3ae541.html | 0 .../90205bbb-917d-4493-ab55-b19397a48dac.html | 0 .../90344fd2-fce2-4dbc-8d07-c5fd0e867a1e.html | 0 .../90512fae-0b56-4b33-a318-fc9156bc4c91.html | 0 .../9055fc04-6a25-4f37-95e4-693436b0ac3d.html | 0 .../9078a5a0-4ac8-4743-8320-2336f1daa7ec.html | 0 .../9080b3f0-fce4-4942-bc38-8f016368656c.html | 0 .../90a8511a-8400-4d9e-9239-cdf7fc08b2df.html | 0 .../90ab50ac-9b2c-44f2-b006-f2e9bb61d2db.html | 0 .../90bebc78-52f6-443c-aa16-af04152bd363.html | 0 .../90f3e4ec-21de-4424-ab8b-d443a3f31c71.html | 0 .../90f81a61-6704-44ae-9a20-4dda3cea0f81.html | 0 .../90f969aa-7624-404e-91d1-fdc7ed35173c.html | 0 .../90fbf985-bd22-4ff6-a6b6-568e9803b1ef.html | 0 .../91053a51-ab88-40c9-8fee-f6d898a435b4.html | 0 .../910a7fda-4a0d-4369-82ef-719894e26b1a.html | 0 .../91131194-7933-4e13-9251-d0f85a7456da.html | 0 .../9116224f-3b3c-421b-b76d-997f398385e5.html | 0 .../911d8714-6713-48a8-bd61-42164c17a499.html | 0 .../91221919-e9ee-41cd-b6f9-1639d64bb8f2.html | 0 .../913f4172-4594-4942-864b-4b3d5ff446bf.html | 0 .../9151983b-f166-4e82-a9a4-472ffc4b68b8.html | 0 .../916c10b9-7547-4d25-9214-e29cb701d4ff.html | 0 .../9170a200-f388-46cb-bcf2-59018ffded31.html | 0 .../917feb22-21b0-44c6-a359-50277c3837a4.html | 0 .../91882d66-658c-41f1-a991-351a04976417.html | 0 .../919d5882-8da0-4765-aefa-0a44d1d6dff7.html | 0 .../91b85673-be4c-470d-b13a-871599fbae5d.html | 0 .../91f9731d-e8aa-4043-9bbc-49a731e206a2.html | 0 .../92103a9e-255b-4a08-b410-bdf26a408d3f.html | 0 .../9218c53b-cbc4-4566-a950-251b2f2095f8.html | 0 .../9239bc4d-1345-44d7-a485-cf2e30dc1fe8.html | 0 .../923bedf8-9db4-4b5f-aee8-fcacfdf53363.html | 0 .../926229d3-2446-4de8-827e-c3ac6a16d6cd.html | 0 .../9270c500-7696-464f-b09f-0bdb4686a6bd.html | 0 .../92a853f7-3860-42b7-9e31-69ae0822013f.html | 0 .../92ab9581-b3dc-496e-9441-839e7ce207f3.html | 0 .../92efdc9d-b6f0-43d0-8ab8-ede0a7b0414d.html | 0 .../92f27a6f-e836-4b11-b8d4-6a22a4987596.html | 0 .../9316b64b-a367-4dae-bdab-8e9edb9327a5.html | 0 .../933dc857-b8c2-470d-ae6c-03d18b4d0207.html | 0 .../934f7dba-b0b7-448c-a71e-4c4c0e56dcc3.html | 0 .../93a1ba76-cc9f-4bf3-b5d6-b49fa898a8ea.html | 0 .../93af6756-1e23-4ee1-9eca-d7538da0a436.html | 0 .../93c2b53f-136b-40d7-8214-e73d16d34939.html | 0 .../93c97900-c35b-4094-a94e-1601d21c7424.html | 0 .../93ccfdb3-4fe2-4e9a-8883-fcff1ecceba9.html | 0 .../93de2fb3-2390-4566-a8d4-13cc5316ba44.html | 0 .../93e5531f-8885-46b9-9199-336b92165190.html | 0 .../93fba3aa-0c5f-4836-87dd-e667dadd5d06.html | 0 .../9410c242-8321-4841-b05c-473ea39d30bc.html | 0 .../941b3515-5aad-4ae0-aefd-10a6e16df4e8.html | 0 .../942bbac4-713b-4726-b184-3790fddf9926.html | 0 .../9437a537-d998-45ad-b439-fc5d11b3bd99.html | 0 .../94683288-52bd-4031-b8f9-8a23eeb8cf46.html | 0 .../946e45cf-aab3-4a21-98d1-ba659e6ec177.html | 0 .../9488520a-da5c-49a7-88bb-c22056f33a8b.html | 0 .../9490ac39-6f0f-46de-baea-33997f01d05b.html | 0 .../94a5121f-c9d2-46e6-878e-94407917f9b7.html | 0 .../94a77d36-5893-46cb-a498-981c8cb65d03.html | 0 .../94b22aab-f0f0-44ba-870a-8de895a5ba78.html | 0 .../94fd2291-2c4a-4edb-9de4-b8a83d885333.html | 0 .../95070291-832f-48cd-8645-fd00c173ac3d.html | 0 .../95216d5e-44fd-4c46-a970-fd7af9398838.html | 0 .../9575fa8a-be55-4965-9d26-65eeac46958d.html | 0 .../9584d012-2f78-4d53-92c3-9198de3b73ba.html | 0 .../959de485-7dc8-4f10-bb12-c812bf827413.html | 0 .../95ae001e-9c6b-48f1-b7ba-358bafc7b26d.html | 0 .../95be64dc-e95b-4585-8079-46c1463668bc.html | 0 .../95ebfda3-427f-4a5a-90b2-74213cf48235.html | 0 .../964ecf20-76ec-4dbb-ad9e-449db209eb5f.html | 0 .../965e520c-836a-4e89-8325-62ed13dcd0ed.html | 0 .../9661d872-eaed-4537-ade3-dcaf899063ec.html | 0 .../966d8f81-d2ee-4dcd-bc52-e7f2f6d9724d.html | 0 .../968d2d0e-f085-4df1-ab38-3bba78c51f34.html | 0 .../96980ee5-6d70-424d-9141-88387ebe2397.html | 0 .../96a2b54f-4e32-4684-9fef-8db7962f0eec.html | 0 .../96b64ca4-ea7f-48e7-8bad-82e0c05faf46.html | 0 .../96deddfa-77a6-4fcb-bd42-3a529cd58562.html | 0 .../96f86301-9eee-4426-83a8-92e3e0dff8f3.html | 0 .../97126d22-f3a3-4566-894e-944526b2ad88.html | 0 .../972ed3af-c0f4-4829-9c26-adf6ff9889da.html | 0 .../97824d55-3bd8-4c73-ac41-3543b5891b04.html | 0 .../9797d84a-1b72-44fc-87d3-191e774069d4.html | 0 .../97ac092d-38d5-4032-9955-f6025d166ddc.html | 0 .../97ac9884-8bb0-4516-a850-5744b91173fa.html | 0 .../97b68dc0-cea2-4fa7-b171-61bc85dd0ab6.html | 0 .../97bee671-474e-49bf-ab85-6fd7e91e709b.html | 0 .../97e45705-4d94-4047-9007-fd7c4911547d.html | 0 .../97ffcefb-513c-4146-845e-2a321676292b.html | 0 .../9834e17e-7654-46b5-ba73-c1f31fa69a3d.html | 0 .../984de1d8-ab3f-4b44-9313-795b32c78f71.html | 0 .../98704f9f-98c5-4e63-b5df-5d47fe79b16a.html | 0 .../9878f364-c695-4f38-9464-588ebcdb322a.html | 0 .../988b328c-ddf6-4c52-9681-467e92b11989.html | 0 .../98ab18b1-1449-4aca-bcf9-19e9cafb59d8.html | 0 .../98dd4f14-a3d8-4fac-b13e-01fcaca8d9fd.html | 0 .../990a59e8-7860-4b32-9e70-b4535e10d2f8.html | 0 .../9931d758-d493-4bd2-90fd-222fc0dc306d.html | 0 .../99627bee-6595-48ec-9959-3ecf23cf1609.html | 0 .../997f3cab-0782-4c99-be6c-a1b807af2173.html | 0 .../9981ec9a-3b00-4fab-902c-0fd37bb48571.html | 0 .../998e602c-577c-4f2e-802e-da6323d46e90.html | 0 .../99ab2e1f-1b97-4e2b-9bde-243305d2e7e6.html | 0 .../99c1a4c6-3c53-409c-8dd6-a3cdced9db63.html | 0 .../99e746ea-5144-4263-8a0a-10f47db986da.html | 0 .../9a2dfb89-11b7-4485-b5ba-82c5ce168181.html | 0 .../9a648e24-ec5d-41bd-aa17-23d8628d8c01.html | 0 .../9a8868ec-1603-4f82-afa1-949ea27bcfc7.html | 0 .../9a9599ea-4f0b-482b-94d1-f7a93574e280.html | 0 .../9aaa61d3-8ca8-4706-94e5-40777ef2dd7c.html | 0 .../9aad3865-abcb-4d26-9cf3-00842d33b9e2.html | 0 .../9afee447-c517-4f62-8d75-05ad5a70bb92.html | 0 .../9b31f83a-1f0c-455a-a0e9-0a0b1146a477.html | 0 .../9b5e6151-627b-4a52-a054-cf69075dde36.html | 0 .../9bc03469-3937-4864-a0d3-7fed7c86f1c3.html | 0 .../9be259a5-d2a6-4b95-aece-3d51889e2551.html | 0 .../9c2c9618-db51-421a-b139-bb01ad96f379.html | 0 .../9c44dcd9-bc6a-4af5-be49-6758f4079d00.html | 0 .../9c60e61f-bbae-4875-b51d-6054f17248d0.html | 0 .../9c6f0bd5-bd4e-499c-beec-1e1a18705387.html | 0 .../9c7aecb5-e436-40f6-8916-d64bd8c53dac.html | 0 .../9c88e0da-2808-4350-8419-4c2b461904f0.html | 0 .../9cba9a8e-d592-4486-86e3-ad71ab6b651b.html | 0 .../9cbc7240-ac9d-4c4d-8fd1-8769fefe7cbf.html | 0 .../9cc492cb-ca90-4eee-afad-dc50658251b1.html | 0 .../9ce86356-833c-4dc7-b410-3652cbe2f23c.html | 0 .../9d26db8e-c802-4ccc-adbb-1c658d84bee7.html | 0 .../9d377cc0-8af4-4891-a51c-89a3df803f79.html | 0 .../9d3a917a-ad94-4b61-a7a8-106d4c164755.html | 0 .../9d4a7691-63c3-4cac-8ddf-9c33a9197600.html | 0 .../9d543f3d-a984-444d-99d0-342f712ad312.html | 0 .../9db2ca91-68e2-41ce-830c-f63c7031f066.html | 0 .../9dd350d6-07ea-4569-95ec-c777eb006808.html | 0 .../9de452ed-9086-48cf-ad4c-d7ab92877c82.html | 0 .../9e156fc7-a124-4031-800f-f699a2d77f82.html | 0 .../9e23df1b-d2cd-4890-a19f-5cba398958fa.html | 0 .../9e4323b2-d1e3-49b9-9405-b6a127e86b51.html | 0 .../9e4f6bef-5110-402f-ae93-ed0da52e04d1.html | 0 .../9e5d6379-33e9-408f-b840-15aa786e6e3c.html | 0 .../9eb47456-6719-4c30-a9bb-8b1b871ca11c.html | 0 .../9eb83067-96a5-490e-bab0-c59847b0127c.html | 0 .../9ebf6db6-b429-40dc-b0e6-c7a75bea3d9d.html | 0 .../9ec17728-2df3-40ff-a7b4-597dd7031c45.html | 0 .../9ec5f7ed-d370-4e0b-bde9-1ed8b88bc21a.html | 0 .../9ec8d91e-3ef8-407d-9064-570b1c3c6890.html | 0 .../9eea69fc-1468-4fe2-b650-b7767d7006e6.html | 0 .../9f344eb1-8f1a-4030-ba81-f0c2616ed8b4.html | 0 .../9f34ebc4-0f31-41be-86e9-59a5b1957a11.html | 0 .../9f47d022-0e74-433d-ba19-923bed3a98f6.html | 0 .../9f5e6c2c-0ed8-4d62-a043-bdb1ce691ec3.html | 0 .../9fa0c2b8-6c14-46e8-a941-f73665391cf6.html | 0 .../9fbef629-a900-4162-bc61-363c20d5595c.html | 0 .../9fd2e9e2-8b11-47fb-a080-64c1291d5159.html | 0 .../9ffc6537-e565-48b4-819d-e78b70d58188.html | 0 .../a0121826-6100-475e-a6e4-e45db681f13c.html | 0 .../a016445b-242a-4d4b-9a33-50d37d0fe53c.html | 0 .../a06ca9b5-cb31-4f08-99fc-e33c8475e0d3.html | 0 .../a07d156a-a1f6-4a64-96a7-d94772f8cda2.html | 0 .../a092d2ef-4e6d-4343-80d5-675a2e824fb0.html | 0 .../a09cb8ba-7a1f-45c3-8e32-5097aef8adf5.html | 0 .../a0da8a3d-8e4e-427f-aa2b-b2c8d2df5219.html | 0 .../a0dc147a-8986-4e3a-b22d-9d50576f7f74.html | 0 .../a0e50aa9-412b-4f25-9719-cab2250a25b5.html | 0 .../a0e56976-9bef-4ca7-a33f-5f37973824d1.html | 0 .../a11d2814-5cdc-410a-8543-2179a38efbdc.html | 0 .../a12ead85-f228-47e4-9603-601574a06207.html | 0 .../a13d88e3-f28e-4a5e-bef0-a02c7aa7dbf0.html | 0 .../a152cfcb-b774-433e-a950-9b3dae6d8294.html | 0 .../a164595b-8952-45b0-8d4c-e56b9b1fe224.html | 0 .../a175eeff-6c89-406e-ad27-41ca6e0eb903.html | 0 .../a18436af-437f-4a5e-a760-9aa6d3bbf5cd.html | 0 .../a1b6b8ee-7770-48eb-ae2a-a36edf4a5321.html | 0 .../a1d545d6-b24a-444c-8b68-50d3d1204b81.html | 0 .../a1f20189-90ba-4c05-8269-64117e3aefac.html | 0 .../a1fb8e7d-194d-4611-9bb4-ffc5741fbf9d.html | 0 .../a22f9704-6b55-4a7f-a4c3-60dd462a3cf3.html | 0 .../a23234ed-a2c0-4562-b05a-605d6c7f94f8.html | 0 .../a271f9e7-f497-411e-8b17-395fd16cc560.html | 0 .../a2724bf9-0830-4377-9bd6-6149d9b43946.html | 0 .../a28b524f-ff48-4db6-a3d5-e532f98f9080.html | 0 .../a28d0ba7-ff81-4135-8e2f-c1c23ecdd023.html | 0 .../a29a7ac2-acc2-423e-8b9e-e0f2f1958d7c.html | 0 .../a2a49fa5-8edc-4356-8659-7dbc0c7eb671.html | 0 .../a2c9644d-f263-4b7e-b1df-2018debca6f7.html | 0 .../a2d133f4-7bbc-4d3c-8e2b-137f4111a8bc.html | 0 .../a2f3c3ab-5e64-40a4-8b7c-eee4557f8722.html | 0 .../a2f55225-ea90-495c-9431-5dbd56540e4b.html | 0 .../a319e40c-ad5f-4754-91c6-bab115b7a738.html | 0 .../a32d5c47-1bd9-4788-b8e9-c3145d06b13b.html | 0 .../a34d1336-4946-4ba9-b707-fbb4fc97e207.html | 0 .../a35380e1-5acb-4914-b611-9475603a72fe.html | 0 .../a3637f44-f9c9-4cc8-8793-5c66edf10370.html | 0 .../a393b4d4-4bd3-4558-bb1e-a34d13307b44.html | 0 .../a39e1fc6-c3bf-46d9-ae6a-0248001c71e5.html | 0 .../a3eec76e-8a85-4d88-9220-fe0ad2590980.html | 0 .../a4102d02-3b65-441c-969a-b930b46187a4.html | 0 .../a42b4fbe-b3dc-469f-bfef-b55bdd4e3968.html | 0 .../a42df817-2a5c-47e2-8b57-e08a1e710635.html | 0 .../a4687834-a6c5-49ab-81df-00bc9611cdb5.html | 0 .../a482ccd4-4913-4f0d-8239-cc6dcb48404f.html | 0 .../a494a819-b278-4fec-bd03-8d3d7c204a52.html | 0 .../a495b448-a682-4ce5-90e6-e45c448671ac.html | 0 .../a4c9784a-a4d5-45cb-890e-c91df1d68208.html | 0 .../a4e640d9-ad23-44e0-9c0e-ac3b969378cf.html | 0 .../a4f2930a-ed68-4d8b-bfcf-baa757045f26.html | 0 .../a50c774a-0939-476b-9c09-05f1739ae0af.html | 0 .../a52cd566-4056-4667-9f46-1db191d540f3.html | 0 .../a5357017-6ad5-4e39-a5ee-63dc262fd899.html | 0 .../a545e155-d6d6-4503-904b-60384598518a.html | 0 .../a55a01d1-de36-43c4-b6fb-a9bb3d9045fd.html | 0 .../a5610799-6167-4011-947d-c09ad38392ae.html | 0 .../a5701240-b375-40e3-ba09-56db3f1921d9.html | 0 .../a57177ad-77b1-4b86-80b9-6392aafa2831.html | 0 .../a59b5bf3-13af-412c-97cd-26ec45d6c3db.html | 0 .../a5be3404-0dc5-46b2-a369-a83a4c1b8367.html | 0 .../a5beb84e-2590-4cf0-87b0-92cff9596168.html | 0 .../a5d19590-8164-4ff8-8adb-d9c81618410b.html | 0 .../a5df9616-59e4-4811-9aa4-fa059001eef3.html | 0 .../a5e0534b-b08b-467c-a068-fcdbdafb0ebe.html | 0 .../a5e8150b-64e9-439a-b408-c5f0954fcbad.html | 0 .../a5ecf3dc-b1c5-44f2-8310-c4ec4b06b677.html | 0 .../a5ed4b11-1e6a-4d03-a07d-e7f8eb5aea92.html | 0 .../a620c723-fb77-462d-bfc2-95009fa4f149.html | 0 .../a62ec71d-9620-4c01-a04e-680b401148a2.html | 0 .../a644487c-74bf-46c9-91aa-50edc2d0f9a1.html | 0 .../a65bf103-6911-4050-a3cf-e2b28a83b3d0.html | 0 .../a65f8929-95d2-4624-a63d-db0cc3471a22.html | 0 .../a66fe17c-3bff-4a53-8212-e4145d350a36.html | 0 .../a689bc01-ba0d-43b8-ae3e-5dbffe7df3fc.html | 0 .../a6a7cf7f-a540-4c3a-b787-eab6bd0aa843.html | 0 .../a6b51fbf-7408-4701-befe-4ae20fd0cfdf.html | 0 .../a6c4c8a7-13e9-4295-b3b0-a4eb15f0cbfa.html | 0 .../a6cffc5c-097e-42d0-b74c-3f54a2529040.html | 0 .../a6d5a5fd-f174-42cb-8b67-5cda1315fe2b.html | 0 .../a704c590-060a-4fd8-9331-e47b22e39d52.html | 0 .../a7248fab-24c0-4ad1-a146-abb72ba40c53.html | 0 .../a72743c4-2bb2-4607-8cab-73ca06870eb1.html | 0 .../a7296ed9-a2ed-4ac4-bd05-ef9b82580b1f.html | 0 .../a7311ce2-137c-4f6a-90a8-e41b32d3b75a.html | 0 .../a76653ac-844e-4b45-8bc1-5704b6830d46.html | 0 .../a76afaa6-6382-4a2e-bb95-25740324f7c6.html | 0 .../a771a4f7-3d48-4d70-821f-52c2892354f0.html | 0 .../a7750389-f9da-4f37-b6b7-9a2893a1115b.html | 0 .../a7aef4d5-24a1-478e-8fa4-f8e88d656212.html | 0 .../a7b31fb4-0129-4fa4-9251-92366d70cfb8.html | 0 .../a7c6d58e-228d-4d05-be19-dcd2827f80d4.html | 0 .../a7c904ae-ccfe-4480-86d7-605a2595a148.html | 0 .../a7c9d691-6dcc-42f4-82d4-4efe324c63bf.html | 0 .../a7e5ffde-9f26-43fc-ae9e-6bbb50e6a8b2.html | 0 .../a805ce64-68aa-47e0-95f9-52014738dc45.html | 0 .../a8212497-a221-4d36-8abb-24e11c02968b.html | 0 .../a850835f-204b-4229-a7ed-5ccadcf1690a.html | 0 .../a8595f6f-3a0a-4710-acfa-d379d733e145.html | 0 .../a8608fdf-aaad-4b1c-940b-acd4f329a2b9.html | 0 .../a865f654-12c5-4680-ad60-81ae451c011b.html | 0 .../a86e6153-41fe-406f-8729-be8259a6b72a.html | 0 .../a8972c36-fc18-4e87-a7ed-560ad038e319.html | 0 .../a8980501-ef70-4d5e-b14d-6bc5beb4c019.html | 0 .../a8aa8182-8af1-476a-a4e4-54ed0f214a23.html | 0 .../a8b89a84-be0c-4a85-885c-9c2b8d04e1a8.html | 0 .../a8c53e12-3a76-4a60-9ab6-70745e1cd049.html | 0 .../a8c64c33-a126-459a-bb8d-a29c0a5af61b.html | 0 .../a8d7d2d2-cfd3-48e9-b28b-42efafd0c60b.html | 0 .../a9116365-9959-48e7-b686-9c4c517c56d4.html | 0 .../a938c95f-7f13-4d36-b1a9-eac3cdf410a4.html | 0 .../a957190c-a943-4b07-bfc3-301276fdd418.html | 0 .../a95797df-c40b-4e9c-b6ff-4e4f3d401e40.html | 0 .../a962b2e0-c822-486f-b33a-50413ce9a233.html | 0 .../a98d6f3c-52be-4c00-a3b3-44d685736b88.html | 0 .../a9ab24cf-7984-48fa-8740-43a410cec8de.html | 0 .../a9b893a2-9598-4b15-911f-8b4c71afad77.html | 0 .../a9bbcc1f-9fed-4c8e-a205-661158c3dbf1.html | 0 .../a9f5752d-1528-4466-a0a3-95e24a62fa27.html | 0 .../aa19f60d-bfb6-4079-a0bd-6b9f0a776a5e.html | 0 .../aa34dadb-813f-49aa-8706-0ee37f199ef3.html | 0 .../aa5148b4-3fa5-46dc-8116-823e49509abf.html | 0 .../aa761afb-8002-48f6-8d9a-c93fcc36caca.html | 0 .../aa8abd3a-4ecc-4aca-aa2c-11058d4eb7a9.html | 0 .../aa8b42f0-99a2-4ae0-9498-8198052bf396.html | 0 .../aa977d85-3526-4c9b-bf41-ce0a1c6ec547.html | 0 .../aab27b3e-b9a7-40d6-a111-49d256ccf4a3.html | 0 .../aab894dd-4c7e-4113-bde9-3851fde04302.html | 0 .../aabd271c-43f7-418a-88bb-ad662fa8338d.html | 0 .../aad57129-7682-469e-9e37-a5596f074a2b.html | 0 .../aaf97045-d091-4e54-bbd8-a2d4be808c13.html | 0 .../ab1ae78a-c283-4363-b88b-39d6977ea9e3.html | 0 .../ab33e663-0d24-4b86-bc82-72bafe95420f.html | 0 .../ab403f3e-61bd-41d6-9d1f-3e5d6a730e52.html | 0 .../ab4ec647-13c9-42ce-900c-cb8335811eda.html | 0 .../ab759c2e-9d6a-4175-af0e-987bc02b6558.html | 0 .../ab89a97a-c4b4-4b9a-8d1f-981e5773b94c.html | 0 .../ab8be325-95f4-4d47-bae7-d2f07796f8d9.html | 0 .../ab8e1501-3589-477a-a765-8039bb6cc1eb.html | 0 .../abba84eb-996b-4773-96e0-10fe90174ffa.html | 0 .../abd44140-1e5f-4ce8-8280-09064a7f9875.html | 0 .../abe8dee2-88ba-40bd-abae-21da20b8ca26.html | 0 .../abfe2a36-e854-43a2-932e-a97f35917698.html | 0 .../ac3757b2-f003-4cc0-9ddc-82c15207635a.html | 0 .../ac407fe4-54e6-4d8b-80e9-4681a1b14ac5.html | 0 .../ac4bb0b6-3feb-42be-b132-8f3a6aef032d.html | 0 .../ac4f291f-82d8-44c8-901d-c27a4e4f5a84.html | 0 .../ac566643-1c64-41a8-b2a8-bb52c8f0cbe2.html | 0 .../ac5c2871-5cd8-4a2c-843b-7ce2d7c53400.html | 0 .../ac9f33c7-a5ca-465d-93b2-5714267c1178.html | 0 .../aca5f798-a6dd-4bae-989f-2cd12213d86a.html | 0 .../acaae198-32c1-431f-ba21-55446c5cc78e.html | 0 .../ace763d0-151c-4447-8b81-f052ad372e3e.html | 0 .../acf6b8b2-586d-405f-aeed-d1ca7a5b5c58.html | 0 .../acffc725-13c8-4bf1-8106-d9ea33dfcaee.html | 0 .../ad34cfb9-c133-483d-934d-23350d8ec782.html | 0 .../ad8f3fe0-5ff0-4339-9344-0e647394da63.html | 0 .../ad97bbee-3f33-422e-93b5-5b690205e35b.html | 0 .../ad9a6f21-3838-4d61-92ae-ec062d9c8144.html | 0 .../adb05419-22e8-4413-beaa-e5ca733ca03e.html | 0 .../adcb38ef-ff12-4c91-8e50-fee73bbdc9c1.html | 0 .../add72e3e-c16f-43ec-9d0b-80af83b007cf.html | 0 .../ae06a6ff-4f2b-45af-a02c-823678850257.html | 0 .../ae12efce-4bd2-421d-90f1-0a9f20c20707.html | 0 .../ae2337f5-04d0-41b2-bcff-68fb8fe9ee66.html | 0 .../ae4be312-a906-4e61-bb7a-623be861bb1b.html | 0 .../ae6db195-75ee-4b79-8b0b-8253b5cc188d.html | 0 .../ae797c16-589e-43f5-9827-7d963bd17a6a.html | 0 .../ae7d1a89-a9a9-47cf-99bc-4343d53d8c6c.html | 0 .../ae7de933-66e5-49e1-8e06-00a40669c69c.html | 0 .../ae85e8bb-946f-4c36-a9ca-fd831d166182.html | 0 .../aeb4f092-a733-4133-94da-32ed06158220.html | 0 .../aebd240f-ac7a-4e12-ad5e-45c393995aad.html | 0 .../aece3171-0d26-4e2c-a6a7-4850cd875ada.html | 0 .../aede84d3-c261-4ae8-b401-c12ea994a1d0.html | 0 .../aeeec053-e817-4e74-b5ca-5aaf549e38e5.html | 0 .../af09ed18-1b24-4576-9693-56a7b85133e2.html | 0 .../af13cd7f-c79f-487a-ab98-a1b009f8bcbd.html | 0 .../af1a50a5-63cf-4cf7-87ad-80960a33cc4e.html | 0 .../af28d8db-36c4-4238-999f-1bf5dee77462.html | 0 .../af36f4ff-2e8c-49d8-b370-700de322aa92.html | 0 .../af58eb58-13a6-4363-93f4-a496eaa1cea6.html | 0 .../af5971c0-6b04-478d-bcd7-4b9f21af82ec.html | 0 .../af5eef1d-65ba-41b0-ac2b-1d9545a74802.html | 0 .../af6ed493-c12d-4586-877d-48acf085273f.html | 0 .../afaccdb6-de91-40d3-9709-e100fb17aeb1.html | 0 .../afcac19e-a18b-4e83-adf9-ec5b64592ce6.html | 0 .../afe07bb6-734c-4a49-8b7d-5953a5896477.html | 0 .../afe3d2aa-ad67-46ec-abde-cc7213a6d43d.html | 0 .../aff04b8d-6b63-431c-8cd5-3dd1590a516a.html | 0 .../b00690f4-e124-44e1-84ab-485f88a6c27d.html | 0 .../b026764e-0552-4f87-a6ca-7bd822133745.html | 0 .../b0368d73-e955-4894-b9d7-0123c23c87d1.html | 0 .../b044c5aa-ce50-497f-9741-0f807f9e46ea.html | 0 .../b064aa69-0a6f-4ef2-b640-b8e715cf26e9.html | 0 .../b0855e7b-05a4-4d03-98dd-029e61011379.html | 0 .../b095df6f-26f6-4ff1-baea-c1a4cda84fd1.html | 0 .../b0b51348-a1da-498c-b1fa-73005fa3296c.html | 0 .../b125cce3-5422-4e77-947b-f131e22f221f.html | 0 .../b12ef104-b15f-4e2b-bad5-6a4ebe27c867.html | 0 .../b16dfcf5-b060-4ffe-9cb4-960933a6be07.html | 0 .../b178dbdd-430a-44e0-be1e-e026a3d7a08e.html | 0 .../b18f6aab-1d20-4585-a9fe-0de4dda6e1a3.html | 0 .../b19cd7f1-6968-4eaa-b261-325096d33763.html | 0 .../b19d726f-8ab1-44e6-98b4-08d50bb34b14.html | 0 .../b1b73dda-c1a9-42d3-a922-e475f3551043.html | 0 .../b1b87a8a-1ce4-44e7-b6cf-e05a4ccc8a0f.html | 0 .../b1c16f2e-c198-42af-b46d-17a6bef970e8.html | 0 .../b1d98c7e-ae93-4a44-9771-8956ed20bc7e.html | 0 .../b1dbd913-ce2b-41a9-8851-2e73e8b644b3.html | 0 .../b1f50883-2034-413b-b7c7-0f6dc093aec5.html | 0 .../b1f5b9a4-14f1-49ac-b30a-eb05d376a839.html | 0 .../b1f5d338-5749-4724-aec0-4f5bc636838a.html | 0 .../b20498c5-f345-48c4-a2fb-5e942b6e6014.html | 0 .../b21c7e83-603d-48e4-8f95-6cd5fe450a5e.html | 0 .../b2220f93-713f-486d-9162-d15799babbf4.html | 0 .../b246bc2d-608e-48fc-b434-051517cbc79d.html | 0 .../b25eccb4-c0f9-4495-8926-218c735dd2d4.html | 0 .../b2879896-9483-496a-8b64-b4efda32b422.html | 0 .../b2925fb9-81b1-448f-9f06-04c7760d64f5.html | 0 .../b2c4c592-6ec9-4be0-9a90-c9ad9da5c4e2.html | 0 .../b3294079-35c9-4b22-a0a8-1932b0c01d6f.html | 0 .../b329ebad-69ec-488c-8d66-9d59a92ed092.html | 0 .../b334d061-e77d-4d3e-8c10-af68ec56b772.html | 0 .../b350c583-035e-4bde-b5ff-3e8759d30d9b.html | 0 .../b356716e-1496-40d4-bc6b-6687b8fd4cb8.html | 0 .../b35b3d22-f38f-49a2-88b1-e4cefc373461.html | 0 .../b388fef0-3110-4c63-b869-17ef8d0eb9c8.html | 0 .../b3bea2d2-134e-4250-9a17-222a2e389401.html | 0 .../b3e7b1e8-205f-45b2-ab7f-a4d33b68d8ac.html | 0 .../b3f9d099-17f6-49cc-94ca-fe305e45a076.html | 0 .../b4317cd8-1270-4b9e-939c-ee60cbc6f01c.html | 0 .../b43188a9-2529-4d1f-b880-8158bf0a606c.html | 0 .../b47412bb-b3e0-4401-bcb1-42d17734fe74.html | 0 .../b47ef0c5-7690-48c6-8d68-7437f78c8e5c.html | 0 .../b4b5bec1-2aa9-4198-ad34-6bf10cad3376.html | 0 .../b4b8b9de-441f-4232-8167-51c47c0c8b5a.html | 0 .../b4dd584c-7875-46b0-a8fe-83c2defb7c5e.html | 0 .../b518d0fd-049b-443d-af6e-642154a06d3b.html | 0 .../b52307c5-07b6-43a0-8322-f64ef2ce9814.html | 0 .../b52f9e2a-3efa-48ba-a5f7-380b4061325b.html | 0 .../b545ef2d-5f02-43c8-91da-5b63dfbb7a27.html | 0 .../b548d5fb-3b20-4474-8df7-5989e1d84f1e.html | 0 .../b55ac2d1-9024-4647-bce8-8a552662823c.html | 0 .../b5924bec-3aa0-4b95-8060-b660ccfdefef.html | 0 .../b59feec5-5745-45ab-aa2a-6401873abbc1.html | 0 .../b5aae249-c3f3-4464-8fd7-86ad5443b8bf.html | 0 .../b5ac7e93-bb06-4f4a-a883-27335b66a54c.html | 0 .../b5aff2c5-b269-4687-8904-ebfea52bdf8d.html | 0 .../b5e2cfe3-0521-46ac-8dde-2c92e23341f7.html | 0 .../b5e50cbb-f7d2-4b01-8325-cfa006f3b4fd.html | 0 .../b5ee850c-5fd7-4b01-8320-88f975cc43a6.html | 0 .../b627d667-d7d2-465a-a066-f2cb9c7381ad.html | 0 .../b63331cf-7034-49d1-9507-a2eb9f11d652.html | 0 .../b6396140-822c-4359-99e1-057d9db328ab.html | 0 .../b6514ca9-6ded-46c4-b660-31e733a12799.html | 0 .../b675ee31-dd1e-43c9-b413-24dd27c338f3.html | 0 .../b6787dfe-5eb0-4eda-8640-861660ffd0b8.html | 0 .../b67fec34-a2cb-41d4-8836-e22d9919dd3b.html | 0 .../b680e8db-3704-4851-9bac-dcf1a7609954.html | 0 .../b687138c-b5ce-4141-bb44-557b38197663.html | 0 .../b6a21336-f525-4725-b0ef-f7798b503b62.html | 0 .../b6c6a671-d7a1-4599-9ac1-d06a81911a6a.html | 0 .../b6d34c8f-d932-43fb-b2d7-21910f0b4588.html | 0 .../b6e9cf4b-3a28-477e-a39c-70f945a5a806.html | 0 .../b6fff448-6dfc-4152-8b9b-814b28e15f4b.html | 0 .../b70c29a7-2dee-48a9-918f-c77f80ff6e0d.html | 0 .../b7276fc7-4868-4b0e-b5c1-ba99937f58da.html | 0 .../b7457d94-ba61-4a67-827f-75abebf7efe6.html | 0 .../b80e5c82-2976-43d9-a83c-3a9d153b8a72.html | 0 .../b8387c9b-6bbb-433d-9959-0c971a7f11df.html | 0 .../b856e877-9ff0-426a-8ccb-9391c0cbfb49.html | 0 .../b85a1210-786a-4bff-95a3-3dd7e555069b.html | 0 .../b8633a6d-c93e-4610-bce0-118da57d6bce.html | 0 .../b8831ac5-bd8c-43aa-b575-942d110e2406.html | 0 .../b89e5fdb-3981-4a00-b0ef-736faecd2b79.html | 0 .../b8bf0871-9f95-4a65-b527-380c49010497.html | 0 .../b8c923c8-37c3-4246-afeb-9ed925dbeffc.html | 0 .../b8d4ad65-5dbc-4c45-a92b-30e95946507f.html | 0 .../b8df246e-b1b7-4ce9-8b03-4ee0932944e9.html | 0 .../b90e2898-0c51-49f4-80fe-02df0f1703b5.html | 0 .../b9210dc6-1e81-4d41-866f-43a406aa5680.html | 0 .../b92c8c52-846d-4a69-8250-e3f6aff9308b.html | 0 .../b9334ae0-4011-4ce8-86ff-f8e62d19e12b.html | 0 .../b95c3b8c-9495-4c68-9153-96c22f2992cb.html | 0 .../b95febc6-ca61-488b-a7f2-548ac8a969c2.html | 0 .../b9759c3f-8f23-4070-9dca-72c4525e4b3f.html | 0 .../b98aef07-ae47-42e8-85e7-87ac98e2b485.html | 0 .../b9940717-360b-4f72-b90d-bae94d82c2db.html | 0 .../b9bf17de-4311-4720-bc66-56fcc7a00fe3.html | 0 .../b9cf471d-2a18-4e74-b396-83f8d9966b4f.html | 0 .../b9e1d0a1-d182-4606-a1c4-2a8b5503b1e6.html | 0 .../b9e9aa9f-5602-4371-8285-c128b95c77fe.html | 0 .../ba0d617a-97e9-40e7-860b-14373c457427.html | 0 .../ba6f5ca0-81f9-4d15-8560-d10f1ee1e7f2.html | 0 .../ba8f912c-1e24-45fd-92cc-e42eb9756282.html | 0 .../baa20e5a-d80e-49ed-aa54-d3051b159ff1.html | 0 .../bac6aa8b-069a-4fc5-b4a9-fbd8f9b865fa.html | 0 .../bad5bc02-b513-41ce-a684-05f3d562ae76.html | 0 .../bb018b36-c3ee-42b8-85d8-66f1b6a82d73.html | 0 .../bb4eb59e-11c7-44bb-9347-30f5f7ebafc5.html | 0 .../bb54a799-2354-4f83-8c51-62bc4fb73919.html | 0 .../bb5a9d3f-b312-41f3-985a-579049378997.html | 0 .../bb62d96c-1e92-46bd-83f6-06b2f09a477d.html | 0 .../bb756a32-7d38-4916-90ef-0402964c978d.html | 0 .../bb8b56c2-e42a-4d72-a7cd-38209fd97054.html | 0 .../bba5dc7d-3c2a-41e0-a4a8-91ae95b82182.html | 0 .../bbc44c89-1c07-493f-81f0-9e245b88eb0b.html | 0 .../bc09939f-9ced-4d15-9380-2c1f183045d8.html | 0 .../bc34a88d-80fe-4a4e-b77a-235e9b6ca4e4.html | 0 .../bc3dd539-8e1b-478c-a9ab-877c8fac11c5.html | 0 .../bc46a864-64c2-45e6-958d-c4976db9337b.html | 0 .../bc6da01e-ea56-4200-8455-0451bfa08fb9.html | 0 .../bc9e23f0-e23d-49c0-bb66-07885a56348e.html | 0 .../bcb55196-fddb-4807-9603-edf08257d5e2.html | 0 .../bcc99b62-7623-4377-a1ba-2dc808a915c5.html | 0 .../bcdf04b6-c95a-4331-a6a9-9a65cbb1fc63.html | 0 .../bce1d5c7-059b-42ee-a01a-13e0f1a315a1.html | 0 .../bcf3ea13-b40c-4fc4-a501-162756fd1acc.html | 0 .../bcf3f51d-0054-4bec-8bf2-6e5c2f441b90.html | 0 .../bd0d5438-ca23-4f2b-bbd3-9daf16dc4752.html | 0 .../bd1fca25-aba5-4fbe-9514-9f4fe73d3f00.html | 0 .../bd3c23a4-d6b4-4e7e-b71f-a3ae9aab490d.html | 0 .../bd4df421-7775-42ce-b186-b738f91a0999.html | 0 .../bd56a69a-6f37-4a46-bc9c-444fe4b1a3de.html | 0 .../bd5ed50d-7dd6-445a-b4b0-e1294459c231.html | 0 .../bd625222-0b05-45ee-a246-8646be3f0d86.html | 0 .../bd9052c6-96e2-4f3b-8738-0411f5ef4245.html | 0 .../bdb4021c-f164-4a1e-ad31-ad004322e15d.html | 0 .../bdc843e5-fddf-4bdf-b2d9-395bb183499c.html | 0 .../bdd3f163-2efe-422d-b966-0286e7810352.html | 0 .../be1d3b1f-1942-4b15-9db5-7aa7c8697a8d.html | 0 .../be361486-87f4-4871-9b36-73bd96b0a09d.html | 0 .../be68b3bc-6bc3-4127-b885-4a70a6566f33.html | 0 .../be693f55-352c-4ea5-a6ce-e2aca8b98d90.html | 0 .../be6bb8dc-22cf-473e-a4eb-007f4ffbf3d0.html | 0 .../be6ce4b8-1d69-460d-8ef5-eefcda84d5ed.html | 0 .../be841c4d-e957-4c68-bd64-dc64d0b9e1c0.html | 0 .../beaa4fae-dc12-4c01-b5d5-3a0c28f7e591.html | 0 .../bebdb07f-5625-439a-b028-09166d0b32ba.html | 0 .../bedc146e-5d61-4ded-a140-65a9eb32fab5.html | 0 .../bee906ef-6dc9-42f6-9b78-6f1541ad560b.html | 0 .../bef061c5-795e-4865-b0c0-10433208226d.html | 0 .../bf0869e6-e0ab-432c-91c5-4f0a02e195f5.html | 0 .../bf1bf934-99f0-4891-b6be-9b3a7989be0f.html | 0 .../bf3269a3-7506-4608-bd66-ba32effbb707.html | 0 .../bf419340-1180-4f07-b2d1-f75f804c2736.html | 0 .../bf587536-6dd1-472e-bb4b-c461d0978c90.html | 0 .../bfd10648-d815-48a7-a97b-fb0935163c68.html | 0 .../bfda18fa-7604-4a81-908e-407df50df87a.html | 0 .../bff0b8bc-3705-4a31-beff-4d13213a2cc0.html | 0 .../bff6b7d3-cffd-4d38-98f7-86507d12bd4b.html | 0 .../c002b4e0-0ba6-4c57-bc64-43fae10622d6.html | 0 .../c0287097-e958-4a7f-8816-65f76d4260a9.html | 0 .../c0601b86-c17f-41fc-b892-baf845c02413.html | 0 .../c0700267-0f7f-49db-a450-f061db02ed98.html | 0 .../c07766c3-2d97-4684-8af4-ab0dd3ec0f27.html | 0 .../c09771e6-2042-48e0-94e1-55ff7bae6fb5.html | 0 .../c0a594d5-173d-45fe-8537-52ef4ce5f777.html | 0 .../c0be8bac-4553-4b23-b75f-f51effce2624.html | 0 .../c0bf3cf3-a38f-4e40-9b2b-1fed1b7cabf5.html | 0 .../c0c6164e-9174-41b3-99c6-9628198cc176.html | 0 .../c0cc789b-63f5-4a67-8cc2-feb315720db3.html | 0 .../c0d361d4-426d-4102-a2f5-fc4e3c2b5165.html | 0 .../c0dd7c24-f149-409a-92e4-502f5141b121.html | 0 .../c10da1bb-497b-4988-aa9b-3e10483bc4bc.html | 0 .../c113af37-f38e-44b5-8d02-14c8a38f5a78.html | 0 .../c1710377-1e76-4b45-a12b-e33b1ddb4ba7.html | 0 .../c174987a-8fc7-4828-99dd-270eede7c7c1.html | 0 .../c18a947d-68fe-4c9e-a999-079b8788ad11.html | 0 .../c1ab2e22-b2e2-4430-8786-9e75a3b4062f.html | 0 .../c1c94f4c-8107-4115-a16a-1039a111ab95.html | 0 .../c1ce9de6-9d1c-4759-86bb-44365e77d529.html | 0 .../c1ed56c4-1b58-4078-a15e-18ef95493760.html | 0 .../c1ff403f-226c-4581-bef4-031ccc765824.html | 0 .../c222dc36-abf3-4845-a66b-1548e2fa1f53.html | 0 .../c239e299-3b4f-4210-950b-f2f89858a551.html | 0 .../c24962c7-a472-4967-abe0-0ecc6809ed28.html | 0 .../c26706a0-dfdc-43da-aa79-2878d158c7c2.html | 0 .../c267806b-5fe4-49b9-b8fb-ab91c25daadf.html | 0 .../c274268a-7fa1-4ce1-944d-7cf588f81c87.html | 0 .../c288b06c-85be-4cc6-a2ee-4dee7850e3d2.html | 0 .../c293dd81-decd-4c4d-8fc8-3ed9984bb411.html | 0 .../c2c76a21-f795-4725-b080-0f38e7b1afb1.html | 0 .../c2e600fd-dcb5-473e-9c03-c089db354d5b.html | 0 .../c2f72904-082c-44cb-84cb-1a4fc01188f5.html | 0 .../c302de64-e166-45ae-96f2-e0f24e57d07c.html | 0 .../c308826e-4932-4863-8087-a83e520cb94c.html | 0 .../c345587e-e206-4466-921a-2b3231818358.html | 0 .../c349a771-50fe-4b65-9d93-972069f4d475.html | 0 .../c35e9dad-448a-4ef1-adbc-2de67f41d6cd.html | 0 .../c373253e-61d4-4cda-bec1-29644523d491.html | 0 .../c3781d11-ffff-4ee9-9893-a3f94f83f746.html | 0 .../c39469f6-da84-46a9-b73b-de645a8e1f2b.html | 0 .../c3c994b3-9bd8-4b66-9867-ab8ad5ecafc1.html | 0 .../c3fcf9d2-b26d-4e61-afa9-37e96320eaa8.html | 0 .../c420337e-2851-4959-9033-307e7ac5bfe2.html | 0 .../c4219d55-9a92-49f7-ba60-b97522ede9bc.html | 0 .../c434b0b8-2c11-4266-8f7c-089e25f2890a.html | 0 .../c43a6f11-6cb7-4027-a65b-f44082e36d09.html | 0 .../c43e7578-5bb2-4b45-9170-75d0ecdf3854.html | 0 .../c4496f98-f992-4a88-be4b-db9c841db1e7.html | 0 .../c4570e69-3987-43c6-8f9c-699006b296a2.html | 0 .../c45c39af-7a5e-4f71-a11b-fe688426cfa1.html | 0 .../c4631749-0df9-44a3-bac3-ca7fac236bac.html | 0 .../c4848897-3943-464b-b227-c17152fd107c.html | 0 .../c493fbad-50a8-4cb3-95bc-a42ff3332bbc.html | 0 .../c497e0bb-3231-4508-9421-65223fcc53d0.html | 0 .../c4a38502-4416-4c8e-8a4c-a0447005b1ae.html | 0 .../c4b6d3c3-4161-451b-a4b4-acce1ca84488.html | 0 .../c4d72407-9d5e-4567-80fe-0069500c02f8.html | 0 .../c501b90d-756b-4cfa-b798-85d38c3427cf.html | 0 .../c510e6dc-9e32-444e-b2a9-6fdab38bc6d2.html | 0 .../c522a68c-a382-4190-9790-cfd84fad9107.html | 0 .../c538a314-ed94-4c07-872e-37479a1572ba.html | 0 .../c555c30a-ce75-44df-a6eb-699cd5626033.html | 0 .../c55a48d7-bc9e-4236-9dfa-4d0242d27df7.html | 0 .../c55bd711-6de5-4e83-810a-e1e7234eba67.html | 0 .../c55dd5e4-27c4-4894-ad06-bb2a79b407c0.html | 0 .../c56d62b8-1dee-4950-99c4-44e3287ffe89.html | 0 .../c5747b0a-40c6-46f3-b514-e7b75b96e22d.html | 0 .../c59a7cd0-4f1b-46e9-b987-7443633192af.html | 0 .../c5d40221-2f86-4a6a-85b9-85c7697c0aef.html | 0 .../c5eaf582-8024-465f-8a9d-5e5113c319c7.html | 0 .../c5ebd151-fe01-49fa-951e-57eb85b0aacb.html | 0 .../c5f12ff4-5474-4bd9-b016-2bbad54bbf38.html | 0 .../c606f0db-3350-430e-ab20-46971759e4d0.html | 0 .../c60e80e2-260e-4cdb-8d66-434475d437a5.html | 0 .../c611cb81-0f3f-486c-bd45-e236f453a322.html | 0 .../c61c4366-3e18-4e90-8733-edc6934e7b3d.html | 0 .../c66543ad-2755-45ff-96e8-75aae2e75d31.html | 0 .../c66c37ff-e7df-44f5-bc81-ad54a7ce068f.html | 0 .../c6a14329-c65c-40ef-a773-045612ca31c6.html | 0 .../c6aa1948-33ad-46e0-9d0a-294685b3c817.html | 0 .../c6b90453-de5e-48f3-a798-bdf2380af173.html | 0 .../c6c72f70-1ccc-4c05-9abf-a3252c9e8737.html | 0 .../c6d57187-ca2e-4f2c-ae0a-b17aeac814b3.html | 0 .../c7298fe9-c624-40d1-9800-e073b464ffca.html | 0 .../c7318309-faff-4e4a-a98a-d2911faadd8a.html | 0 .../c73c1c28-b9d2-4756-9541-20f29a91c376.html | 0 .../c742cf2a-c772-452f-8565-fff49e611038.html | 0 .../c74ce596-fe3c-47f2-9d8e-67c867491b35.html | 0 .../c7640f8d-4c8c-4874-8c96-1901c53c6662.html | 0 .../c76add9a-a1f7-4485-b93d-cf680f973f1c.html | 0 .../c77cdedc-68a5-4281-a903-a95e05e01d6f.html | 0 .../c7830fac-7428-468d-b1e5-a622740a8475.html | 0 .../c7a846ce-e7f5-4503-a103-144a72e3f0b2.html | 0 .../c7cc40ff-d1fa-4e88-8d17-8429e47f46a1.html | 0 .../c7d23e6f-e093-4498-8c58-891ef4960fe3.html | 0 .../c7ea6b2b-13c4-4ced-8c6b-6b20db75b45f.html | 0 .../c80dd898-e64e-4752-ab4b-febc5fd54377.html | 0 .../c83ebb2c-13a0-4671-8dd4-7b0060c0c812.html | 0 .../c83ee7ca-47e8-4e23-9027-6340e4552b95.html | 0 .../c849b779-655a-496d-8076-7b951d2d6bbf.html | 0 .../c87141cc-6e68-4fb0-bb6e-423a02680286.html | 0 .../c877fc7e-e249-4f0e-96fb-b50a7a9fc945.html | 0 .../c8a20b3b-3bb7-46f9-8a48-7e0437de9690.html | 0 .../c8acb419-3c3e-4fb1-ac63-dcabbda1443e.html | 0 .../c8c0025d-0ea3-4fb8-9024-9c9142e5988d.html | 0 .../c8c8f1f5-9011-48c5-928e-9229910a7eed.html | 0 .../c8ce1a77-0192-4038-be58-5076a410ffdc.html | 0 .../c8f40258-4223-432c-850b-c78c825b5b83.html | 0 .../c95b5acd-4e6f-43a1-8996-a1913cf5fb74.html | 0 .../c98a2b26-8ddf-4574-946e-eb0baea5a4b0.html | 0 .../c9c29c43-61fd-4be3-bc65-75f370810913.html | 0 .../c9e005af-73da-466a-9170-220977e0e8d1.html | 0 .../c9f41f57-d7fd-4259-9a09-9ec7642914a9.html | 0 .../ca549bb9-c452-4200-8938-7ce50dea3e85.html | 0 .../ca59b3dc-d47f-40e2-9b43-05156196a5eb.html | 0 .../ca7f3315-9be2-40c4-92ac-265feaa833d3.html | 0 .../ca90a7aa-02d4-4a16-b03e-c5f192161105.html | 0 .../caa53a14-3dcb-483f-b496-8d283b13796a.html | 0 .../caeaa62a-468b-4c98-b09b-da761174e5fb.html | 0 .../caf3bc12-e7af-4ad5-944c-9940920850b4.html | 0 .../cb54941e-7021-42eb-9cff-98ae2c76cf69.html | 0 .../cb601b92-9e62-4604-b7b7-e3218ef55dc8.html | 0 .../cb61f547-da0a-460b-8ee2-f9e247fdf202.html | 0 .../cb64d5cd-9e2c-422b-877a-ae92dd2939d8.html | 0 .../cb679654-ddc9-4e7f-8c45-edc58deb0093.html | 0 .../cb704765-b241-44e3-9ade-f5ac3767a84b.html | 0 .../cb7bb14b-e497-4ec3-82d6-b78c7fbc68e5.html | 0 .../cb9d87a7-0d3a-4c8c-ae6b-63ab7379c18b.html | 0 .../cbaa77bd-a0a8-409b-a681-5e16db9133cc.html | 0 .../cbafe2a2-2c59-40e9-8cbd-9bf30abd99f3.html | 0 .../cbd921a6-4194-4393-985b-012561098df7.html | 0 .../cbde5f20-18ad-4cda-bd44-8ff95d053b66.html | 0 .../cbe4902d-aecb-4f4b-ac01-a569ad4f4622.html | 0 .../cc0eb81d-b3b4-41b0-84d3-ee34d51421c6.html | 0 .../cc0f3077-81e6-4236-b2d9-f04c832ce9a5.html | 0 .../cc24faf8-4c03-4525-b36f-9569dff9fd4a.html | 0 .../cc4740c8-28fe-4c04-86d1-7c09bc1733ce.html | 0 .../cc54483f-bda1-4259-884f-cc55718f9716.html | 0 .../cc74f013-2973-488f-b77d-88aaea92a286.html | 0 .../cc95d4a4-da5c-4eae-86ed-397b685cbf27.html | 0 .../ccdd2b2c-4f2e-40ea-87e0-8fdaae193b60.html | 0 .../cce0bb04-4889-48ce-a320-56f3ed074463.html | 0 .../cce12b81-d7bd-4994-84a7-ced40657d483.html | 0 .../cce83f2c-eabe-4c85-8949-8fbe2549dbd5.html | 0 .../cd495259-5785-44f1-adfe-58760dbdaaa7.html | 0 .../cd98e604-df82-4d71-a680-64ccc173e264.html | 0 .../cdb659fb-3c4e-4387-9178-71a8b92c543a.html | 0 .../cdcb5598-7773-4523-927c-01d1860d5a74.html | 0 .../cde2c79c-40c8-4a01-a081-7bdadb6e5acb.html | 0 .../ce0ca51c-32d7-41f0-ba7b-c9fcfd8cf222.html | 0 .../ce0da345-d190-4030-a6a3-67d1865ef438.html | 0 .../ce10cef2-210c-4c14-9519-5f483ed7267d.html | 0 .../ce1a0a9e-5fe4-434b-a2a1-29d3eb755acc.html | 0 .../ce28d966-7698-412a-80d3-e5562cc3f8ec.html | 0 .../ce31fbd4-420a-4a3f-ab1a-4136232ee670.html | 0 .../ce45ada2-fbb0-4596-9c36-c5ce7612f313.html | 0 .../ce6376b2-bb15-486e-85d0-2be4843eac58.html | 0 .../ce676cdd-2af0-47f0-bfa6-654a0e32f3ec.html | 0 .../ce7b1386-5052-4d99-8318-9b1746967668.html | 0 .../ce8f18dd-8cc2-439d-85a5-9e6065d64a83.html | 0 .../ce975598-2a56-48ec-8000-4e557a0a87d4.html | 0 .../cec6c849-301e-47b6-87fa-666b82c69fe6.html | 0 .../cecc1234-2536-4678-9b46-76f46d87b953.html | 0 .../cef2bafc-5389-44a6-b275-296473633cc5.html | 0 .../cf6b4ce7-3be5-47ed-9307-3849d8bd416e.html | 0 .../cf6c77df-0b4c-481f-9200-b5a9df5acb6f.html | 0 .../cf8dcfc8-1a71-4153-a6d0-9cc0488b25d3.html | 0 .../cf90655a-0216-49d6-a6de-461a226b1573.html | 0 .../cfa9c6ef-e018-4f21-b4ad-489c445337f2.html | 0 .../cff53faa-7a4b-43e3-a0f0-86e588fba181.html | 0 .../d00ef1bd-11c2-4ec8-a5a1-4ce189265806.html | 0 .../d024cd64-9671-4754-9c14-0f39964cc0cd.html | 0 .../d0584860-8c97-4bcc-82d9-06a3a3fc621c.html | 0 .../d05cfdba-a876-4a4c-b6a8-f84aef52c68f.html | 0 .../d0739202-7bee-44aa-990f-0c0f0eb0d84b.html | 0 .../d07a80d4-9912-49f0-ae09-1c75f7e5fc63.html | 0 .../d07ac06c-76ee-4629-b098-b0969213a4bb.html | 0 .../d09e7d92-553a-4f38-8ac2-0ab75f4459d6.html | 0 .../d0b23c98-cebd-4e3f-8344-9f72863fbd73.html | 0 .../d0c0ed98-0efc-4b2d-afc5-d31287a7bd87.html | 0 .../d0d6e41b-4798-4f11-8d0d-ad31875bdd79.html | 0 .../d1122604-7ee7-45ca-a117-8665dbfcee0c.html | 0 .../d13b799b-4c1d-4839-a2c8-a2beb562ccae.html | 0 .../d13f9d1f-13ac-4917-b17e-0e91f13d6667.html | 0 .../d17c9d66-c6e2-41de-ae5e-017406032bc3.html | 0 .../d17e043d-3733-4f50-bdeb-3ffe1af537fc.html | 0 .../d17eb309-5cbc-4562-accc-77c4936027b1.html | 0 .../d18bacd3-9062-481a-834e-f5eb91caf0a2.html | 0 .../d1990917-4586-4590-86b8-15cee17f0b15.html | 0 .../d19c5c2c-6e18-4e5b-9b83-2a671d5798be.html | 0 .../d1aade5b-c63d-48d3-b733-ec0372643e76.html | 0 .../d1c8c3d9-9748-4587-b510-9e79e149ddb0.html | 0 .../d1d6c18d-02db-428a-9db0-838de21086d7.html | 0 .../d1e2f673-b6b9-449a-bf0e-9aaa537141ed.html | 0 .../d1e96243-6444-4cbd-90c0-1519d07862e7.html | 0 .../d1fbdb53-15c0-41d4-bc2f-f6f4948475ce.html | 0 .../d2054694-8d59-478b-a601-d86c4abded5e.html | 0 .../d209a2ac-a7a9-488a-979c-f11bf711f7a2.html | 0 .../d21745f0-51e3-474f-b4ec-71bd94ea17af.html | 0 .../d229abf3-5602-4d29-a50c-3aa803f918ba.html | 0 .../d22ebf3a-01fb-4e79-8eb4-2e541570985e.html | 0 .../d24b2967-571b-4d9e-8fb6-f29eb5f7916d.html | 0 .../d2517242-c445-4f91-9639-afe1e44e88e1.html | 0 .../d2671a5f-3fac-48b5-a377-a78e1f251e79.html | 0 .../d287c1b3-df13-4547-b900-9abd1f683af4.html | 0 .../d294f0af-314a-4503-9036-df2cd6905d03.html | 0 .../d297e863-a290-4e54-9ef5-f1bb5f898249.html | 0 .../d2b9c621-6ff9-4f58-a34b-5865bd592617.html | 0 .../d2c1abe7-7b04-4164-9c5c-4f8b65ad1ec9.html | 0 .../d2e8daa8-23c3-4b10-b0e2-4502da89847c.html | 0 .../d2ef6908-2fa2-4f24-97d0-fcf316a19c4e.html | 0 .../d3219367-a204-44fa-9c52-d10453a1dde4.html | 0 .../d32af07c-0a31-43ab-a125-9878974c7905.html | 0 .../d32fc791-8b57-4b37-9405-05710f9dd65f.html | 0 .../d3837d7d-22c7-4efa-af79-1ed8f4bc279d.html | 0 .../d39d058a-f0fc-40db-a007-e1e14035da04.html | 0 .../d3c060b8-0fe1-4e77-9538-6104e6ee375d.html | 0 .../d430749b-d149-4b29-a2ee-13a8ca5a58d3.html | 0 .../d463a047-7d47-4cc5-8b71-8db4145893fc.html | 0 .../d48f5556-ada7-45bc-bd62-f1bc91089024.html | 0 .../d4bae70f-6ebd-413b-beb7-db726e465b27.html | 0 .../d4bc1cf3-aa92-4139-900f-5052311cf33c.html | 0 .../d4bf416e-5c92-4121-9f10-ef5e098f7a65.html | 0 .../d4d48e10-6500-411e-8713-11df5fd21b9b.html | 0 .../d4e70b73-a3dc-4bc4-962a-0722b918f928.html | 0 .../d4f17e51-cf58-4cd3-b31b-c389dc7c0add.html | 0 .../d4f385d4-6d88-4ab1-a108-51d6cfebfa64.html | 0 .../d50ee808-3954-4b22-a76f-c9d962b3c764.html | 0 .../d5277cdd-e8b6-4b88-b9f1-ffa19a0b057d.html | 0 .../d5398f08-72ba-4d21-8b82-6551b82b7346.html | 0 .../d53ee389-a1c5-42c5-b41d-7bc8a8ec24e4.html | 0 .../d55822d9-6264-444d-8458-4e6696b0efe0.html | 0 .../d56b2f6a-f766-4cf2-893a-90dcab7409b1.html | 0 .../d582c1b6-7726-4982-92de-48da1be475cc.html | 0 .../d5a17578-7f7c-45e9-8d9c-c56fb387d75f.html | 0 .../d5a921ba-ca80-4e67-bace-f9b8084c9c0e.html | 0 .../d5ab40ec-6c91-463b-a5a2-c944942f3e79.html | 0 .../d5cd50e8-d251-4ca9-8a09-5352a3a1b971.html | 0 .../d5d0f7ea-c947-4026-9662-7cfb1cbd5175.html | 0 .../d5d7aa5f-25df-497c-85d7-e1fe5d012e95.html | 0 .../d5dde5a9-4d00-4800-a347-d06bc5105f9c.html | 0 .../d60166c8-46ba-4b46-a49a-fb2a25535890.html | 0 .../d60a326f-a7f5-48b2-bd08-536a96c2cb3b.html | 0 .../d612dffd-2676-4f58-9f97-46bd57059298.html | 0 .../d61debaa-b5d4-4d79-8889-d763d594708d.html | 0 .../d6323e6f-efdc-446a-b83c-03a9b702ff51.html | 0 .../d6428f90-4b5f-41c8-897b-d1f216b6d42b.html | 0 .../d6838e49-ac5d-49e8-8d30-5bd84b518d83.html | 0 .../d68c4367-6ffe-4c62-bddb-201816081212.html | 0 .../d6a55e93-0ad0-45c1-bfec-e5970804c424.html | 0 .../d6ae464c-44ae-4909-acf5-ff50c7dcf366.html | 0 .../d6ba364f-959f-4fc2-adaa-751176300406.html | 0 .../d7048c51-d556-4620-8b3d-5b33ee2b331b.html | 0 .../d7074539-b966-486b-80fe-094ba40bafb0.html | 0 .../d729ae85-149a-4d28-a0ab-a1d03395c23a.html | 0 .../d7352bd0-4122-4d2a-9af9-88be8a38d1c1.html | 0 .../d7419f75-e63d-49d0-aaa3-a30de2c03619.html | 0 .../d7522a19-7248-4a0a-b910-0e6c5502a2db.html | 0 .../d762c8cc-35f6-4253-a30d-a643d8bd9740.html | 0 .../d7649436-95be-4191-b9b8-e1a3e1433156.html | 0 .../d767ff49-c81d-44eb-b425-23e06827fa1a.html | 0 .../d78f99eb-82a4-44f5-9d09-8629861e9fd3.html | 0 .../d79b67b2-fce2-4eb1-b522-681a7b73c324.html | 0 .../d7b35632-4e01-4747-8111-4431b37712c9.html | 0 .../d7bfe4da-3696-4593-bb50-0a6f4bd819dc.html | 0 .../d7fd29a8-596c-4e12-b2b6-944d9953e628.html | 0 .../d8060c05-932f-4d8f-ab4a-3aea4ce6221a.html | 0 .../d8104d66-d20e-4625-855a-a9e16e079c79.html | 0 .../d8160832-7774-4a9a-adb7-5ad0ff7d249c.html | 0 .../d8219fe6-feeb-4384-ae4f-71567a0fd16c.html | 0 .../d825bfaa-a725-4e4c-832c-adf2f329c5fc.html | 0 .../d87ce499-8127-4433-8e9a-b51b937b468a.html | 0 .../d883704a-e70b-4c95-a880-f080c1951fde.html | 0 .../d8971ede-7aa7-42e7-9ae0-e49eee4190f2.html | 0 .../d8a65c8a-7a4b-4825-92f1-2e8aea9acba9.html | 0 .../d8a88ad8-70f1-4698-946f-b508a2cdde67.html | 0 .../d8ae4c1f-87be-49a3-80a4-6f164edaa9fb.html | 0 .../d8b503f1-d3c8-434a-8be3-aad6812791d4.html | 0 .../d8c4e82b-c089-48c8-80d4-22dba6ce15a6.html | 0 .../d9049423-eaea-49d0-9c76-e737a0b9f512.html | 0 .../d918de3f-3d76-4201-a8a3-4bb4080655c1.html | 0 .../d92b9312-00a1-4c41-aa49-8241cb6b338e.html | 0 .../d9439152-6477-4b05-97a0-318fa3295ac0.html | 0 .../d955215f-ac7e-4ab8-b9a3-c0edafded6de.html | 0 .../d96a950e-7444-427f-8e60-43cc71ae2249.html | 0 .../d99d3818-dcb5-443a-8322-af2d071ec25e.html | 0 .../d9a8bac2-548a-4178-a10a-601f49c28181.html | 0 .../d9b3fbc7-6740-4c73-ba1a-54f33782df5d.html | 0 .../d9cb3123-c6c7-43eb-956f-1e90350c98fb.html | 0 .../d9e06c24-3289-4184-bf34-980b188543b5.html | 0 .../d9e1d3d2-f6c6-4e67-b382-d51bb9bd1fc3.html | 0 .../d9efab31-bd8c-4f1f-99e5-65485d87ba4b.html | 0 .../da3b276e-c253-459e-b2fe-f12970d6ab7d.html | 0 .../da4988c3-3f83-4548-a21c-4fb3ede4b473.html | 0 .../da731124-e9bc-4a43-afac-ec8d278e8894.html | 0 .../da74212e-a8c1-483f-a25b-9c76cbc6f3ba.html | 0 .../da7889d4-d441-4565-abfe-8158ac8456db.html | 0 .../da8ff572-f4cf-45fb-97c8-1d98db93bd9d.html | 0 .../da9294bd-f810-41dc-90a2-8104194cbf30.html | 0 .../dac7329e-de30-447f-b8e0-ba925207753b.html | 0 .../dad7a64a-7035-4c28-ae78-9efc63696741.html | 0 .../daf5a3ee-eb34-41b3-a53c-600f8fedabb2.html | 0 .../dafd356b-88e4-422d-a38f-04da1b20283b.html | 0 .../db0cd21f-09cb-4a97-8a1b-a0724bab8820.html | 0 .../db21464f-09bf-4252-b6cf-685cf5a317a1.html | 0 .../db2c5c2d-f35c-4066-9c0f-9c17d597ecdb.html | 0 .../db363c24-a506-49a9-bb12-9df75ef66287.html | 0 .../db55217f-2013-4a28-ac0e-0952bcd5e4af.html | 0 .../db98585d-4d2e-4a0a-8b34-e35745d296e8.html | 0 .../dbaa6f17-89f3-4480-9b40-2024baee3b54.html | 0 .../dbb6581c-026c-460d-aa75-b858a94d5a0d.html | 0 .../dbbe3667-1024-42cb-85c8-44e6bf8bac70.html | 0 .../dbd4b043-1951-4b71-8bdb-36961087512b.html | 0 .../dc00dae7-e6a7-4b49-b911-83e83416aac1.html | 0 .../dc00edb6-be57-494e-84c1-4e547bb39971.html | 0 .../dc095348-a477-48cf-974b-db86f186f3b0.html | 0 .../dc113156-5fee-4f12-b369-1eb5c11accf5.html | 0 .../dc1c038d-2ae8-4de7-94cb-a9cca6648209.html | 0 .../dc34ea29-904e-4ee5-9ea4-d1f10a38f973.html | 0 .../dc3636ef-e319-4f54-a77a-7e7d7803b92a.html | 0 .../dc3f7f64-a561-43b9-bf03-af0ee672abd1.html | 0 .../dc46c3bb-0850-4d51-b91d-1bbd908038dc.html | 0 .../dc61ec7a-a2fb-4dcd-b303-600ac595a1e8.html | 0 .../dc656d2e-bd27-40cc-8e98-9be2104b2ec7.html | 0 .../dc689460-57f0-432f-86c8-2a1ce64d0720.html | 0 .../dc77cb76-c61e-4ded-8bc5-27eed6ee65b5.html | 0 .../dc985f52-33aa-48c7-87a1-278ee5da54f4.html | 0 .../dca0a4f1-89bb-44d8-a0bb-b4ec66fdd58b.html | 0 .../dcfda71c-f284-4c3d-9680-d1b5ecd8efae.html | 0 .../dd0ab4a0-30ba-4374-b2eb-2082ee24bec7.html | 0 .../dd2dc76b-bf71-4e2d-8650-9641041ba11d.html | 0 .../dd3631a1-e917-45a6-8490-206dfa22b210.html | 0 .../dd3a3f13-3d92-408f-be9e-80e21cbd17f6.html | 0 .../dd539d7d-ff83-49f9-bc51-14f43b864b37.html | 0 .../ddb408d5-ca39-4694-98ad-caa6b81de6bc.html | 0 .../ddda9291-740a-49f4-ae1a-d1b1751e900e.html | 0 .../de021c8f-b67f-4f53-9650-8ce0b6691ec0.html | 0 .../de1db872-4a17-4eb3-8697-f7efa94ba5f1.html | 0 .../de405a05-4ff1-4131-9404-4bc207496f11.html | 0 .../de44588b-27f2-48ea-8927-fa8e7e0eca84.html | 0 .../de47dc1f-240b-4e96-ab11-9dce7a84b293.html | 0 .../de518a84-51e5-4300-ae67-1e862f385a90.html | 0 .../de9cdb27-1a36-443b-b8b8-bc30a5c7d092.html | 0 .../def104cf-27c5-42ac-a871-475cd30ad64d.html | 0 .../df2c57ca-400d-42d7-8842-27296689b59f.html | 0 .../df374c63-c113-4833-b4da-917273c7d050.html | 0 .../df38ae9e-b491-4000-afd4-4d4d3e870e80.html | 0 .../df3f097b-ff35-4ea6-b9b1-10d0b370c5d7.html | 0 .../df672aad-6260-4649-870b-5d7cf1f30592.html | 0 .../df6b3950-86e5-4c6a-8ed9-b10f1e248a59.html | 0 .../df978083-4166-4d35-bde7-7e31c1990f54.html | 0 .../dfc24953-fb1c-4c45-81ca-5134d1c30600.html | 0 .../dffc7acc-118c-4a72-ab68-e8a8adce0e3a.html | 0 .../e0139510-8817-4dce-80a2-8ef23bcf94c1.html | 0 .../e01cc7d4-fa13-4397-93d5-a36d32e2f132.html | 0 .../e021c8ab-48fb-419b-9b4e-b2328f94eb2b.html | 0 .../e036aae9-9225-4a04-9303-07d04e721a33.html | 0 .../e04eee0e-1f82-40c4-8b72-a38f74c59362.html | 0 .../e0840ab1-0093-4a38-aa43-b4adebb7f1b0.html | 0 .../e0c1bcd5-6832-4ec0-b4fa-70d3bd4baab4.html | 0 .../e0d1de8b-5064-4785-b8d6-dcceb77f5870.html | 0 .../e0de03aa-42a6-4e7d-84ab-12285e0beb15.html | 0 .../e0fd9704-e220-468f-bf42-6e0b13353cc8.html | 0 .../e1197fbc-e575-4d56-b2c2-38c97611143c.html | 0 .../e11d0161-0f04-4ad4-a43e-5bb0170339f3.html | 0 .../e12afd54-f3a9-4eea-b17d-030700d95403.html | 0 .../e14ba3c1-0f14-484e-ae7d-c9d25ac99f01.html | 0 .../e1845e46-f0e9-48a9-bc5d-1e569d832c96.html | 0 .../e1c1f7ea-5cf2-4b1e-b603-6c3767458a59.html | 0 .../e1ef25e7-0028-4b61-b732-9cec3e454273.html | 0 .../e1f88a23-289b-44f2-8a55-02cbfab628ce.html | 0 .../e20adb8c-bbff-484c-b2f2-62053097c2f4.html | 0 .../e20d8e75-79ef-4ca6-9a82-f2e18a3accb6.html | 0 .../e21f2332-4aff-4ee8-b613-ed5d368817cf.html | 0 .../e24732ac-f76d-4be4-8791-d18ddcf220a6.html | 0 .../e259092e-bd97-4eff-9dee-547f93b3d369.html | 0 .../e25aa899-1c2d-4d02-afa8-53d6b164d033.html | 0 .../e26e7d22-e431-416a-89a3-cbc25eab3b2c.html | 0 .../e28bc514-04d5-4deb-8395-4782b0d69e7f.html | 0 .../e2bf91b0-5451-46eb-b196-5838e958e50e.html | 0 .../e2c975f8-f3b4-4fbe-9a37-89b56686110b.html | 0 .../e2cd996c-9352-4a6b-90f6-47b8383ecdb1.html | 0 .../e2d172b2-ca3b-4e75-ad86-f53df61ab7f9.html | 0 .../e2e487fa-847e-4a87-a3ad-5d25758a87c0.html | 0 .../e2f091b7-f200-44aa-a18f-24bd4cba4aae.html | 0 .../e2f502dc-0caf-4aab-b895-f6d7f14ced54.html | 0 .../e3232a47-e92a-4956-9dbd-0eef45a6dcd0.html | 0 .../e328d76f-e619-4f35-81ab-528b05b35cca.html | 0 .../e3466fd5-f2b2-4d38-a51c-f6e66a0f070a.html | 0 .../e34aaa46-438c-4081-a2fc-1131b1f0c230.html | 0 .../e3621acd-b0df-42fb-a50c-c21122527c95.html | 0 .../e366524e-3585-4481-90a8-b8f17a369c8e.html | 0 .../e37477bb-fed0-4834-b7ff-39fbe6e9b397.html | 0 .../e38a4339-9d1b-4677-a6ab-043309e27344.html | 0 .../e3fd9ac4-1ad4-47b3-9b41-59f26e2b4c30.html | 0 .../e4292c75-e2d8-4259-a66b-9af3140d0050.html | 0 .../e4891e88-8462-443f-acce-5b6833da6c5c.html | 0 .../e48930c2-567b-4af9-9d89-d221c70ac559.html | 0 .../e4e40c9e-8602-4a5c-8c25-c5fa74bef0f3.html | 0 .../e4f7a853-a7d8-4931-ba70-1e790a276224.html | 0 .../e50a04bf-9423-4fc0-b599-eb301d0483a9.html | 0 .../e50bad9e-4513-4c4a-8223-beca0d00a21d.html | 0 .../e50f184c-fcc1-4bdf-99b6-370c32ce17b3.html | 0 .../e511ef52-f783-4354-9ec1-1f09fabb9d18.html | 0 .../e5423de5-871e-4769-81a6-3f1608285e0a.html | 0 .../e554b0f3-ba22-42b3-8adb-197b06550be6.html | 0 .../e56061e4-36d0-4cd5-aa9b-2be467e15b68.html | 0 .../e59e4a28-9d1c-4353-832f-5b2d31b51489.html | 0 .../e5a1bcd2-3437-4f63-a3a3-a09c82dab251.html | 0 .../e5c98240-cf56-4d15-9b3b-8cfed1a798ce.html | 0 .../e5ce389f-c652-4dff-93ae-1af5e06bca9d.html | 0 .../e5f5d563-4af7-4ff9-9066-95f14843ab03.html | 0 .../e61f0aa1-07d7-401c-9549-d05f6c653204.html | 0 .../e63b0993-85cb-45e2-ba94-7b00553339f2.html | 0 .../e647cfef-b33d-4d77-8ca8-0dc11f72b2e6.html | 0 .../e65459fe-aa59-4682-a569-14ab1b627bd7.html | 0 .../e6d95156-cc2f-4e7b-80c3-54703aff398c.html | 0 .../e6daad7b-ee4a-4091-80db-2820b4094643.html | 0 .../e6f8dd05-6235-4c82-8d3e-7e9ad1967090.html | 0 .../e6ffd46d-ba7f-4313-b72e-abdf2433ddb4.html | 0 .../e7045f8b-9dad-4f3e-9e2e-f1312bc98e89.html | 0 .../e70c79e9-1820-42c1-915b-2fa3a0b8dc21.html | 0 .../e724c9c2-ff78-45c5-92a5-ab5036de9d79.html | 0 .../e732d3dc-15bf-452c-a295-7e191407cdb1.html | 0 .../e74b0664-df4d-496f-b67a-7df59c41106d.html | 0 .../e770b7d5-cb51-4ffa-819b-184c1c8423df.html | 0 .../e77dd289-6724-42c2-aa87-0c94d5cd919b.html | 0 .../e7948170-2e05-4cfd-854b-d7f1a299cb7b.html | 0 .../e7abe2e0-36b0-4b2f-8540-95fd1e24639e.html | 0 .../e7deb74c-bd71-4cc6-baf3-7910b699a9aa.html | 0 .../e8473f48-13ec-4a04-8191-078fc96b50ee.html | 0 .../e8499ac6-2f6b-4c89-b571-7f3945d0cf6f.html | 0 .../e87189c5-245b-4a3c-8881-f9de5e155430.html | 0 .../e8aea8b5-53d7-4879-9026-51594e4b86bc.html | 0 .../e8b59740-7d01-4bbd-837e-65cdb7fa9fa4.html | 0 .../e8e4493b-a728-44b3-ba93-4810bafb9857.html | 0 .../e8fc8cc7-8de3-49e8-871f-a8a172bdeb29.html | 0 .../e906629d-df55-4148-a0e4-3e9c3a3b377b.html | 0 .../e92228c6-6290-493b-b054-3c3e8d2a6121.html | 0 .../e93603fa-a1dc-48ce-925c-da45afbbb7d7.html | 0 .../e95092c5-212e-49a1-9a7a-79f2a34dfb46.html | 0 .../e96393f3-d10e-4a73-8100-ca67a9144900.html | 0 .../e97986e8-177e-4738-bc80-46d82a613918.html | 0 .../e99ce3c5-bc35-4c73-be0e-2d6b4e4a9e8a.html | 0 .../e9a77a26-9c82-4301-b270-6ba338ba0f4d.html | 0 .../e9bfc7eb-a470-4a02-a11b-527ba5a240ac.html | 0 .../e9dc919f-4e59-4c64-ab94-2dffbbc7a5a3.html | 0 .../e9f51f4f-fad9-4edf-abd4-24099d05e54b.html | 0 .../ea1167e8-0aee-4310-a9de-1b75954412bf.html | 0 .../ea29d1a5-be1b-48ed-b4f4-28ddfc177ff5.html | 0 .../ea2b9b37-e086-4904-a323-be0d6f7841e8.html | 0 .../ea3ce5a8-b0ce-4bcc-bed1-fbc224f93397.html | 0 .../ea42072e-e23d-476e-baef-67a96abd75cc.html | 0 .../ea470a38-70d4-4233-b8be-2d0cfa2b6c0f.html | 0 .../ea6a5fc6-6480-4ded-a40b-2814b4aed932.html | 0 .../ea967dd8-b65e-4ec9-ade6-4220847f5e3b.html | 0 .../eaa15df6-2e24-445e-bf63-f1d7b9cfc18d.html | 0 .../eaa9dc66-c505-4b0f-a025-a28a72894981.html | 0 .../eab50f04-7194-4024-8758-0cfe7fee2bb3.html | 0 .../eabb08e9-23aa-4a18-9aed-f2c7839a098b.html | 0 .../ead182f2-3b41-454e-b487-5b2e73fac43c.html | 0 .../eaf72bb6-1ecf-4b13-acab-772f3ac70e43.html | 0 .../eb0b4ad1-eaeb-4263-846b-18e45141329e.html | 0 .../eb4001f4-59ef-4b23-8d97-3a4566067a0c.html | 0 .../eb54cc9d-0fb9-4716-922a-c3cd87fdd597.html | 0 .../eb7fa4bf-07b7-4eef-9a89-7e0a1f62e254.html | 0 .../eb9f6eaa-1ea2-43ce-a05c-c17153656270.html | 0 .../eba20b77-b8ae-4fad-bfc3-8088beb6dbeb.html | 0 .../eba6dec9-f975-44cc-b97a-9233ed1a16c7.html | 0 .../eba9dd24-9823-403d-b470-903e78d31354.html | 0 .../ebaf196a-9b0d-4269-ad9b-2413e4f8a8a7.html | 0 .../ebbb1f11-a2f6-4497-b88a-b3b428806a26.html | 0 .../ebbce8bc-254f-433f-aae7-e5397eb5ca20.html | 0 .../ebbe7396-7a11-4bea-a164-4c9300157118.html | 0 .../ebd4c816-2ce2-41e1-9da2-4333f24801a6.html | 0 .../ebf3a214-51a0-4be1-a504-78a087421e5c.html | 0 .../ec225b5f-4899-484b-8c73-f958c3278381.html | 0 .../ec2a9324-33db-4bae-8154-ba991ea43e9e.html | 0 .../ec424bcc-0e56-48c4-af72-cab32dcedfda.html | 0 .../ec56bd05-43dd-4ad9-8118-722afd703f35.html | 0 .../ec91accb-a5dd-44fd-868d-45a8eca637f9.html | 0 .../ecb9ba58-e97c-4d86-ab28-c903c027a224.html | 0 .../ecc43ce7-5a01-44cb-9fe9-2887e71e5801.html | 0 .../ecdaf686-e758-4f9a-958c-34c0b2b9c027.html | 0 .../ecfa7440-6e12-4c36-9508-20f0ec69c56a.html | 0 .../ed020ebd-a93f-4fbd-b863-f13f6fcfa3a9.html | 0 .../ed073b9e-2e87-41a9-aa98-0afd327f2861.html | 0 .../ed1f2268-76c5-43f4-a67e-6b8a7a2e72e8.html | 0 .../ed3cc0e0-80bb-48eb-95db-d8a94f7cd4ed.html | 0 .../ed42b7d9-ea1e-4608-85f4-00b936b10b64.html | 0 .../ed468912-cd97-40a5-92bd-caa5e5e725f2.html | 0 .../ed556613-ed39-4316-94ef-36eb22c94ad3.html | 0 .../edb7356f-7bbf-413d-85ea-df4c6e5090db.html | 0 .../edc7cae8-b08d-4f19-93d8-ce3d628a09fd.html | 0 .../edea375a-988d-4a02-ad23-679cbf3a4182.html | 0 .../ee1da991-a34f-457f-b0e7-5916a84b77ac.html | 0 .../ee48d04b-abeb-4c14-b14a-d82731b77e88.html | 0 .../ee4e8c92-c10e-4773-a9aa-29d9e67890af.html | 0 .../ee5f3b1e-0eb9-4468-b4b6-b18fa63a0041.html | 0 .../ee73d573-f4a5-42a0-9bbb-e6a47185c99b.html | 0 .../eeb15cdf-2734-480a-bd9d-7c8917519622.html | 0 .../eeba19c5-f0a8-4151-8b76-c15857bbdc58.html | 0 .../eec33edd-41b9-4dda-a8d3-8a7659066d71.html | 0 .../eeda0068-26cb-4c21-8230-9383d1c08ecc.html | 0 .../ef0102ed-1a3d-4892-a19c-60d148af633d.html | 0 .../ef2a184a-1412-4d8e-b8d3-df9dd7e2b2e1.html | 0 .../ef38f00c-b30f-4172-a8a4-6a76a66e1bf4.html | 0 .../ef4f6c42-231c-46a1-b743-c941c7d15d46.html | 0 .../ef536a48-bc92-418a-a8bb-5f5b7aeb3977.html | 0 .../ef7613ed-944f-4166-8482-d22cdbca2432.html | 0 .../ef846337-8f83-4919-a052-e3cf15a6ca9e.html | 0 .../ef875c5f-4fb6-4668-8cac-a4f551d03b90.html | 0 .../ef9f5700-f56a-4442-8bd2-372a465eadf7.html | 0 .../efb191a1-4679-43ad-8a0c-9c43a543a9ca.html | 0 .../efb6d16c-97c8-44c8-87e7-dfebb32c57d1.html | 0 .../efd56862-9b3d-446c-a0fb-23b31940bacd.html | 0 .../efdaa812-6536-45e2-9a29-9339aa721668.html | 0 .../efdd1963-1b73-458d-aa04-82ae71adc6e1.html | 0 .../eff0c31a-e446-48ce-9ff9-ced9e822f0e2.html | 0 .../effd231b-0291-41a8-8dfa-35b75d76c394.html | 0 .../f01ab956-63fc-4ace-a27e-5c3547b879d2.html | 0 .../f03bc0da-9e68-4810-8c86-9a3f53487fb8.html | 0 .../f042651b-a181-43e0-98d6-a2ca789681af.html | 0 .../f05bd5c4-8db8-4764-b439-1ff91a0aec00.html | 0 .../f061ead2-fdd6-4a9a-9200-f512c3f3d224.html | 0 .../f073e117-c917-4e08-ab31-a41beaf3c508.html | 0 .../f07887c7-5c25-4a42-8c36-04be59af032e.html | 0 .../f09d2760-4103-44f3-9a08-127c7ea51b69.html | 0 .../f0a171b0-735f-4dff-90de-8d9bd181ef3f.html | 0 .../f0c3bc89-f93a-49f4-81a8-5e9356e79c62.html | 0 .../f0fa4b2f-68bd-43bd-801e-db4954c6ef32.html | 0 .../f107f438-71f0-4c50-9bcb-3076b2a61b2c.html | 0 .../f12dd29b-c2dc-4f4c-afcd-884fa334e363.html | 0 .../f14ffea9-2b9d-463c-a6f6-611621a5d538.html | 0 .../f1759c9f-59a6-4ee0-aafe-c779035470c2.html | 0 .../f180f2c3-c10c-42d2-9da3-6de0cf99f3d5.html | 0 .../f1890790-5d14-480f-a197-6f10f3279590.html | 0 .../f18c0d16-f5fd-4f95-a271-981b764c4d60.html | 0 .../f19a2a8c-bfb3-422e-a706-fed0160f6163.html | 0 .../f1ae61b6-1173-413d-b4db-a03ac3757fcc.html | 0 .../f1d6e89b-0db8-4b20-917c-bf46e0645220.html | 0 .../f1df477a-dce6-4ff4-8834-c279fb258b52.html | 0 .../f1e3d270-5679-4d6a-a35b-f3ad20164f3f.html | 0 .../f2500ce1-47f5-414f-9293-7f2a6d6c33e3.html | 0 .../f25e8552-a304-4fc9-ae86-0a7b8b2e78b8.html | 0 .../f26ce962-fe7e-4a8c-b151-f156c2205979.html | 0 .../f2834133-9a99-4601-8763-384d02da90f0.html | 0 .../f2876a0b-8512-4cce-96f6-099d1d9766a1.html | 0 .../f2b0ca07-a873-4309-af04-957c11a222dc.html | 0 .../f2c78abe-e48b-4a2d-917b-a76f9186fe8a.html | 0 .../f2e67325-17b6-4d99-be62-ca56fc2b70c4.html | 0 .../f2e7cba1-f9bd-4b1e-b9ca-131b6b473dc3.html | 0 .../f2f99b57-bf6f-4ecd-9274-811c80efd621.html | 0 .../f30ee3bb-b661-41ad-9f2d-b85522b2d4ec.html | 0 .../f3131882-a879-40c1-b7ce-528ec1a1edca.html | 0 .../f3151e97-ae69-433d-844d-936708f9fc99.html | 0 .../f35031b0-1501-4080-a748-69a85dd66e62.html | 0 .../f358d414-cac0-4f0c-a1b7-df03d5e0a3bd.html | 0 .../f3605fc2-bae3-41c6-bdb5-f509d2a487f4.html | 0 .../f360f497-6372-42a6-a6cf-3a6167583fbe.html | 0 .../f37de0f2-119c-417b-850d-3db151cee11a.html | 0 .../f39474be-e9eb-4ff3-b7f5-8caad429bd56.html | 0 .../f3986181-b713-4ccf-a3bc-25ab363c91b3.html | 0 .../f3b2bfff-b601-4fb7-bde9-587bd75787ea.html | 0 .../f3cf55a7-9438-4999-997f-ebb34812e87f.html | 0 .../f3ea113f-0594-452e-99a2-e8ceee6fe499.html | 0 .../f4024591-1fa3-4c23-aaac-6925701b2c6b.html | 0 .../f40c3682-d126-478f-bc5a-bc1d1dfdda5f.html | 0 .../f43ff24b-8547-4f37-917c-f9f6c56a2f17.html | 0 .../f443c1ea-7fc5-430b-abe5-5edda4db4018.html | 0 .../f44ea9f5-f805-4e10-a1eb-6987de1f4fa7.html | 0 .../f4613a62-abc3-4c6f-86a4-83f23abb2ac3.html | 0 .../f4b596b1-5ae9-4711-a84d-a5004bc8e1be.html | 0 .../f4b8864e-b234-4d2b-8772-b13602745b24.html | 0 .../f4d4f1d5-ea92-4a73-b16e-63d53996f436.html | 0 .../f4d9a371-ae7b-4ba0-9e0b-24efc8be5d69.html | 0 .../f4f2ef41-306a-43c8-8aef-4047a4afb621.html | 0 .../f5037a37-7b2a-470b-91c9-27a0cba52e02.html | 0 .../f5072063-0a52-4a9f-8e30-2b047305c63e.html | 0 .../f5520a83-bc9e-478c-91da-d912ed89a144.html | 0 .../f55de017-1035-42b7-9f0f-03cdda1b81eb.html | 0 .../f5b35c78-c626-4c73-ad9d-2dced8539afb.html | 0 .../f5c0fad5-380e-4e2c-a5a5-2e4d72441a25.html | 0 .../f5d4280c-3d04-46c6-9b04-cf7bcbf8de83.html | 0 .../f5d4e234-e87a-427b-bc09-b491123d1d80.html | 0 .../f6193e2a-40d0-4388-a217-6e2ec23aee6b.html | 0 .../f6321126-4a33-4a52-ae62-678e987ade6b.html | 0 .../f63a66af-24a0-4b2b-9f0a-2e1b675e94bd.html | 0 .../f64b3078-cb34-4a72-982c-c835b2fb2239.html | 0 .../f6535755-a0d7-4e48-9879-52e159c2eeeb.html | 0 .../f675eb47-4ad2-4743-822b-f85392e7fe71.html | 0 .../f6a9bbc3-26a1-4299-9b75-30315edf1711.html | 0 .../f6b060ad-a746-4998-ac17-b5391b098c94.html | 0 .../f6cc8bc0-851a-42c1-876e-56800bb30723.html | 0 .../f6d0b936-e2e4-4c6d-9ec2-103ee86b09ea.html | 0 .../f6d46354-f718-4d25-aef1-c21eeb2ffcad.html | 0 .../f6d48031-9499-4850-addb-9d950b0fd927.html | 0 .../f7098778-b33a-49d0-a21a-65e1603a1ee3.html | 0 .../f7157efe-e58e-45fd-92b2-60c598994e86.html | 0 .../f7187f98-032d-41e3-8cbc-d74c67e898ee.html | 0 .../f72a3173-4205-4c66-abf4-1c7a5e689b13.html | 0 .../f75733ef-3c1c-4680-893e-48318a7e98eb.html | 0 .../f7b3918b-edaa-48ca-9ce8-2a98918daadc.html | 0 .../f7b4969f-f5a9-4c5c-a13a-689dc4bad380.html | 0 .../f7c815c6-59b4-4dbc-b89f-ca87d36fc999.html | 0 .../f7c92ecb-0dab-42e3-bd8c-d06f8b8ad4d2.html | 0 .../f7e53bb8-3b5e-44c5-8d50-55bac339de1e.html | 0 .../f7ed4d09-de50-49eb-9582-a351449a1df1.html | 0 .../f7fcfa94-be1a-417e-80e4-33424a527a5a.html | 0 .../f8091f77-010b-4b56-aac3-d79959c2f9fe.html | 0 .../f81f02af-4542-4f8c-b45b-1e78e570febf.html | 0 .../f82004a3-1a54-4bab-8d7a-a271e9377400.html | 0 .../f8243b9e-cc03-40af-9d07-7a62cf9bb287.html | 0 .../f8372cdc-9f1b-41eb-98e4-f7c4ebe13205.html | 0 .../f83d8bc7-e37f-486c-88e9-fad174de2c94.html | 0 .../f8480981-770c-4d69-9a2e-43e461fb1e8c.html | 0 .../f849fdd2-9291-48f4-9ed1-e2ceb7edf5b8.html | 0 .../f857e4cd-3594-4bc9-bc58-ecec530e1333.html | 0 .../f8587186-718e-4bb1-9f6c-099485419a9b.html | 0 .../f85ddcef-01f9-4481-8bb3-b4d3734beb75.html | 0 .../f86f1a62-8d5b-47f7-9662-e064f8dba4f6.html | 0 .../f8a834db-6a77-4127-91c0-16b747e08887.html | 0 .../f8ac3e44-b4ba-4018-809f-eba109b0d815.html | 0 .../f8de004d-f52e-4cd3-99f7-23290aecadd2.html | 0 .../f9108530-4ac1-4491-806f-e8fcba9c32f3.html | 0 .../f91d5f7e-7e96-4ec5-846e-c01e973b0fb1.html | 0 .../f923b656-2a64-45bc-a666-667d2cab3ec1.html | 0 .../f957cd16-db23-410a-abc1-ae61c60fc482.html | 0 .../f96a2a67-3e68-44fc-a9af-ac7bb0d876de.html | 0 .../f96f233a-cf7d-4b2a-a6b4-d27233a8959f.html | 0 .../f9781de5-6d85-4cf8-bda5-7f0aa7e59152.html | 0 .../f97b6530-c203-4977-8b50-c7f8a74a5844.html | 0 .../f982d513-9ed2-4a6d-b3d8-c1c4c3cde282.html | 0 .../f99c4572-2947-4139-b17d-d43608c0fd34.html | 0 .../f9a2e7e6-e23f-4d2e-801f-bfadc4a13e43.html | 0 .../f9aacb16-117d-46e3-9e11-dcfa7f85af85.html | 0 .../f9ae9b33-750a-43e7-820b-0f1fe4696744.html | 0 .../f9cb4614-b017-4b2b-b7ea-9938ed2f7f7f.html | 0 .../f9d16468-ab31-4674-8c76-07f212f8c5b5.html | 0 .../fa0413b4-980d-44ae-8737-8acbf6d4d2b1.html | 0 .../fa2acab6-cc6e-463e-8f12-0e6f6ea8abae.html | 0 .../fa4244aa-ede9-419c-b7c1-3a497890b348.html | 0 .../fa61943a-841e-494f-93d5-73867781ea73.html | 0 .../fa7907d8-6399-4f46-a2e5-e7425a95744a.html | 0 .../fabac8a9-d86c-4ebd-91ae-e122d581ff50.html | 0 .../fad1fd06-f066-479f-b5f5-192975141bac.html | 0 .../fb1df875-63fd-4359-951f-be256581c380.html | 0 .../fb30a12e-cf0d-46c4-b8d2-68434056b07e.html | 0 .../fb396fbe-77aa-4ea7-b8b2-2d58f8f3d9f7.html | 0 .../fb58a16e-c7ad-4305-b223-189112343287.html | 0 .../fb655412-ce21-45e4-a3ab-f7a6854a1397.html | 0 .../fb7fac6a-d678-4f1e-a61b-8adda8af3890.html | 0 .../fb9104d7-7af3-4a8b-8f1d-cf05e682bf70.html | 0 .../fb9f5818-c9dd-46c5-b857-394fb666c5a5.html | 0 .../fbad164e-f0c1-4c0e-bf3e-0bf079711020.html | 0 .../fbb068f8-b058-4cb3-9cce-78c097acab73.html | 0 .../fbb4c0f1-287c-4dbb-9066-743e612683d5.html | 0 .../fbc6dd18-09b4-4e1b-9b70-076419a8241b.html | 0 .../fbf845de-8dea-42cf-b5c2-8c7696b3da87.html | 0 .../fbfc088a-5f1b-4c6c-9e14-9a2a4554a15b.html | 0 .../fc091f34-cc4d-463f-a947-825f6c00b94e.html | 0 .../fc0c6b21-e926-4d50-8f95-2c7e8c45aed3.html | 0 .../fc1ef395-17f0-4002-a59d-9cc6840beaa7.html | 0 .../fc364b09-e30d-4567-86f2-3317e4743259.html | 0 .../fc379117-e7bc-457f-bc06-3869f76541d8.html | 0 .../fc3f6a32-8c77-452a-ac5d-a6a4f4256805.html | 0 .../fcb7e73a-c94b-4cef-bdf2-7fac711fd08f.html | 0 .../fcca04e9-00d9-4bbc-9caa-79290d684dbb.html | 0 .../fcd748b1-ab44-41c9-94fa-277c069a5764.html | 0 .../fd1462a4-e997-4369-b25a-acf7e166ff27.html | 0 .../fd4abb32-bdcc-46c3-bccd-f03fe0aec792.html | 0 .../fd4c81c1-45d6-4a97-83f9-e7c3da41d76f.html | 0 .../fd5611b5-6d2c-425a-8a1d-c2cdfadabd86.html | 0 .../fd584d82-571a-43f2-81fd-5cd97a9b3eb4.html | 0 .../fdb7a2bf-f85a-429b-8707-9fd28f997d7e.html | 0 .../fdde9d5f-ea82-4df8-a850-3b131dbade55.html | 0 .../fdec46fe-cb47-4a9e-8ee8-ae531c06bf8f.html | 0 .../fe0b2a90-f779-4d52-a5b4-016c9d58493b.html | 0 .../fe0ed831-be23-4276-8907-1bbe154728a4.html | 0 .../fe146432-c126-46db-9a45-555db08514fc.html | 0 .../fe2c30cb-5e37-48af-82cf-98fa734643c6.html | 0 .../fe3162ac-e3a5-4fb8-92b6-f5c888c29fcf.html | 0 .../fe4e220d-f028-4086-8fa1-79c097a34917.html | 0 .../fe55f338-f9f5-43e6-8647-8558e5766d99.html | 0 .../fe71982f-8fa8-4573-8027-e6989dbb8ccc.html | 0 .../fe753c1f-04a7-4fbd-8ec1-78f69f0a7b8d.html | 0 .../fe7def6a-c319-44f8-9f23-f53cdbf9ecbd.html | 0 .../fe893093-26cb-47eb-90f8-095014f14b61.html | 0 .../fe980394-d9b0-461b-9f94-46b3eca95241.html | 0 .../feb28cb6-13f3-420b-af9d-2b55fea4a288.html | 0 .../fedfc648-1e52-4b3c-9fb4-2ee97d1b4363.html | 0 .../ff007662-734d-426f-b18d-d2df6126fb35.html | 0 .../ff058bb8-007f-496d-9d36-598435f510f9.html | 0 .../ff4047ec-572b-424b-9223-3e3813d2bed4.html | 0 .../ff47eb15-1766-4d9c-91c4-54366d64876c.html | 0 .../ff4e3bd8-e840-412a-8296-f2795a1459b1.html | 0 .../ff79aa27-f5bf-4a0f-80c0-5d9c021d088f.html | 0 .../ffb44f7f-e530-473d-a139-0c72285c9290.html | 0 .../ffb77ba2-5c76-4eff-8380-cf6340023b4b.html | 0 .../ffdfa689-8b89-4d29-a1d8-311c3ca17898.html | 0 .../fff8c063-24ed-4e49-b2e7-92ecc61d185c.html | 0 .../id-003bb2bb2f8048ff8d82e140d6768986.html | 0 .../id-0054c97f5be749f788e1c01c433c9115.html | 0 .../id-00aa6d0adce54a9d918f1a38b8372c2e.html | 0 .../id-017fee5b46e14f03945630bb7ab17ea9.html | 0 .../id-035877f72f15435295d2e4f8d6b536ad.html | 0 .../id-038bd1bf6a55476d89f0b5937628d13a.html | 0 .../id-04bf065ed0f14a58b0da6129b8016093.html | 0 .../id-05c4c217469c422f92de101350ec9400.html | 0 .../id-06b7ddf0057c4a5d95930f0bd5e1dbc4.html | 0 .../id-06e7106c9bc9402b8bf6329d2c447040.html | 0 .../id-073a0470a4ec4ff2a6ba0799e9039dc2.html | 0 .../id-0b4bcb90105e4744aa93a10714575ac3.html | 0 .../id-0dc525a070a14e8090a335a73393f1d9.html | 0 .../id-0ec7e48aee7745e4bcaf4c4bbdb1a2c1.html | 0 .../id-11393c9f67724724bd56f939cf02ebe4.html | 0 .../id-126fd601948c4905be8ebd3d64d251ce.html | 0 .../id-12cf877d572d410bb16d4ca6f564ea3c.html | 0 .../id-15105dd9234840fdb668d461fa1d307d.html | 0 .../id-158cdc8d9860477a99155597d8cb1344.html | 0 .../id-16b6558405104d16a8e444b071123001.html | 0 .../id-199558fd981940c09b27cafd987b9fa1.html | 0 .../id-1c595278212f420194f030abf44fdbaa.html | 0 .../id-1db4f410be5d4301a7db4dd93c354633.html | 0 .../id-1e0e03b882c444ab8b2f99aadbec2fe3.html | 0 .../id-1e7c0114fed74cb785222864b1a35650.html | 0 .../id-23238961f2a04a1e9f80b44fdeb4e307.html | 0 .../id-23869a61529a46db9b4ce81cc20e47ea.html | 0 .../id-248411c6c39947edaaffb00f8128d601.html | 0 .../id-24fb3759898443de93bb2af28227c185.html | 0 .../id-27878db80ac5406e8d1e22f7f0e398b5.html | 0 .../id-2903b57f534a46e8945bc61210df371b.html | 0 .../id-2a48a4c112c049d1932d58403af049bb.html | 0 .../id-2afb39a20a30495f8a0c64c2a7a79640.html | 0 .../id-2bddfb62b85e4998980739ca245aabbc.html | 0 .../id-2bf2eaeb62db4c7da90ff44da071fa36.html | 0 .../id-2bfd2d19f0a642169422d8795a4a41f8.html | 0 .../id-2f02eed7ec354ab6b765d06d6681b43b.html | 0 .../id-2f074dc63fac480b86c576a99fbac1f1.html | 0 .../id-3075ac8f7f5a470585a21313a5c5290d.html | 0 .../id-30a52df10f904682add27cdeea826a75.html | 0 .../id-3361899465d14a9cbe8cb3471f9ecaa6.html | 0 .../id-33c629350ac94ab9bd81330a4ec45b8e.html | 0 .../id-342983e650c849748937ce8519014196.html | 0 .../id-34a18cd31c6240048fc0da3a7e256d9f.html | 0 .../id-36e452dd53324272b873710fb3f34aa5.html | 0 .../id-376271e4717b448691831e237ca3f5e5.html | 0 .../id-3942baadb2b64993b39982f04a293b93.html | 0 .../id-39b345d111414a719f5d938255490505.html | 0 .../id-3b2262276c38490299bd07cdaa5ad2dc.html | 0 .../id-3b9e9dc629204c16bed7abf8309c03dc.html | 0 .../id-3d1b98e280474621b0b20b51a70c56db.html | 0 .../id-404b75785a5345e4a71398da3077c053.html | 0 .../id-405fa6b1f7d34e4aaef25c8088721f18.html | 0 .../id-44128cbe8d7346b387de166f0b6a92b6.html | 0 .../id-44b77d4661de424f8ed1105c65185c32.html | 0 .../id-44ffa515686b4489a9e94c410e28e10a.html | 0 .../id-4596032779da40739f0954ea2e7945fa.html | 0 .../id-45be76c2e8224d86a8b41f1cbc80f675.html | 0 .../id-4653e96429a941da93f1b1f87f1a4958.html | 0 .../id-46dca7bfd75246f3af5472c98cd2729f.html | 0 .../id-474f23f9895b4b64b5cdce0a354a59b6.html | 0 .../id-496bb4ba378842069f430ed13a116e92.html | 0 .../id-4b61ede9395a425fbac942b15e01dbe0.html | 0 .../id-4bbaa46681a3417fa272adc54ce18b0a.html | 0 .../id-4c22ac9781bd4941afac598c4ef4145f.html | 0 .../id-4dd735f56e9645f0934a964b403072f9.html | 0 .../id-4deb97cbc52e406dbae74bb88e18341f.html | 0 .../id-4e574f97f60b4b40916afbd2edb63aed.html | 0 .../id-5023dac7895a4b309a3d89aab78ad51f.html | 0 .../id-50e76d4574c64001a08a7cc08efd8795.html | 0 .../id-52881c41004a42c48a58f315a511db78.html | 0 .../id-544aae364b514d3aaa6b93e7ba8f2171.html | 0 .../id-54b92f9933c746e78361e0243d7addf5.html | 0 .../id-5668abbf6f6a4808b075aafafb0238c1.html | 0 .../id-56d910c8e6bf4f78a553ca74c8980b76.html | 0 .../id-580bf8cf8a9741a8b5dfa4fb41c9ec01.html | 0 .../id-59df25116f7446f6bbb91110588e582e.html | 0 .../id-5b431a6edd364b5cafacd9f806398707.html | 0 .../id-5c108c538ef743f2a23b20f9c9cfbadf.html | 0 .../id-62122b2bc6624abf9363b1e9fc9a7ebe.html | 0 .../id-6224ec9d749f45279fca4e9e785f739f.html | 0 .../id-62815393642c4a718ee15f63f231db78.html | 0 .../id-64971367fa804b339573ebe0988eb4a0.html | 0 .../id-649a0c325e8246dd9afe5a8805263ce1.html | 0 .../id-6842d13e35d640faad70e863dd331d90.html | 0 .../id-6859c29481d9419dacb8309b88114e13.html | 0 .../id-697b1898c6094d53a7b476a64c5711c8.html | 0 .../id-69cb51d65aad4dfe8953d9d2d0d0b439.html | 0 .../id-6a450ce298be43e08eb225a15ca75dae.html | 0 .../id-6b77968b3ad241dda399ef0aa8a2f4d3.html | 0 .../id-6bc05b08e1dc4c4a98b5558609659531.html | 0 .../id-6befca6f260b47d6bf2e03e4f5edffec.html | 0 .../id-6f40319ee5214013915628d4bd2ae9a1.html | 0 .../id-6f86af4468664fdd89b3651544938c7d.html | 0 .../id-6ff8553b755c426a8345e060f3de1cb2.html | 0 .../id-7030dca6edfd441ca68662383afb2ff5.html | 0 .../id-71faddfb0e124e42908fea3d7ba64161.html | 0 .../id-7371436f8c5e4e2d9a5ea0fb27e3f0a4.html | 0 .../id-7518db167e4248178ff61b0bacf78248.html | 0 .../id-75db05eab0ef47519857505a23fe66f2.html | 0 .../id-7699706992f34008bca2ed20a9fc91a5.html | 0 .../id-76adcab5fbf444d1a7fd36057165f282.html | 0 .../id-773292f4a6624d0d9ee39f7aa910ec77.html | 0 .../id-7874710f69714cf68c5f93bd11ff5952.html | 0 .../id-7bd677be68c549429d911db72c606da5.html | 0 .../id-7de415e2d5f243ff8f9d53ddf0c8e105.html | 0 .../id-81d1f0351a7b4eb2a5af709406fbb946.html | 0 .../id-8237fee75b4640bb9cdc6b6ab2916c97.html | 0 .../id-8303fd4f2872461a98fab8971d3b5602.html | 0 .../id-846a11f610ae4fe0917a9560911a3c2a.html | 0 .../id-85b97695192446deae0659553029449c.html | 0 .../id-8646d0704f5b4ebe9e50d7058ea8d02d.html | 0 .../id-873b4d3c577743eabef7fdb29c73b04f.html | 0 .../id-87766b7c2d39430db8a99111ee8c7d24.html | 0 .../id-87a4e33ead574e12ba9face74d1149a0.html | 0 .../id-88fb741c40b549bea3e4390e9bf459ed.html | 0 .../id-8b026cea134041cbb9437a2885a5f87f.html | 0 .../id-8c813a25fe504bef997a39ffbf07936d.html | 0 .../id-8e42b5e25e754b1b84eef7cd86fea3c8.html | 0 .../id-8ea80cc5a70741e6903732d62370dfae.html | 0 .../id-8eec572428c44cd1a26b18e95380551c.html | 0 .../id-9041b40ae7444b89865466050c7e5f99.html | 0 .../id-90ec6121a98840ae956f2a6551134a5a.html | 0 .../id-9153a6af20434efdbd247f3706ebe073.html | 0 .../id-92122ac86fc54a538baf042ad122be64.html | 0 .../id-93d716b55a584d6aac8d342d1898d28a.html | 0 .../id-95c9837ae10e4bc596faed5311f77792.html | 0 .../id-9628ca1c1c0941c392d462cef87024da.html | 0 .../id-972074756be946889819b71d14cf47ea.html | 0 .../id-97407b3ed9ad4b8d9670e651e263c74b.html | 0 .../id-983c3f5540864a5e9f80fc0f96e48a72.html | 0 .../id-9c919ceac55e4284be672f23f9d10e98.html | 0 .../id-9ceae0abc0ab446b858d5cbff5db5329.html | 0 .../id-9dd25957304c468292a68dac9b8c4a06.html | 0 .../id-9ffce6e9d6cd4750aa692f93f5c3f032.html | 0 .../id-a0d17b00b63b466b8f0b09e053719e99.html | 0 .../id-a0dc0163e8d84b24ac91f1dd1ebe679e.html | 0 .../id-a200518810ed4a90845db258ac961b67.html | 0 .../id-a4a181ae337747a797a93fdce88ead91.html | 0 .../id-a59722387fd045928007c70419e9f603.html | 0 .../id-a6be387b57c84fb782eee1f87ad9576a.html | 0 .../id-a70c8f14af1b4ba0953ec32a21606d7f.html | 0 .../id-a868e6abc5cf4f40a0c1cf597c621823.html | 0 .../id-aa919d83173f492493177511dc5b3343.html | 0 .../id-aafb4463c794412e92ba403eab3a5acc.html | 0 .../id-af20d8dbd0a64354a0c2fcf1b115d370.html | 0 .../id-af5908e2d5134142853ec47ba535dccb.html | 0 .../id-af655db9666641afa2510e1d9d01e800.html | 0 .../id-b07c01013c584c7e805f3e2561ed46a1.html | 0 .../id-b0ceaca79726435295d3e489c145f1dd.html | 0 .../id-b39bc8394319460cb19c1845a5ff40e8.html | 0 .../id-b6b96955da774e0891ad026f990b31a2.html | 0 .../id-b819fbe576b646bd8a0173be48109271.html | 0 .../id-ba509c330c984b92b13e583f2b22d7e7.html | 0 .../id-ba63677331164ee8aac2bfe1ca55c220.html | 0 .../id-bd9912174402413eac20435beba3f00c.html | 0 .../id-bde61ca6989148f6a150f9bae77e21d9.html | 0 .../id-bea22bfb12934b5b92d19bece4a57c74.html | 0 .../id-bea3e6c1396745189180b82148c1278a.html | 0 .../id-c1d4f05bab3742d7a1333833a22f657a.html | 0 .../id-c1ee7937b21449c18cc8abde33e3bb5f.html | 0 .../id-c1fb8f7515394e2c820bc176047780e0.html | 0 .../id-c227708e1ea9403a842b1436b893f198.html | 0 .../id-c2510f4823d043ff8b480fc0fe92e7c6.html | 0 .../id-c345bf5765b447969e349281ee970fa6.html | 0 .../id-c367704d797243e39bff689538db8cc7.html | 0 .../id-c36efe54b537463dba7059158a00e0d2.html | 0 .../id-c50ff2b123e94bfeb9971f7bf8382b22.html | 0 .../id-c51a4f1a318245939e776041eccb3c9c.html | 0 .../id-c54c0d1c5aed42319206ffb3b2dbaef9.html | 0 .../id-c5c687b6c39b41b5912c440d5bfd7faa.html | 0 .../id-c9cb192cc4684d0dbbfc3b2c62f3e4b6.html | 0 .../id-cb3b94c161264b6896cc3ba58e3902fd.html | 0 .../id-cd671377770d454293ffc3eabc72c3f1.html | 0 .../id-ce2df41cc4c849db8fde1df1a00dc122.html | 0 .../id-d01310339437475c963bac60445beacb.html | 0 .../id-d0f09834f18d4d7eab3f12f6277aa1c5.html | 0 .../id-d1569af3ea7240089e6b5c3428d65304.html | 0 .../id-d54a4035f1e64f5b8c510d90ea6ec270.html | 0 .../id-d568e7e611e748bb89c7e5da46b8ecd6.html | 0 .../id-d70105ac8f844c5ca19ab95c052238c9.html | 0 .../id-d70d237a66444331b4d91d24d9ef73d5.html | 0 .../id-d7daaacfd2634e7fb4c9e8943d568ed5.html | 0 .../id-d7e7c1bee0bd48f6aca5acdf2d1b92b8.html | 0 .../id-d8b3d3bbf81048f4917167368def560e.html | 0 .../id-da44aca9226f4e8a955f36af0f4191fb.html | 0 .../id-dbaadd14d0ed4dfe8c97829d96cda865.html | 0 .../id-dc4ccf9c94e94500aca70184ac86059d.html | 0 .../id-dc96cd5b41a54897a819896cd37992bc.html | 0 .../id-dd6c3a3b162d408ca2aee32bb4098692.html | 0 .../id-de6c673247cf467e99b6adc996c5b471.html | 0 .../id-dfd548b610614925928876b33d567dba.html | 0 .../id-e3003e793fd24de09669c906b5a4a0d3.html | 0 .../id-e388cf0ac5d4471a99a39a83d56fa719.html | 0 .../id-e46fa3381b5346049f29d9aed2f18154.html | 0 .../id-e4eec81fac78401198b7ad936ad64c39.html | 0 .../id-e5e170b128d34e86b5718a62d4710499.html | 0 .../id-e632fab5d0a7413c81d3331e519693b9.html | 0 .../id-e895a7bbee764032ae658c7e040673fc.html | 0 .../id-e94476d2912b48c08fda2b58331aca1b.html | 0 .../id-e9bc0136d9074474b472fe413791aabf.html | 0 .../id-e9efa0330015499b8cf50af7753c3d89.html | 0 .../id-ea59ad0303d64378be16100fbd2d2526.html | 0 .../id-eb8717996ca741fea954586ee8bee963.html | 0 .../id-ecace70cf2424f3ab6dfe825c32ee849.html | 0 .../id-f067b7f94daa4fd3b1367e223a232ea0.html | 0 .../id-f0c2970b4d6d433ba7c8cd244349cbd0.html | 0 .../id-f2b8c7bc77554728a61c2a379c6ed917.html | 0 .../id-f35d942bfa984c95ae69ab43dea68d9b.html | 0 .../id-f3f2f5cb126748459e1c77e577c2b6a6.html | 0 .../id-f8e5bd59e0e94d0889d9f1e5a05b22b1.html | 0 .../id-fd087378dfd845ce8c0d0501b6d363d6.html | 0 .../id-fec6bb4c59794779814a2ded021d13c0.html | 0 .../elements/model.html | 0 .../00ac2c5a-2461-407d-994a-522621827cbf.png | Bin .../07a38777-a034-4a6b-8f90-6a9874ae035d.png | Bin .../081ae1b1-7c1a-4a87-8f07-188d90448d4c.png | Bin .../0a8ae1fb-a3b9-4baf-8f9c-a8752f200c6a.png | Bin .../0b28e43c-0d28-4a27-9303-786f6b1bb04c.png | Bin .../0c953c3c-994e-4cb7-9d3c-926515fefc17.png | Bin .../0cb18ec8-ed64-4cb6-864f-3416ca2d198a.png | Bin .../0dabd82b-9a4c-499b-afe7-da988722d1da.png | Bin .../0e94dc1b-2f53-4777-9d6c-07be9d48d3f6.png | Bin .../1050ce85-8788-44a8-a1d8-c9de65b3cfe3.png | Bin .../1618d303-0b6a-4c28-9e71-7bcac8c7d66c.png | Bin .../17db811f-5cd6-41b8-883f-23cc1373f61b.png | Bin .../197f2e6a-96de-4fa9-910c-0cbecb488bec.png | Bin .../1b37c1aa-1336-4038-a23b-d067ed080a7a.png | Bin .../1d12d390-5fbb-4944-b82d-26660e3f4ad5.png | Bin .../1dc1de6c-0489-4299-8f28-2096975a4838.png | Bin .../20f74adb-5143-4ea4-be7c-abf026b2e8ae.png | Bin .../2274bd38-980b-4e91-9a24-09578c013b80.png | Bin .../28bb74a3-9728-447a-8d72-d7b54e58b591.png | Bin .../2e5cfe74-9b17-476b-8ca6-d19b142642d3.png | Bin .../3092fb53-e617-4dbe-ba08-ce4f5f7bc167.png | Bin .../33e43de8-bac8-4d90-952e-12597a33df65.png | Bin .../34b6537b-5534-4e64-95a5-00a8ffea9d02.png | Bin .../34d88f16-ab1f-4e58-8515-6feaec2d62a5.png | Bin .../39dc2922-646c-488f-8615-6fb7a16830b6.png | Bin .../3c419c35-0e35-4e22-b6da-072d9243593c.png | Bin .../3efe0da1-7899-4949-a225-6db9d42f6926.png | Bin .../453f404d-0a13-4dce-9c11-0afdf527d1e1.png | Bin .../49a674dc-c388-4056-b572-87e8cea77181.png | Bin .../4c0f9830-5065-4922-902f-c3734c524545.png | Bin .../50be8b01-7789-4f72-aa5c-39904f3ab3f0.png | Bin .../51754659-d4ae-4a21-9ea2-dc58655a9456.png | Bin .../53be9acc-0c21-42ea-a060-1d7839892b3c.png | Bin .../556e83e8-3dd4-456d-9268-efaff2bdf9ce.png | Bin .../5652c6c7-bf2d-4a43-8d90-e64c9b7c0a5c.png | Bin .../56c03b2e-15e1-4de3-96e6-332287b6e3e7.png | Bin .../5894e7ec-d626-4c77-913a-f61b36267329.png | Bin .../58a3ed11-fb28-498e-b912-bdc4a9e2a82b.png | Bin .../58c28a73-0190-4a6b-aee8-caf039021d60.png | Bin .../5b93b02c-895d-431e-8213-87b70e81c686.png | Bin .../5c18c323-3686-4f73-8cd7-408bd9a68394.png | Bin .../5c8c4ecb-89c2-4a11-869c-41d8330a0527.png | Bin .../5dfea728-f0a4-4532-8255-aba4a475bff7.png | Bin .../68a12e8c-1eea-4e9b-9dc2-9cb4d89edec1.png | Bin .../6927b348-6f6d-4836-a6db-96bb2ecf0b8d.png | Bin .../6d9d9c8b-f34f-4806-9efc-34affd994099.png | Bin .../6f156b03-6698-4bbe-9376-d3339ff0cd4c.png | Bin .../6f7b7410-581f-4b4f-b7c1-e9a6585355c2.png | Bin .../73dddaff-91c8-4a57-a28c-c26ceeef21f9.png | Bin .../749152f0-1015-458b-8521-421b2e81cb7a.png | Bin .../75755276-fce7-4ea3-b17f-ca2c02528780.png | Bin .../76654356-4818-4f4f-90ad-baa95663e02c.png | Bin .../7a3be38e-7df1-460a-b9d6-fdc735e4390a.png | Bin .../7b2f2dcd-d491-45e1-b992-28d946254450.png | Bin .../7d3cb257-9703-446c-aed9-3ecca665e269.png | Bin .../80554891-2aab-49d1-a6cd-453db07e4c43.png | Bin .../81725358-dad2-4a80-8c44-fde5d3885b78.png | Bin .../830c1fd0-0773-4ee6-8f2b-1a4b5fe24e7a.png | Bin .../83138509-14d7-4de5-99ea-63b35cfa95d1.png | Bin .../833a39e0-577e-4c9e-bb08-77887e473433.png | Bin .../8757eca2-0d19-4277-ad5f-99bb6ef53f37.png | Bin .../87605ad8-9255-43f7-bb06-e162a2987d31.png | Bin .../87b7bc68-e167-46c5-ac00-3f63c6bb7e81.png | Bin .../87f45453-8608-413d-b2d6-81088464613b.png | Bin .../8946283c-9e57-4ada-889a-2e2d4fc54143.png | Bin .../897333ea-5006-4dbe-b4d5-ca6409789037.png | Bin .../8c67dc20-3b7c-407d-9a60-c3b50d68169d.png | Bin .../8c6df0a1-5306-4a77-9de8-97c9e6eae53e.png | Bin .../8de5d237-d280-4656-80f5-1a63f42d7bc6.png | Bin .../928f2592-d38b-4b62-8841-47f8c3ebafe7.png | Bin .../93cd208f-6cce-4cde-8d78-22e06fcf08dd.png | Bin .../98e50d5c-3e4b-459d-a949-39de7587f5a0.png | Bin .../9952fa14-77c7-46e9-adfd-0bce4049553b.png | Bin .../9af1c006-6e44-4e92-ac06-6ac705ecf85a.png | Bin .../9e19f7b6-5ff6-422c-8975-4979ab57f559.png | Bin .../a282f8da-9466-42db-af61-280ed9930371.png | Bin .../a58958bc-2048-499e-87f9-8048454190fa.png | Bin .../af519ca8-a892-4627-a0f6-77b055f32da1.png | Bin .../b1af5501-989f-434d-b71a-50eb3c66d827.png | Bin .../b4f7426b-79a2-4b67-882a-c519d04b651e.png | Bin .../b51aaed8-1e4c-44e8-9f39-7df7c0c369e2.png | Bin .../b6811261-01b1-4f92-b4ef-12c8cf959aa0.png | Bin .../b97b2681-7c53-47fe-b899-c6ac0de4d9a3.png | Bin .../b99fd98c-4fe6-43e4-ba7e-ab2988eca3fb.png | Bin .../ba306546-fc22-4827-bb65-f8e413886aa1.png | Bin .../bb583668-1273-44d7-a88d-e0d219b84679.png | Bin .../bbedec01-ffef-4063-abba-1cc92da9e01a.png | Bin .../bca0768a-3306-4e57-933b-abc64a153d83.png | Bin .../bdbd0690-4813-49f7-97a8-8521fc371d88.png | Bin .../be6074eb-3739-42ae-b86b-e7cae6e1a458.png | Bin .../bf091a49-e570-4600-a963-502436b84f38.png | Bin .../c095ad5e-c8cc-4638-b977-c7028c8b5d23.png | Bin .../c0e8af05-1bbb-4269-9ec7-a9cb6c5c8b66.png | Bin .../c112c25e-881d-4fd3-9a47-5b55d30592b3.png | Bin .../c35a5b8b-d429-4e24-8404-9c35817b4f37.png | Bin .../c4837879-c378-4e61-958f-9159fa9e26e7.png | Bin .../c4d02459-d3d4-4668-a686-52e02e604ff4.png | Bin .../c5bf6758-2670-4e3f-afe1-f7ba16f85f48.png | Bin .../ca405cd2-d732-4bb8-bee4-20629c3b040c.png | Bin .../ca52fba9-1e26-4a94-bb10-64fe8e4ae01b.png | Bin .../cce8df8c-d0f9-41b7-a2d4-537de2d543bc.png | Bin .../cf1387bd-5133-4b31-a98c-cb5bf94efa6b.png | Bin .../d1466cf6-135e-4cac-8c54-ae5264889e0e.png | Bin .../d447a1a9-7ceb-41f4-82ad-1b262aa5539d.png | Bin .../d50f3e55-1a7b-4c89-a532-c674e8d5da29.png | Bin .../d5d0837f-827e-4e0e-b314-d7a9b0ae8ea1.png | Bin .../d6b95a23-2d52-4b0b-85d9-03445792060c.png | Bin .../d7a666ef-d86a-4d06-a528-9944474afedf.png | Bin .../d9861c01-5b14-4268-b3d3-9ced861e6c64.png | Bin .../d9e6658b-3e9c-4a93-a33c-0b50f0c3f5d3.png | Bin .../da2dae15-373c-4c05-9d8a-737dc810b8d7.png | Bin .../dbc1fb81-7d17-48e0-9c4a-f88680fb999b.png | Bin .../df1dfad2-95e1-4097-a9db-4e6e6fbae550.png | Bin .../df7375f9-514c-45b8-86e6-2e61789514f0.png | Bin .../dfad9615-8898-4af2-af15-3f61c6696fd2.png | Bin .../e00fefee-f93d-4b74-a1a9-6f0aea5d1d0f.png | Bin .../e0eb4804-d8e0-4310-8a4f-a924dd158fdf.png | Bin .../e31d4bb8-c0c1-4412-9226-a4b3c5c770c6.png | Bin .../e392ffe6-321c-4b1d-9aa8-0bd58e497e1f.png | Bin .../e4579da6-9927-4c71-a95b-a76671512b3f.png | Bin .../e4d750dd-f058-4c21-ac0f-cef0275dd5a7.png | Bin .../f14b68e7-b98b-438a-947a-bc84327e424d.png | Bin .../f1f89b71-14d0-474d-923c-ce5b175c21db.png | Bin .../f4da23e4-ee58-49b3-b47e-45cb29aa1ac9.png | Bin .../f5ab2a23-af9e-4b52-b065-667e3fba21e6.png | Bin .../f95d3794-c6f4-4dbf-9ab9-b881633ff765.png | Bin .../fca3d7f4-cc95-49d3-92e2-a386c5a089d1.png | Bin .../fceaf399-f380-446a-a6d8-3c57651d671c.png | Bin .../ff6be561-816d-49ba-8cb7-94f0f368352c.png | Bin .../ffa8ffe4-2c55-4ccd-97c5-b621f759b585.png | Bin .../id-113d3857ca7c493bab31f9cab968b684.png | Bin .../id-28903a8b84594435bf7918184111b0eb.png | Bin .../id-6ce8b12e754e4b128606d433d271f303.png | Bin .../id-79aedba0196148b0b4d54ec26ec1cb1a.png | Bin .../id-8a9d1a27f6944591810a1cfb0980bf26.png | Bin .../id-bb483777115f400fad270e8b35e2e950.png | Bin .../id-c0b6b3025fc147f3b2d88fd0c29797e1.png | Bin .../id-ef87fc757efa4d64a6df101e1e4f821a.png | Bin .../id-f0ec0e39125846c0ae6ba61297ac595e.png | Bin .../id-f9e30582684b4fa7988df040a957f347.png | Bin .../033bfba6-c676-457e-bcb8-df5307c67782.html | 0 .../0b4f1f23-0598-48eb-b309-0f890f2fd299.html | 0 .../0c3144ea-9a38-474f-8c08-fdf86ede9cc4.html | 0 .../0d7753c2-202b-4304-a3e9-a7e509ea6e6c.html | 0 .../0f070b75-7c76-4273-b82c-dfb4f0572dee.html | 0 .../102d56bc-0f36-4a60-82cb-31ec41d0b775.html | 0 .../10e01e96-ae21-44ad-acfc-2aa14fdc2348.html | 0 .../12c83ca9-5439-4dcf-a070-96d557f30d7c.html | 0 .../13885dad-d2e8-4952-9123-0bfec146b900.html | 0 .../18ac3e97-4019-4490-b2b4-3fbb27185e4b.html | 0 .../1a1630fa-42a0-47a1-acf6-4adab8731424.html | 0 .../1b2c23e1-4c89-4aa8-b6d7-2cbc2451cb65.html | 0 .../1d661f7b-f717-415d-91b6-915ffc2fb596.html | 0 .../1e5838f4-5d4e-44f5-9ab7-754b8adece5b.html | 0 .../2045f098-4462-45e0-8614-e495e8881524.html | 0 .../207b8273-9c52-4cee-90f5-78845dfa2259.html | 0 .../24932ef1-59d4-4d7a-aa1a-d776223f3e9e.html | 0 .../250f51f5-6058-4c95-9142-4559dc5943b4.html | 0 .../265c7dfa-f409-4fb0-9b70-a4d3348d2d95.html | 0 .../2987faaa-f600-45b9-b81a-c98fce1bfb89.html | 0 .../2c2906af-9e78-4e8f-a618-18420d077b94.html | 0 .../30a18dae-cc16-4ce4-848e-375279913095.html | 0 .../32cb2662-9dd4-49a5-b180-05500b49bc37.html | 0 .../3474c659-2c87-444b-9301-303f399f4d3b.html | 0 .../399899fe-2820-4a9c-9f9d-7bd9c14eee07.html | 0 .../3a1c328d-6cb3-40cd-a80e-b2dad9f0dcf3.html | 0 .../3a4c794b-7518-423c-bed1-199314183786.html | 0 .../3a5b91b9-8399-4902-948e-93f246bd6682.html | 0 .../3ab3c063-07fa-40c1-b70b-63aef169f79a.html | 0 .../3dec8287-929c-4914-a65c-e7c8cc9d0369.html | 0 .../3f549ce6-5112-4cfa-8355-3b46cd3cdfb0.html | 0 .../3fbe51cf-4dc3-4783-b8a1-fdb8f2d683c2.html | 0 .../42dfb378-50a8-4a8f-907f-cd9229495263.html | 0 .../466e7afd-8afa-47bf-a522-a3cc419fb8c9.html | 0 .../4d81bce1-0376-40be-bbaf-9a424612988e.html | 0 .../4fea83ff-517d-44b2-a36e-f2d86e1e4026.html | 0 .../514c4c1c-3c68-414c-b6de-891943cb92fe.html | 0 .../5172da0d-0395-478f-a6bf-6d21c756690d.html | 0 .../51907461-ebfa-47b7-a1a6-4578d7b3d41a.html | 0 .../560fae54-387b-4c1d-91f4-3800f4dc1229.html | 0 .../56620451-0149-4e7d-b12c-399dd8e20524.html | 0 .../57233f67-e351-4052-8ab7-28a5a5cc30c4.html | 0 .../5a4f8a45-6c09-4843-83a9-6c107e32f91a.html | 0 .../5b604a10-b789-4eeb-8af7-087080275410.html | 0 .../5c8f6839-6e86-495b-a93f-8a1d60695207.html | 0 .../63ea5c59-638e-4888-a761-cf8e4a0b7899.html | 0 .../6ba3cf1b-ace0-4b65-92c6-cfe738d9218a.html | 0 .../6ebf4796-5f47-4ab1-9738-ffd6747b05ab.html | 0 .../717c6738-8976-4c8a-9058-7bc4395292a9.html | 0 .../764dad9e-e8b4-4846-9271-c67dd4858e9d.html | 0 .../76ccf333-cf6d-4e80-85da-f2b9f4747f9d.html | 0 .../7984926f-a6c6-481d-9ecc-edb55c6b33bc.html | 0 .../79d28ab1-7799-492b-b0c9-22639cb62694.html | 0 .../7a403f55-646f-4c91-b6ac-40cdad6b3fc3.html | 0 .../7baade07-e4a9-4228-881b-7881c25343f4.html | 0 .../7cba96cb-f095-4dfc-a339-741b52eb9391.html | 0 .../82225dde-06bd-4c33-a738-15e66a5817d7.html | 0 .../836d5aaa-28e8-49c6-b644-95c3cf0ddadd.html | 0 .../8696b2f3-c51a-4623-9c6e-45ca1fcea89e.html | 0 .../8b5f7051-0147-4f97-b2f7-2580c862f7d1.html | 0 .../8c2385e9-cb37-4ca8-a95f-38d2eabff37a.html | 0 .../8d00c49c-80fd-470f-a85b-6f87144dd182.html | 0 .../94242728-a56a-494b-a1c1-5dae19abc5fb.html | 0 .../94e89825-e359-43ad-b877-64ff6e6ccda2.html | 0 .../96c8bc99-f7cc-496f-8fcc-492ca4c94064.html | 0 .../9804c2dd-ae55-48f5-bcae-5675c84eefd7.html | 0 .../9a3bcc33-40c5-4423-b79e-b22d4523041d.html | 0 .../9fe89e7a-07d2-487c-8c3d-d3f0eaa952a1.html | 0 .../a1635b11-270d-40d2-95c7-ffa85f278270.html | 0 .../a33490d0-ec83-4f77-bdd0-88cd3ff9dd65.html | 0 .../a4329bac-4309-477a-bf39-42311a612385.html | 0 .../a4e8f577-1b7f-44f9-beca-7e208578d858.html | 0 .../a5211f28-49d4-4d08-8a5d-728450a3345c.html | 0 .../a57fd394-a9af-479b-ae5b-7d227e0b23d4.html | 0 .../a7a61185-f8a5-4dd2-8d30-652716fc8df7.html | 0 .../aa0a8dd4-3255-4a1d-a901-b0b5084e33cb.html | 0 .../ad46b320-30a2-452b-9403-acaa9ceccd59.html | 0 .../aeda3a11-8c1a-42e1-9a47-3ebfea32990a.html | 0 .../af22eaeb-d7a1-4cdc-a716-d8f77e9e42f5.html | 0 .../b31129c6-e897-4857-9542-64e924a7c562.html | 0 .../b4a1cfb8-033f-4d21-b282-aa61831a1652.html | 0 .../b6eb1d30-55ef-4d0f-9db6-1a54be1001c8.html | 0 .../bcb8d9c8-9625-486d-b83d-05cd811a5b52.html | 0 .../bee94f87-b135-49a0-bd1e-e6c9c5a27393.html | 0 .../bf6dc26d-67b2-4d12-8085-c567f4ab1f06.html | 0 .../c3820ec2-f46d-4b2b-9f5c-efd2e29e3a69.html | 0 .../ca99a74d-1ae8-414d-941b-068a852be16c.html | 0 .../ce62fd4a-a29a-4dac-8be3-2e1c81509cb1.html | 0 .../cf8014f7-f203-455f-9c37-a224d684701e.html | 0 .../d1d3734b-651c-44a6-ad68-918a9ee45505.html | 0 .../d27f302c-5fe1-4d00-bb42-ce7e2ccda17d.html | 0 .../d44206ca-0812-4995-91e7-7e26afd2678e.html | 0 .../d5abfe83-15e1-4dde-a8e3-ff87e3a66318.html | 0 .../da49292c-4502-4aff-bbac-172429f56a95.html | 0 .../da95fc1f-d18a-4bd4-94b1-68fc5adce114.html | 0 .../db7adce0-47e1-4833-9aa4-94bbb92b03a7.html | 0 .../dba8215d-c9af-49f9-acc7-89f5795cbd9e.html | 0 .../dd29af9c-e203-4fda-b8cd-fe263a3ce322.html | 0 .../df4fcca8-9154-4e6b-9d64-bb66506fa23a.html | 0 .../dfbeaaac-b325-4dc8-bd90-21c79e10ff65.html | 0 .../e48eedc6-f167-4ce3-b8da-cae8f82b354a.html | 0 .../e5ffb349-a56e-4ba6-be01-3348d74496ef.html | 0 .../e9151148-c948-438b-b1cb-49929f8117ea.html | 0 .../ebaa041e-05f4-4de2-9c15-fdbdfbcd0833.html | 0 .../ec038320-b592-4deb-aea2-ec9a43a24557.html | 0 .../ec8a7612-2548-4495-8bfc-60de48b46ddc.html | 0 .../f4238e37-714d-4c7a-882c-dcdd692d60c5.html | 0 .../f5aa952b-582b-4be5-9a78-59b1618dda0d.html | 0 .../f8a6cdc0-f5d5-4e09-88d1-7d0b5fc5acff.html | 0 .../f9abfc38-1eae-46ab-981c-0946b7119850.html | 0 .../fce30b86-959e-4cfb-baad-76f9c1c57110.html | 0 .../fd643eef-3e8e-4fc8-9f6c-feaca4261821.html | 0 .../fdd290d0-d04d-414c-bd44-fc04f9a7f9ca.html | 0 .../fe94540e-ecaa-4e09-b4f3-637fcf0f55a0.html | 0 .../id-0a111de0fb7f46fdbbb366be06e20255.html | 0 .../id-0a3c87b2fee646eb812fbb7e54ca65d6.html | 0 .../id-0ac34a39b9d14b718ef129f4a8240882.html | 0 .../id-19d2e4fdcf9042cdb1aeb07ae4c12543.html | 0 .../id-1f8ff939efee48c0b5364a62eeca2937.html | 0 .../id-21db9389365b467498bffd6e3ca443a4.html | 0 .../id-222196c353e54e21a807429b561d0098.html | 0 .../id-2e68487b6c8d4385868ddd5de8682f67.html | 0 .../id-425985f475b34ebdb7dbae20fdf475df.html | 0 .../id-53097b85240248faa87a68e8b3f8fe15.html | 0 .../id-570715fedad14cdabd29280e30b7fcfa.html | 0 .../id-64f083e7063f49ba901f7c49f1d2d65a.html | 0 .../id-6581a6a7721d45b680bce5c74374af25.html | 0 .../id-665fd930a19143dcaae0f3bf00c20dab.html | 0 .../id-831d168a71be464c8ffec86945842b5b.html | 0 .../id-83bf17d74ee74d11b01243580c9576f3.html | 0 .../id-86f60df73d244def868ef3ccc8d7850a.html | 0 .../id-88dbcd93d6f04ca7ad4bdfc0834c8552.html | 0 .../id-8a550914dc6343859ca1afbe6445f1f7.html | 0 .../id-8dd4f9d4322f4b958d56d7cdb43f2116.html | 0 .../id-9b03593cdc38451b96d238639545dfd1.html | 0 .../id-a26898543cdd42f4a2657892f94c6334.html | 0 .../id-a2a0903018f44876a3a51cf6ca4a187d.html | 0 .../id-b512da9572a549288aa1d4a533fc65fa.html | 0 .../id-bbb2f75527ee4785bed13d46895cc16d.html | 0 .../id-dda8cb93a7f64a9da2db17a065929648.html | 0 .../id-e48891edd4cd4ad0beb7714cf3003292.html | 0 .../id-fe1d307dc58445079dac8d7f692119f5.html | 0 .../00ac2c5a-2461-407d-994a-522621827cbf.html | 0 .../07a38777-a034-4a6b-8f90-6a9874ae035d.html | 0 .../081ae1b1-7c1a-4a87-8f07-188d90448d4c.html | 0 .../0a8ae1fb-a3b9-4baf-8f9c-a8752f200c6a.html | 0 .../0b28e43c-0d28-4a27-9303-786f6b1bb04c.html | 0 .../0c953c3c-994e-4cb7-9d3c-926515fefc17.html | 0 .../0cb18ec8-ed64-4cb6-864f-3416ca2d198a.html | 0 .../0dabd82b-9a4c-499b-afe7-da988722d1da.html | 0 .../0e94dc1b-2f53-4777-9d6c-07be9d48d3f6.html | 0 .../1050ce85-8788-44a8-a1d8-c9de65b3cfe3.html | 0 .../1618d303-0b6a-4c28-9e71-7bcac8c7d66c.html | 0 .../17db811f-5cd6-41b8-883f-23cc1373f61b.html | 0 .../197f2e6a-96de-4fa9-910c-0cbecb488bec.html | 0 .../1b37c1aa-1336-4038-a23b-d067ed080a7a.html | 0 .../1d12d390-5fbb-4944-b82d-26660e3f4ad5.html | 0 .../1dc1de6c-0489-4299-8f28-2096975a4838.html | 0 .../20f74adb-5143-4ea4-be7c-abf026b2e8ae.html | 0 .../2274bd38-980b-4e91-9a24-09578c013b80.html | 0 .../28bb74a3-9728-447a-8d72-d7b54e58b591.html | 0 .../2e5cfe74-9b17-476b-8ca6-d19b142642d3.html | 0 .../3092fb53-e617-4dbe-ba08-ce4f5f7bc167.html | 0 .../33e43de8-bac8-4d90-952e-12597a33df65.html | 0 .../34b6537b-5534-4e64-95a5-00a8ffea9d02.html | 0 .../34d88f16-ab1f-4e58-8515-6feaec2d62a5.html | 0 .../39dc2922-646c-488f-8615-6fb7a16830b6.html | 0 .../3c419c35-0e35-4e22-b6da-072d9243593c.html | 0 .../3efe0da1-7899-4949-a225-6db9d42f6926.html | 0 .../453f404d-0a13-4dce-9c11-0afdf527d1e1.html | 0 .../49a674dc-c388-4056-b572-87e8cea77181.html | 0 .../4c0f9830-5065-4922-902f-c3734c524545.html | 0 .../50be8b01-7789-4f72-aa5c-39904f3ab3f0.html | 0 .../51754659-d4ae-4a21-9ea2-dc58655a9456.html | 0 .../53be9acc-0c21-42ea-a060-1d7839892b3c.html | 0 .../556e83e8-3dd4-456d-9268-efaff2bdf9ce.html | 0 .../5652c6c7-bf2d-4a43-8d90-e64c9b7c0a5c.html | 0 .../56c03b2e-15e1-4de3-96e6-332287b6e3e7.html | 0 .../5894e7ec-d626-4c77-913a-f61b36267329.html | 0 .../58a3ed11-fb28-498e-b912-bdc4a9e2a82b.html | 0 .../58c28a73-0190-4a6b-aee8-caf039021d60.html | 0 .../5b93b02c-895d-431e-8213-87b70e81c686.html | 0 .../5c18c323-3686-4f73-8cd7-408bd9a68394.html | 0 .../5c8c4ecb-89c2-4a11-869c-41d8330a0527.html | 0 .../5dfea728-f0a4-4532-8255-aba4a475bff7.html | 0 .../68a12e8c-1eea-4e9b-9dc2-9cb4d89edec1.html | 0 .../6927b348-6f6d-4836-a6db-96bb2ecf0b8d.html | 0 .../6d9d9c8b-f34f-4806-9efc-34affd994099.html | 0 .../6f156b03-6698-4bbe-9376-d3339ff0cd4c.html | 0 .../6f7b7410-581f-4b4f-b7c1-e9a6585355c2.html | 0 .../73dddaff-91c8-4a57-a28c-c26ceeef21f9.html | 0 .../749152f0-1015-458b-8521-421b2e81cb7a.html | 0 .../75755276-fce7-4ea3-b17f-ca2c02528780.html | 0 .../76654356-4818-4f4f-90ad-baa95663e02c.html | 0 .../7a3be38e-7df1-460a-b9d6-fdc735e4390a.html | 0 .../7b2f2dcd-d491-45e1-b992-28d946254450.html | 0 .../7d3cb257-9703-446c-aed9-3ecca665e269.html | 0 .../80554891-2aab-49d1-a6cd-453db07e4c43.html | 0 .../81725358-dad2-4a80-8c44-fde5d3885b78.html | 0 .../830c1fd0-0773-4ee6-8f2b-1a4b5fe24e7a.html | 0 .../83138509-14d7-4de5-99ea-63b35cfa95d1.html | 0 .../833a39e0-577e-4c9e-bb08-77887e473433.html | 0 .../8757eca2-0d19-4277-ad5f-99bb6ef53f37.html | 0 .../87605ad8-9255-43f7-bb06-e162a2987d31.html | 0 .../87b7bc68-e167-46c5-ac00-3f63c6bb7e81.html | 0 .../87f45453-8608-413d-b2d6-81088464613b.html | 0 .../8946283c-9e57-4ada-889a-2e2d4fc54143.html | 0 .../897333ea-5006-4dbe-b4d5-ca6409789037.html | 0 .../8c67dc20-3b7c-407d-9a60-c3b50d68169d.html | 0 .../8c6df0a1-5306-4a77-9de8-97c9e6eae53e.html | 0 .../8de5d237-d280-4656-80f5-1a63f42d7bc6.html | 0 .../928f2592-d38b-4b62-8841-47f8c3ebafe7.html | 0 .../93cd208f-6cce-4cde-8d78-22e06fcf08dd.html | 0 .../98e50d5c-3e4b-459d-a949-39de7587f5a0.html | 0 .../9952fa14-77c7-46e9-adfd-0bce4049553b.html | 0 .../9af1c006-6e44-4e92-ac06-6ac705ecf85a.html | 0 .../9e19f7b6-5ff6-422c-8975-4979ab57f559.html | 0 .../a282f8da-9466-42db-af61-280ed9930371.html | 0 .../a58958bc-2048-499e-87f9-8048454190fa.html | 0 .../af519ca8-a892-4627-a0f6-77b055f32da1.html | 0 .../b1af5501-989f-434d-b71a-50eb3c66d827.html | 0 .../b4f7426b-79a2-4b67-882a-c519d04b651e.html | 0 .../b51aaed8-1e4c-44e8-9f39-7df7c0c369e2.html | 0 .../b6811261-01b1-4f92-b4ef-12c8cf959aa0.html | 0 .../b97b2681-7c53-47fe-b899-c6ac0de4d9a3.html | 0 .../b99fd98c-4fe6-43e4-ba7e-ab2988eca3fb.html | 0 .../ba306546-fc22-4827-bb65-f8e413886aa1.html | 0 .../bb583668-1273-44d7-a88d-e0d219b84679.html | 0 .../bbedec01-ffef-4063-abba-1cc92da9e01a.html | 0 .../bca0768a-3306-4e57-933b-abc64a153d83.html | 0 .../bdbd0690-4813-49f7-97a8-8521fc371d88.html | 0 .../be6074eb-3739-42ae-b86b-e7cae6e1a458.html | 0 .../bf091a49-e570-4600-a963-502436b84f38.html | 0 .../c095ad5e-c8cc-4638-b977-c7028c8b5d23.html | 0 .../c0e8af05-1bbb-4269-9ec7-a9cb6c5c8b66.html | 0 .../c112c25e-881d-4fd3-9a47-5b55d30592b3.html | 0 .../c35a5b8b-d429-4e24-8404-9c35817b4f37.html | 0 .../c4837879-c378-4e61-958f-9159fa9e26e7.html | 0 .../c4d02459-d3d4-4668-a686-52e02e604ff4.html | 0 .../c5bf6758-2670-4e3f-afe1-f7ba16f85f48.html | 0 .../ca405cd2-d732-4bb8-bee4-20629c3b040c.html | 0 .../ca52fba9-1e26-4a94-bb10-64fe8e4ae01b.html | 0 .../cce8df8c-d0f9-41b7-a2d4-537de2d543bc.html | 0 .../cf1387bd-5133-4b31-a98c-cb5bf94efa6b.html | 0 .../d1466cf6-135e-4cac-8c54-ae5264889e0e.html | 0 .../d447a1a9-7ceb-41f4-82ad-1b262aa5539d.html | 0 .../d50f3e55-1a7b-4c89-a532-c674e8d5da29.html | 0 .../d5d0837f-827e-4e0e-b314-d7a9b0ae8ea1.html | 0 .../d6b95a23-2d52-4b0b-85d9-03445792060c.html | 0 .../d7a666ef-d86a-4d06-a528-9944474afedf.html | 0 .../d9861c01-5b14-4268-b3d3-9ced861e6c64.html | 0 .../d9e6658b-3e9c-4a93-a33c-0b50f0c3f5d3.html | 0 .../da2dae15-373c-4c05-9d8a-737dc810b8d7.html | 0 .../dbc1fb81-7d17-48e0-9c4a-f88680fb999b.html | 0 .../df1dfad2-95e1-4097-a9db-4e6e6fbae550.html | 0 .../df7375f9-514c-45b8-86e6-2e61789514f0.html | 0 .../dfad9615-8898-4af2-af15-3f61c6696fd2.html | 0 .../e00fefee-f93d-4b74-a1a9-6f0aea5d1d0f.html | 0 .../e0eb4804-d8e0-4310-8a4f-a924dd158fdf.html | 0 .../e31d4bb8-c0c1-4412-9226-a4b3c5c770c6.html | 0 .../e392ffe6-321c-4b1d-9aa8-0bd58e497e1f.html | 0 .../e4579da6-9927-4c71-a95b-a76671512b3f.html | 0 .../e4d750dd-f058-4c21-ac0f-cef0275dd5a7.html | 0 .../f14b68e7-b98b-438a-947a-bc84327e424d.html | 0 .../f1f89b71-14d0-474d-923c-ce5b175c21db.html | 0 .../f4da23e4-ee58-49b3-b47e-45cb29aa1ac9.html | 0 .../f5ab2a23-af9e-4b52-b065-667e3fba21e6.html | 0 .../f95d3794-c6f4-4dbf-9ab9-b881633ff765.html | 0 .../fca3d7f4-cc95-49d3-92e2-a386c5a089d1.html | 0 .../fceaf399-f380-446a-a6d8-3c57651d671c.html | 0 .../ff6be561-816d-49ba-8cb7-94f0f368352c.html | 0 .../ffa8ffe4-2c55-4ccd-97c5-b621f759b585.html | 0 .../id-113d3857ca7c493bab31f9cab968b684.html | 0 .../id-28903a8b84594435bf7918184111b0eb.html | 0 .../id-6ce8b12e754e4b128606d433d271f303.html | 0 .../id-79aedba0196148b0b4d54ec26ec1cb1a.html | 0 .../id-8a9d1a27f6944591810a1cfb0980bf26.html | 0 .../id-bb483777115f400fad270e8b35e2e950.html | 0 .../id-c0b6b3025fc147f3b2d88fd0c29797e1.html | 0 .../id-ef87fc757efa4d64a6df101e1e4f821a.html | 0 .../id-f0ec0e39125846c0ae6ba61297ac595e.html | 0 .../id-f9e30582684b4fa7988df040a957f347.html | 0 .../archimate-smart-gov/css/i18n.css | 0 .../archimate-smart-gov/css/i18n/en.css | 0 .../archimate-smart-gov/css/model.css | 0 .../elements/empty-element.html | 0 .../archimate-smart-gov/hints/access.html | 0 .../hints/aggregation.html | 0 .../hints/application_collaboration.html | 0 .../hints/application_component.html | 0 .../hints/application_event.html | 0 .../hints/application_function.html | 0 .../hints/application_interaction.html | 0 .../hints/application_interface.html | 0 .../hints/application_process.html | 0 .../hints/application_service.html | 0 .../archimate-smart-gov/hints/artifact.html | 0 .../archimate-smart-gov/hints/assessment.html | 0 .../archimate-smart-gov/hints/assignment.html | 0 .../hints/association.html | 0 .../hints/business_actor.html | 0 .../hints/business_collaboration.html | 0 .../hints/business_event.html | 0 .../hints/business_function.html | 0 .../hints/business_interaction.html | 0 .../hints/business_interface.html | 0 .../hints/business_object.html | 0 .../hints/business_process.html | 0 .../hints/business_role.html | 0 .../hints/business_service.html | 0 .../hints/canvas_block.html | 0 .../hints/canvas_connection.html | 0 .../hints/canvas_diagram.html | 0 .../hints/canvas_image.html | 0 .../hints/canvas_sticky.html | 0 .../archimate-smart-gov/hints/capability.html | 0 .../hints/communication_network.html | 0 .../hints/composition.html | 0 .../archimate-smart-gov/hints/connection.html | 0 .../archimate-smart-gov/hints/constraint.html | 0 .../archimate-smart-gov/hints/contract.html | 0 .../hints/course_of_action.html | 0 .../hints/data_object.html | 0 .../hints/deliverable.html | 0 .../archimate-smart-gov/hints/device.html | 0 .../hints/diagram_image.html | 0 .../hints/distribution_network.html | 0 .../archimate-smart-gov/hints/driver.html | 0 .../archimate-smart-gov/hints/equipment.html | 0 .../archimate-smart-gov/hints/facility.html | 0 .../archimate-smart-gov/hints/flow.html | 0 .../archimate-smart-gov/hints/folder.html | 0 .../archimate-smart-gov/hints/gap.html | 0 .../archimate-smart-gov/hints/goal.html | 0 .../archimate-smart-gov/hints/group.html | 0 .../archimate-smart-gov/hints/grouping.html | 0 .../hints/implementation_event.html | 0 .../archimate-smart-gov/hints/influence.html | 0 .../archimate-smart-gov/hints/junction.html | 0 .../archimate-smart-gov/hints/location.html | 0 .../archimate-smart-gov/hints/material.html | 0 .../archimate-smart-gov/hints/meaning.html | 0 .../archimate-smart-gov/hints/model.html | 0 .../archimate-smart-gov/hints/node.html | 0 .../archimate-smart-gov/hints/note.html | 0 .../archimate-smart-gov/hints/outcome.html | 0 .../archimate-smart-gov/hints/path.html | 0 .../archimate-smart-gov/hints/plateau.html | 0 .../archimate-smart-gov/hints/principle.html | 0 .../archimate-smart-gov/hints/product.html | 0 .../hints/realization.html | 0 .../hints/representation.html | 0 .../hints/requirement.html | 0 .../archimate-smart-gov/hints/resource.html | 0 .../archimate-smart-gov/hints/serving.html | 0 .../archimate-smart-gov/hints/sketch.html | 0 .../hints/sketch_actor.html | 0 .../hints/sketch_sticky.html | 0 .../hints/specialization.html | 0 .../hints/stakeholder.html | 0 .../archimate-smart-gov/hints/style.css | 0 .../hints/system_software.html | 0 .../hints/technology_collaboration.html | 0 .../hints/technology_event.html | 0 .../hints/technology_function.html | 0 .../hints/technology_interaction.html | 0 .../hints/technology_interface.html | 0 .../hints/technology_process.html | 0 .../hints/technology_service.html | 0 .../archimate-smart-gov/hints/triggering.html | 0 .../archimate-smart-gov/hints/value.html | 0 .../hints/value_stream.html | 0 .../archimate-smart-gov/hints/view.html | 0 .../archimate-smart-gov/hints/view_ref.html | 0 .../hints/vp_application_cooperation.html | 0 .../hints/vp_application_structure.html | 0 .../hints/vp_application_usage.html | 0 .../vp_business_process_cooperation.html | 0 .../hints/vp_capability.html | 0 .../hints/vp_goal_realization.html | 0 .../hints/vp_implementation_deployment.html | 0 .../hints/vp_implementation_migration.html | 0 .../hints/vp_information_structure.html | 0 .../archimate-smart-gov/hints/vp_layered.html | 0 .../hints/vp_migration.html | 0 .../hints/vp_motivation.html | 0 .../hints/vp_organization.html | 0 .../hints/vp_outcome_realization.html | 0 .../hints/vp_physical.html | 0 .../archimate-smart-gov/hints/vp_product.html | 0 .../archimate-smart-gov/hints/vp_project.html | 0 .../hints/vp_requirements_realization.html | 0 .../hints/vp_resource.html | 0 .../hints/vp_service_realization.html | 0 .../hints/vp_stakeholder.html | 0 .../hints/vp_strategy.html | 0 .../hints/vp_technology.html | 0 .../hints/vp_technology_usage.html | 0 .../hints/vp_value_stream.html | 0 .../hints/workpackage.html | 0 .../archimate-smart-gov/index.html | 0 .../archimate-smart-gov/js/frame.js | 0 .../js/imageMapResizer.min.js | 0 .../archimate-smart-gov/js/model.js | 0 .../js/url-polyfill.min.js | 0 .../lib/alasql/alasql.min.js | 0 .../lib/bootstrap/css/bootstrap-3.3.2.min.css | 0 .../css/bootstrap-theme-3.3.2.min.css | 0 .../lib/bootstrap/css/bootstrap.min.yeti.css | 0 .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../lib/bootstrap/js/bootstrap-3.3.2.min.js | 0 .../css/layout-default-1.4.4.css | 0 .../js/jquery.layout-1.4.4.js | 0 .../jquery-ui/css/jquery-ui-1.11.2.min.css | 0 .../lib/jquery-ui/js/jquery-ui-1.11.2.min.js | 0 .../lib/jquery/js/jquery-1.11.2.min.js | 0 .../archimate/ArchiSurance_V3.archimate | 0 .../archimate/everything.archimate | 0 .../archimate-viewer/asset-manifest.json | 0 .../archimate-viewer/favicon-32x32.png | Bin .../archimate-viewer/index.html | 0 .../archimate-viewer/logo192.png | Bin .../archimate-viewer/logo512.png | Bin .../archimate-viewer/manifest.json | 0 ...nifest.85446bd97476a4a2675cfe1500a8e5b7.js | 0 .../archimate-viewer/robots.txt | 0 .../archimate-viewer/service-worker.js | 0 .../static/css/2.42c6bb7e.chunk.css | 0 .../static/css/main.8196904e.chunk.css | 0 .../static/js/2.8a1908c2.chunk.js | 0 .../static/js/main.fa5da65d.chunk.js | 0 .../static/js/runtime-main.89b10739.js | 0 app/{dataviz => project}/gui-sparql-data.md | 0 app/project/loan-application.cmmn | 95 + .../sparql-data-gui/gui-sparql.html | 0 .../sparql-data-gui/index.html | 0 .../sparql-data-gui/lib/ontodia-custom.min.js | 0 .../sparql-data-gui/lib/react-dom.min.js | 0 .../sparql-data-gui/lib/react.min.js | 0 .../sparql-data-gui/lib/script.js | 0 .../sparql-data-gui/lib/style.css | 0 3690 files changed, 25324 insertions(+) create mode 100644 app/dataviz/city-roads/assets/index.c4b0dabc.js create mode 100644 app/dataviz/city-roads/assets/index.e4ff2fbf.css create mode 100644 app/dataviz/city-roads/index.html create mode 100644 app/dataviz/mark-twain-portrait/.gitignore create mode 100644 app/dataviz/mark-twain-portrait/LICENSE create mode 100644 app/dataviz/mark-twain-portrait/README.md create mode 100644 app/dataviz/mark-twain-portrait/bundle.js create mode 100644 app/dataviz/mark-twain-portrait/docs/mark_twain_cloud.png create mode 100644 app/dataviz/mark-twain-portrait/docs/mark_twain_small.png create mode 100644 app/dataviz/mark-twain-portrait/docs/mark_twist.gif create mode 100644 app/dataviz/mark-twain-portrait/index.html create mode 100644 app/dataviz/mark-twain-portrait/index.js create mode 100644 app/dataviz/mark-twain-portrait/lib/help.js create mode 100644 app/dataviz/mark-twain-portrait/lib/navigator.js create mode 100644 app/dataviz/mark-twain-portrait/lib/panzoom.min.js create mode 100644 app/dataviz/mark-twain-portrait/lib/query-state.min.js create mode 100644 app/dataviz/mark-twain-portrait/package.json create mode 100644 app/dataviz/package-manager/app.js rename app/dataviz/{archimate-smart-gov/lib/bootstrap/fonts => package-manager}/glyphicons-halflings-regular.eot (100%) rename app/dataviz/{archimate-smart-gov/lib/bootstrap/fonts => package-manager}/glyphicons-halflings-regular.svg (100%) rename app/dataviz/{archimate-smart-gov/lib/bootstrap/fonts => package-manager}/glyphicons-halflings-regular.ttf (100%) rename app/dataviz/{archimate-smart-gov/lib/bootstrap/fonts => package-manager}/glyphicons-halflings-regular.woff (100%) rename app/dataviz/{archimate-smart-gov/lib/bootstrap/fonts => package-manager}/glyphicons-halflings-regular.woff2 (100%) create mode 100644 app/dataviz/package-manager/index.html create mode 100644 app/dataviz/package-manager/styles.css create mode 100644 app/dataviz/primerpedia-master/.editorconfig create mode 100644 app/dataviz/primerpedia-master/.eslintrc.json create mode 100644 app/dataviz/primerpedia-master/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 app/dataviz/primerpedia-master/.github/settings.yml create mode 100644 app/dataviz/primerpedia-master/CONTRIBUTING.md create mode 100644 app/dataviz/primerpedia-master/LICENSE.md create mode 100644 app/dataviz/primerpedia-master/README.md create mode 100644 app/dataviz/primerpedia-master/design/index.html create mode 100644 app/dataviz/primerpedia-master/design/screen/co-editing_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/collective-memory_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/contributor-locations_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/geo-topic-map_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/history_flow_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/most-controversial_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/what-is-wikipedia_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/wiki-atlas_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/wikigalaxy_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/wikipedia-globe_sm.png create mode 100644 app/dataviz/primerpedia-master/design/screen/wikipedia_worldview_sm.png create mode 100644 app/dataviz/primerpedia-master/design/script.js create mode 100644 app/dataviz/primerpedia-master/design/style.css create mode 100644 app/dataviz/primerpedia-master/img/cc.png create mode 100644 app/dataviz/primerpedia-master/img/cc.svg create mode 100644 app/dataviz/primerpedia-master/img/favicon.png create mode 100644 app/dataviz/primerpedia-master/img/github.png create mode 100644 app/dataviz/primerpedia-master/img/github.svg create mode 100644 app/dataviz/primerpedia-master/img/info.png create mode 100644 app/dataviz/primerpedia-master/img/info.svg create mode 100644 app/dataviz/primerpedia-master/img/loading.svg create mode 100644 app/dataviz/primerpedia-master/index.html create mode 100644 app/dataviz/primerpedia-master/utils.js create mode 100644 app/dataviz/primerpedia-master/wiki-outline.css create mode 100644 app/dataviz/primerpedia-master/wiki-outline.js rename app/dataviz/{timeline3 => women-in-computing}/Women_in_Computing.html (100%) rename app/dataviz/{timeline3 => women-in-computing}/compare.html (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.abril-droidsans.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.amatic-andika.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.bevan-pontanosans.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.bitter-raleway.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.clicker-garamond.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.dancing-ledger.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.default.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.fjalla-average.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.georgia-helvetica.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.knightlab.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.lustria-lato.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.medula-lato.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.oldstandard.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.opensans-gentiumbook.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.playfair-faunaone.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.playfair.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.pt.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.roboto-megrim.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.rufina-sintony.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.ubuntu.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/fonts/font.unicaone-vollkorn.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/icons/tl-icons.eot (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/icons/tl-icons.svg (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/icons/tl-icons.ttf (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/icons/tl-icons.woff (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/icons/tl-icons.woff2 (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/themes/timeline.theme.contrast.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/themes/timeline.theme.dark.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/timeline.css (100%) rename app/dataviz/{timeline3 => women-in-computing}/css/timeline.css.map (100%) rename app/dataviz/{timeline3 => women-in-computing}/index.html (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/af.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ar.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/be.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/bg.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ca.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/cz.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/da.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/de.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/el.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/en-24hr.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/en-gb.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/en-week.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/en.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/eo.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/es.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/et.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/eu.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/fa.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/fi.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/fo.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/fr.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/fy.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ga.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/gl.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/he.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/hi.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/hr.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/hu.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/hy.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/id.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/is.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/it.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/iw.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ja.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ka.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ko.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/lb.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/lt.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/lv.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ms.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/my.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/nb.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ne.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/nl.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/nn.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/no.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/pl.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/pt-br.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/pt.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/rm.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ro.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ru.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/si.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/sk.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/sl.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/sr-cy.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/sr.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/sv.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ta.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/te.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/th.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/tl.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/tr.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/uk.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/ur.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/vi.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/zh-cn.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/locale/zh-tw.json (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/timeline-min.js (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/timeline.js (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/timeline.js.LICENSE.txt (100%) rename app/dataviz/{timeline3 => women-in-computing}/js/timeline.js.map (100%) rename app/dataviz/{timeline3 => women-in-computing}/old-index.html (100%) rename app/dataviz/{timeline3 => women-in-computing}/popular_timelines.json (100%) create mode 100644 app/map-travel/note.md create mode 100644 app/multimedia/webgl/blockly-playground/index2.html create mode 100644 app/private/index.html rename app/{dataviz => project}/archimate-explorer.md (100%) rename app/{dataviz => project}/archimate-graph-explorer.md (100%) rename app/{dataviz => project}/archimate-graph-explorer.webp (100%) rename app/{dataviz => project}/archimate-graph-explorer/LICENSE (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/dataAccess.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/dataParserArchiFormat.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/dataParserExchangeFormat.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/filterBar.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/graphDataSearch.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/graphExplorer.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/graphLink.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/graphNode.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/userModel.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/components/userSettings.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/css/archigraph.css (100%) rename app/{dataviz => project}/archimate-graph-explorer/css/autoComplete.css (100%) rename app/{dataviz => project}/archimate-graph-explorer/css/tail.select-light.css (100%) rename app/{dataviz => project}/archimate-graph-explorer/data/ArchiSurance.archimate (100%) rename app/{dataviz => project}/archimate-graph-explorer/data/ArchiSurance.xml (100%) rename app/{dataviz => project}/archimate-graph-explorer/favicon.ico (100%) rename app/{dataviz => project}/archimate-graph-explorer/favicon.svg (100%) rename app/{dataviz => project}/archimate-graph-explorer/index.html (100%) rename app/{dataviz => project}/archimate-graph-explorer/index.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/libs/autoComplete.min.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/libs/d3.v7.min.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/libs/tail.select-full.min.js (100%) rename app/{dataviz => project}/archimate-graph-explorer/settings.js (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/00153750-96fd-427c-a872-4e4be1a148de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/001867d6-4a8b-43e9-aa32-688fcfc10683.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/001bfa44-9efb-49eb-a995-faa03b4452d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/00b93ea9-ee0d-4a27-ae9d-27de627fc1b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/00d7cfc8-d571-4bce-86a1-dd8fa6b0d22d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0117026d-417a-4ff5-85cf-cb61719eba54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/01245312-c383-4660-91d8-a827eeab8296.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/01266943-7325-4c7f-8267-953255764bc4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0132f121-7493-4927-abfa-37f57d08388e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/01403419-322e-43c8-9694-6632e76e5d3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/01446e9e-49a1-485d-8993-369192bf1a0c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0149b5e4-fc78-4a4c-bd73-991607fe1369.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/015a6779-d76f-45e3-8f86-c8a057ac7610.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/018ea3f8-b187-4665-a855-4980f527daa0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/019ac483-f2a5-4898-83c7-50fd7b0f662c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/01d5fd0e-33a1-4fbd-8601-9a07d52abdc7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0209c78d-f76d-49a9-84db-4bd1e356bced.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0217c130-0fc6-4fa0-8dc3-b4c5658fa280.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/02816aec-918d-4c92-81a7-cdab8a794617.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/029368bd-ba18-44a5-aa48-8867481ec0fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/02bb771a-69c4-4cf3-9652-9922e70a5c90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/02d07124-9a90-42e7-9e9b-3e255a3ba1f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/02e58b95-d49f-4847-bdf1-27e16b04e6c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0303ea51-cd4f-461d-a2de-b10ffd64f3fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/031a3fc1-3603-44c8-b721-a5feaa26e890.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/033302e5-eebb-4d5b-b163-e7506e1b41a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0335b3ad-8da3-4227-a7a3-6e3dc4483ae2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/034eb67a-dab3-43e2-b31b-60d25417e552.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0362a7df-65ab-4c22-9a87-ec3e2530e770.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/036a0c9f-2183-4c16-8350-9fe0bbcb02e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/036b691b-f0a5-4872-83b6-f90786589aaf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/038711e7-da0d-48fa-8c3d-d2dc88243929.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/039fba91-777d-455e-a777-254c8cce9ad8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/03c0bc58-c152-4acb-b4d3-a5f1c16d68e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/03f87eb2-2132-479b-a15b-91fdf3be966d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04033408-1683-4879-9253-1f7e91459cd9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0447eb95-1ea2-4d66-a30d-ebcfaa2dfcc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04480f23-8a5f-4394-80eb-2045ac96e168.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/045aa24f-42fd-4c9e-8a37-257159e42ac7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/046a670a-a8a1-4263-ba85-60298554248b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04a99e2b-886e-45bc-a686-7277e12d1894.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04b51324-dadc-45f8-87eb-fc63f00b4049.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04e2027b-1457-499c-9a7d-47452e576a37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04e2f6c8-5356-4c26-9c34-9d1957695bad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04e66ae6-b766-4026-bf7b-4be34cf61cca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/04e7bd91-889c-4984-b801-8570fb6865e0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/054b00ab-1920-46e9-9370-a61cea42dede.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/057084dc-4c25-4330-9bc7-9e9d50078866.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/058962da-e3ac-4476-9e92-7d4ed2684b35.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/05e1fe7e-253a-4bae-b0f5-d7d15c6fe024.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/05e680be-908d-4a36-a29e-e6618ec2aa4e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/05f941d9-824a-4a6f-aed4-96587cce5a0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06070728-7f1c-4728-87fb-88fd92ba2c30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/062551cb-47b4-4304-b216-79f879b36e40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0644dc6c-f935-4bea-93b1-32c155edebcc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06671b6c-4b46-4d3c-b629-c31a7c00d8b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0688c199-086a-44fb-a276-21b502848aa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/068b636b-5f6f-45eb-b0f7-732c9b28c4d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0690e245-613a-4a2c-9f43-b147fc3e7a07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0697c0e8-fdda-4459-9427-8068ba055914.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06a8ffd5-1b4a-4db2-a870-2467175f9f40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06b12fb8-bf8f-4566-a075-b748eca2d613.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06cb903d-282d-46bd-86c5-0a7adebc2177.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06e41b0c-4822-46e2-8c81-67edca1927bd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06e77d14-ab08-4c70-a359-00c1c4e082da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/06ebef74-c5d6-4bb5-865f-005bd98309ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/072e5d93-6c6c-4e3f-ab65-815c8583f241.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/076c23b7-510e-4eeb-a8d2-4ca330959a4c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0770e6d2-7a3a-4335-aa89-d142b4693a00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0771c953-b812-4f67-9691-e5caf19c6fa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/077e9221-a491-48f2-9dc8-4cd9d51b4a6e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/07946b71-a580-4cff-8f76-4905f963827f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/07c529aa-0e11-413b-9b2b-5313d6c88ecc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/07d35fcf-cdd1-472f-ae62-7f977e2ae34d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/07f3dc85-9ed5-4bd3-90dc-381060ff6428.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/07faefae-5e2b-4b2d-af76-684b06ac42d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0800fdc7-6da5-461d-a3ec-23b8e8d7ceac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08040fb4-a901-4d81-b515-202c9d43d275.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/080417c6-900c-4407-acb1-0c52a36b4d5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0848a38a-d43b-481b-a195-986e905b5172.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0854eea0-a97b-4722-889e-85e1ac321744.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0858d938-ac2f-48da-be26-c5871c9ae151.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/085aa218-e69f-4d72-a70b-0514cfa3381c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/085df0f5-b807-4bb0-88af-8ce4c5696d67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/086b0578-5ec7-48aa-ac91-434124fd33dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0872798e-6c3a-417b-84e6-0877d677b94c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/087f108a-f9c9-41c7-9b68-ee32d908e758.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08834cd9-39c0-4e22-a947-ee40b2ab3e9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08cf9ffe-490d-4a2d-83a2-ac2d857298f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08db2c78-4642-4154-ad8b-4339473ae7b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08e56bb6-c2be-4247-a796-87b1ca053b7d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08eadcb5-ec18-441a-867e-9b11ccd15a26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08f6b3e7-a0c0-4902-8c8c-317b48ac01b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/08ffb885-f995-447c-a235-a4adb5072227.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/09097539-dbdc-4d5e-8aae-01115bab4f0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/09297ca7-b723-420f-9d11-0f0de9e7298e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/092c2888-02ed-4a4b-98f3-b571d1f08020.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/096a7f79-56a9-4a18-8a1c-212fad805de7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/09c1293e-5af5-43a4-8240-2b56915c9357.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/09eff8b3-98a2-4c99-a312-7579c05bb4d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0a2905ef-b921-42be-a839-ecf52a6993a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0a3140fd-52d5-475f-86e9-711a2900bd2c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0a5410cb-3b71-472a-81da-e7aed87c4a9f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0a843d8c-f2c9-441a-a9ff-87c8380a6dd6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0ab4a412-b920-4282-aceb-d66fc2cbe927.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b19da1e-a641-41b9-9cb3-3390debc1ccf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b1c4ad1-abf2-4796-a25d-ac68732a6442.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b273323-a8eb-4590-8409-418bc245b011.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b4be396-916a-4b22-a76a-15dfedaf3c5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b73f0bd-8f02-46af-9488-d05d05e48419.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0b808a04-d1c0-492d-938d-efcc44167d31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0bd0960c-0c34-473d-b076-2aa0c576c107.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0bd8a2d9-daed-4c53-a542-884a860aea19.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0be24535-8363-4e7a-a0f5-b76818433019.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0bf7ecc7-3b9e-475f-8e8a-221d126ff321.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0c0bebba-370a-4289-b39f-07de6f609728.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0c1b4650-3b94-45f7-a8c7-1dc6ecd0b5b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0c1e4f9e-9623-4b81-b57d-de65a35a10ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0ca3b7dc-83a6-4ea7-9dcc-176b6d16e87d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0ca6fc1a-b11b-4d83-8ada-db2933808d51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0cc92b06-bfe8-4d19-af8e-7a66112ac0b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0cddbd15-37be-4b59-b2fc-7da266c6f9ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0cf9017b-1fdf-42f5-9749-8ddb575d541b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d06528c-3bba-4412-b03e-2d8bf191a897.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d0c9a5a-0f97-4624-aaf8-56dda69ae22e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d2c549f-8040-494d-b793-6b69772cbbeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d57adde-828f-477a-ad6f-3cef79041e43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d62b7d0-bfa2-4b4b-bb15-d4c36e3237c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d6c7d1d-377d-4225-93e9-1fe78033d2a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d7519b6-94d1-430a-948e-9391f0167ce3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d7a0068-f2a1-4cc0-b206-e64f0eb79e86.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d7ee36f-9b2d-466f-b6e8-b00effea6197.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d995de1-54d7-4a5b-8b2a-9aed4548c00d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0d9f83e4-7ec7-41b2-ac0b-ea104e93e83f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0dc1240d-ba6c-41bc-9de9-825989e6b15d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0dd3396d-e9a4-438f-977e-1f35337d9d21.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0de32a0f-bde6-49c6-96b1-ef1dd894d6f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0df3fce6-d909-4141-9efb-a7f51bb36ada.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0df4a03d-070d-4051-a9ea-568c89d8f71a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0e0afdc9-bd7c-4d15-b173-07fa787596f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0e30f86f-ba18-4791-b7c8-81ca75c59c91.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0eac8275-fdfd-47f9-a8dc-3c848a29912b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0ec0637a-4287-47e4-b317-cf795cd4beb0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f0f5554-8ba4-41bd-bb8d-6b2c642b0602.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f1383f5-3e3c-4afd-9b6e-42b98748e50b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f14da7d-685b-4fdd-be1d-80a8ef6b18d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f394840-040a-4592-8361-fd34fd8920dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f829b68-8610-46d6-adfa-a9612e6b1fdd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f892456-2375-4032-86c5-a62e39cef333.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f9388d3-e4be-49ad-8d5d-2101915b88e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0f9dfd03-578b-4ca8-b29b-845295a9db1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/0fdc4bc6-d771-4220-a7c0-903d2d312509.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10085f58-abe4-426c-8937-ed557bc0e70f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/100a1ebc-e5b4-4386-b743-f040b9833fba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10414579-f013-4b11-830e-fed855cdae5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10441c3d-084d-4428-ae9e-14c542702c15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1048e4f5-e345-45c5-8737-9b7c7625bd48.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10533dfe-4808-4e21-96e9-495f0ad474df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/106f6be6-f6ef-436a-a387-f390c280200d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/107c922a-1dcb-4359-947c-2bded6a02126.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10ad6903-40ae-4238-849b-c92534c34174.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10c25e93-0140-42f4-836e-3a01c82bd9f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10cd301f-3a3e-4021-99ba-c437e9be5468.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10d2bb18-d2fc-4b39-a7b0-293effaab9de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10d3916b-c30e-4280-8385-4c3221b55d6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/10e11698-fbca-42bd-a519-f7c5cabb3c50.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/112de6df-1271-4f3e-9f02-eebbe8de010f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/116820d3-9323-4550-bd4f-6ee389df4e15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1181ff81-2bf9-4726-858b-7bf156b5b4e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1191925b-f93d-45c9-9027-5e884d76daa9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/11944170-e5c8-4afa-a4b4-87d3702f7f85.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/11b54438-b3a9-4c30-8b57-49c326c53b75.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/11c6cace-c34c-4611-982b-00d07c27717b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1207a48e-e0d6-4ebf-9607-3e3459b04d05.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12211bfe-7693-46a6-b4dc-d904ec5f0ea9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/122e58ae-e7e0-4b5e-83bc-cb872fc8f7f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12458860-28f6-4f81-923c-821d41f7918b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1261c8c5-60ae-4742-a666-8e1c2690a7a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/126455fc-208b-405e-b02c-f8f9d4702f43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1266ae34-ed5b-4c96-bf3a-92dc3222f0dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12724870-de30-43c7-9941-acd4059cc52e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/127b6846-5578-4393-afe3-9ae9f7c1330c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/129411aa-9e18-44a2-bb7d-e187d160b009.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12c6a177-009f-4c87-ac1b-68ac46a4ff13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12cdb5e1-b5bc-4d53-980c-2b2f07e996c3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12d59278-aa8d-47c6-82fb-8d531f4cc983.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12e0ec42-8192-46f0-a26d-babb28c64910.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12e3d8ac-c871-43ec-95e1-624659332761.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/12f99b1b-503d-4156-81f6-d85d1e921948.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/133bf5e2-7e4e-4ac0-b698-7cfa1916f8e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/134b69f3-6512-4ead-81b8-f0701c9519c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1373fe02-0e8f-41f9-a13c-aa0c32c58abb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/13a565d5-01f7-47e3-9a9e-58d0563c802c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/13e251b5-30eb-47b0-8cbc-1361bd9cac9a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/13f57206-17e7-446d-b79f-fc8b40d2760b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1405b28d-9229-43eb-bacb-7848991713e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14091a5b-421e-4dbc-9a2d-242ab487089a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14276910-c68a-4201-94f4-cc605af28adf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/143f3013-3a1a-4850-9d81-15a1a4d67075.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/144f1d73-e07a-4994-9459-f4092c08cb16.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1474fd42-f867-4891-ae38-6395e0b2dcff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/147e7762-5a23-4f72-bb1f-f08e1c10b1b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/147e903b-6c0d-4df8-9927-0d242cd5c72e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1498846b-668a-4a08-aac5-337402c19ead.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14bbaa88-21c8-4969-8d39-77d823268bc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14e0599c-5cdd-4b95-9ff1-47d4ce1691cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14e2390f-189c-4e68-974e-56c9421a7a72.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/14e50c4d-634a-416d-9677-fa8ad2b4d2a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/15130a97-7e7d-43cd-abd5-d289eda65921.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/15187fba-56ec-4d5f-931b-a933941355e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1530d842-2c53-49c9-b207-eea165b340ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/15ee36ff-6d21-43e4-b89f-aa776980fd5f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/15f6d5e1-591f-481c-99b7-71b9e4928204.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1628e329-2b36-4533-b974-f6e191898d67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/165250d7-d0f8-475a-bf9c-fc87ab935b49.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/167941d3-6d52-46be-89b7-2ae3b2844f7e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/167ecdc0-0527-447c-8275-20ebcad2f437.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/16a369a1-90b5-4e20-8dc2-86a728fbe257.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/16aa4cef-9420-4278-97f7-e0d02fbdda1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/16c691db-b66b-49a9-b33c-1b98f5eef1a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/16e9055b-1594-4628-8218-21da4a74888d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/172a6122-a1c2-4db7-9dda-10b3091f6917.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1756b1ed-7c3f-458d-bf94-ae41d473c2c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1761f7fe-0732-4f2a-b1cf-c5db7f1afe08.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/177fbd70-13b6-4991-b8fe-c89d42d0ba71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/17d4b6f5-6639-49ec-96e3-eb569f320c50.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/17e6aad5-08ba-436c-a20e-7ed202c19ef4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/181728d6-872a-46d9-b1d2-f84dd91b388c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/184767ec-1af0-46ee-910a-69ebaf9c7667.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/184ec664-e51a-426e-9758-c31111028184.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1869bba1-282c-4236-b993-3536e144f844.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1877ddd5-a071-4772-be94-140e0039f649.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1879c567-2ac3-4ae8-8c2a-3f744e784a7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/187b60b1-f65e-42dc-bd5f-d842629b1539.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/18a2b95b-9be4-4ad4-a12b-693e9aa4df15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/18a6a1cd-8091-481c-a427-00426345315b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/18c16533-62f5-420c-a51a-5a83a66b1de3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/18c1ef71-d743-4604-a32a-09f3122edb00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/18d14079-bd52-4bed-8fc2-02e4ebdf3fde.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/191003d2-caa7-4ec7-9380-e19ac3c236ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/191a3a83-e8c4-4487-87c9-e575f1f53929.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/191f5973-0f0c-413f-9d6e-70fb399ef126.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19230be2-3cbe-4217-aae5-50ae4acc8a94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19806658-e817-43c6-b1e5-f78626aaa7fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/198caf4e-a556-463e-9da1-f11a01c70306.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/198e99f3-263a-4e35-a273-7afe80920ed3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/198f4cdd-aa79-4556-b8d6-ea28634a6ace.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19a38c94-fed1-4bb8-a1c4-73c7163a1578.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19ae0117-8e3b-4aa1-b586-e26645214f61.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19d3ce2a-2f09-436f-8333-afb6849c8000.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19d487d0-ad86-424c-9871-075679fd2a65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/19f079b3-bd75-48d2-8e93-5a3ec836b510.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a1717f4-f166-49b5-835b-c58283812850.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a1d8c0b-63bd-4fc5-bcae-4ebaaa204f26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a22c4ea-85dd-4c64-afc2-d137a6efbc9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a397f94-c143-4f50-8610-47958fe68444.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a43c0b0-3336-49ea-a171-8031910ca9e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1a5374b1-f6e6-4301-8a87-40e6c11e074a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1abaf931-2891-4891-818d-1bab6826f73f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1aeb34d4-5e36-44df-b893-94cc92b0925e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1af2f3ae-e6aa-476f-b927-04c15da2d849.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1b0e4eb2-d493-4895-932e-fa735226ea57.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1b1dcb1e-d3a5-4dbc-b2de-60c6db246b13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1b5d5bef-b264-49fb-9454-5ea333b1119c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1b7d2f17-5da2-42c3-b02e-2b632b820408.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1bb4e0aa-7ddf-421e-b7df-06967ab69ddc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1bc39469-ee3d-4b89-a711-c2809bcdbfdf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1be315dc-a0f1-4973-8686-58adc59cac54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1bfa85c3-4266-4317-a28b-7413e709b154.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1c31d978-a724-40b0-b284-1ebb610be372.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1c50c668-5e14-43af-81a1-30cc24e55c67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1c87e3e0-3eab-4020-b2cb-22c6876658f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1c8e8594-fa8e-43ca-81c7-555d001388a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1d16cb94-19a6-4560-acce-498ca700a49d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1d5df0dc-b044-407f-a3b3-222303be2033.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1d5ed53d-20d8-407a-9563-a1755ca489ad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1d7ff19e-1249-4700-8e97-36d72e887e2e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1d8cb900-f8dc-47d6-9e22-5767982bcbad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1dc37223-1593-43c4-8b99-95c69fec2183.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1df051af-9300-46ae-8bde-4c1f37a34065.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1e2bc857-df43-49a0-b723-1d32d4da0c3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1ec218ef-2982-4596-8b5d-4af0f940cde3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1edc1f68-bc8f-4e9e-b3cb-d60902da7c7c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1edccfed-b1af-4f7b-aaf9-44dc0d5b51bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1ee11837-825e-43eb-b21e-b849bea54cd4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f05c853-1f6c-4b48-b38a-5ec355876b64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f1131cb-1a47-4525-b7c9-e9e052fa55c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f5f77e2-2406-4bd5-98b5-23c9c9e8ec92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f7237b0-588c-4414-96f6-45ee7f421960.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f743c22-f2bd-46f6-b408-9001e96674ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f86a4bc-7f8c-4270-a273-ccd801463359.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1f9879fa-94dc-4e8c-a4ea-59158ce9b85a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1fccb2ec-2b1a-4257-8d0d-00429d6fe5a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/1ff8f494-63d7-41bb-bbc7-c9f9733637ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/200a062f-a546-43c9-9e79-7ee1a4705d54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/201abc48-c681-424e-80ff-1a9ba0cbc6dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/202b510c-8e0d-4332-9262-78e577507684.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/202d6be7-73e1-4b4c-af70-eb6b7aa4979f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2057ac37-41f2-40f7-a5d4-c0fae9517bb3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/20627efb-ccab-4dee-812a-eff1f5a74454.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/208071c6-d715-4119-8af3-c11b7bec3109.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/208c6393-edc7-4a73-a8fe-66a2e8e90993.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/20954642-38b0-47ac-b800-9a68e8e7e72a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/20a96016-dc22-4dfe-a6c0-c456c0622a7b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/20c3b72d-3212-4419-9c23-ac481496a229.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/20df57c4-d397-45e9-a472-1bf429208880.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2108e14d-46fa-427b-9f1f-7d5a397279e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/214a1085-ecf0-4dd9-91c9-537416f3dcdc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/214f173e-7c36-4e9c-a36b-f88eb051db1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/216a825e-1645-41cc-8323-a9afc3f72052.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21736228-ab5a-40ad-a64f-503ede294d64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21891305-06a4-4bd7-b235-6e11c60c9554.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21950e74-df0e-40e2-a4df-c8b939f3ef52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21c74d85-6fbb-4565-b8c8-1b09434e44f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21cd03fa-d93f-4369-9f67-f95129f2e5c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21e7a602-0dc5-4d39-95d0-cf9561f2fa62.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/21efa32b-952d-4021-bb21-b75cc9b5077e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2223cb03-9844-4b18-a25b-5f637c678ed9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22401ce2-4ebf-4af2-bbe3-2ecf893de41c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22591bce-b4d9-4faf-8cac-0e790c193556.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22b1d87a-6e5d-46bc-aadf-2463cb8d0e29.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22b47d8f-fc6f-4bb5-86df-f7f782bfa62e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22d9683b-867b-47e1-8be6-19624324a46a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/22e70958-5750-41fe-aaa0-325a1467d255.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23373cb8-ad9c-4d20-adfc-7bd1b8f5b09c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2362773c-cdba-4679-8146-b3eb46daf54d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23656865-52d1-41d9-becc-3bc4fb5bd071.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23769ae4-4a84-46d3-b1af-3acd4ce56c2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23878612-a7b8-4ae2-821d-b916bcdcfed3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23944ce4-c489-4646-9350-39f5c73aae6c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/239d6908-7246-4e62-b206-0cc1cffccacd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/239dff83-e499-4152-9fa1-b04dd8029bc1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23abcd1d-04f9-4d0f-b11f-3b20ea7a276e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23babf2f-7dcd-4d87-97f2-6eba800e09a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23dc5f36-6a89-4f2e-80a9-e71f95d6b4a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23e37b75-6915-43f7-bcfe-1a44a284dcac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/23eb7b16-793d-497a-800f-55ff3d3c323c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2401ab42-857f-4c1f-b852-7ed26b8d7fec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2419a63d-dac7-4155-ac36-e90e1deca991.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/245cce39-8899-4074-9689-4a9c730ac1d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24860630-9b93-41d7-9d48-3e7fef21bdc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/249a1749-021e-44d2-8700-77068ca9efe4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/249b9af6-dc71-4638-bf67-9a16f50f07e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24a68c97-eb69-4a8c-9ede-4198f1a48f31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24b0bb1f-3001-4438-b186-a7004cd2b423.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24b34ad9-3690-4e01-9ddb-0e12a00c5679.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24c4e0e2-28f7-40cb-8815-4f436316f504.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24cec455-5865-45db-8c27-06a21323cc55.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24dcf7b1-aa5f-45a1-bca9-69772a097091.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/24e508f1-2ff7-40d3-8bd0-953ce8962194.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2500479e-ad85-41e2-9e31-62853262bf51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/250cb1d7-bd62-4d04-a24d-f5c494d13ed6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2517d75c-6654-47a5-877c-bcc1703c8148.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/253260d9-9412-43ef-93ab-7ab6404970bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/253356e4-3d8e-4ab4-8cc4-67009affd06e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25389b22-ef9b-45e9-886a-62d1b4accc3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2569e42e-abdd-40ee-bc16-dcf625a34a94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2571adaa-4f8e-48f5-acce-5c45745ec768.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2578406c-4e11-4c1f-80cf-ddac7a03123b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/258ba471-5275-4c2c-a702-5b05af4e9d9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/259842e7-7678-4b93-b13e-ba1b4b948e35.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25c2d463-e0f7-477f-8a3f-9606bb76965c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25e021e8-bbf3-4392-ae6f-f3e40a3406ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25e6fae1-09b0-432e-bbc5-49030d47136c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25ec59fb-25dd-44f0-a7cd-607298c55988.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/25f747e7-621e-4cfd-92b2-4833c6a4d6f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/26146db1-6d36-4062-868e-29d5fef43b66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/262205e1-0852-4c3c-8a02-bdcb6208e92c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2633d6ca-a4b0-4780-b370-7949a29936be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/264e7b7f-f20b-4462-b8f0-bfe7cb3c64eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/268af634-ae84-4780-914c-36e665602ced.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/268c24a0-a8b4-4a2a-9cf5-a50fa8332a92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/269ffb4d-7e83-4220-b761-07503d478817.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/26ade352-2159-4b0f-bd8f-ab9bf394966f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/26c006a9-677e-4cf8-83be-3f9a8c625d76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/26e38180-90df-459d-a4f3-9f9a6e60a0c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27298629-b799-4a78-9fd3-da3ce23d054d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/272b89e2-4c69-4dce-91c4-f82f4dd31919.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2733db79-c1bb-49c4-b3ef-a4ad7b1edf0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27959228-eca4-421b-8f49-144938215239.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27a4c3fb-444c-4b3e-ba35-43bad2321b8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27baa8b4-9a11-4ca4-b6b4-5e1fb2fa47a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27be43eb-055a-4f4c-87c6-74a06dfd66d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27d86bc8-1506-485b-aa89-e3b17d7461f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27ee8c69-e98c-4445-8d1a-ee48b44124c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/27fbcef0-c6fc-4d8c-b53e-6c3d94f6ec8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/283ab963-b04b-44b7-aaa3-e6afe3e7d7e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/287059a2-1cb1-44e3-98b4-0bbbafc4b670.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/28718719-5838-450d-b9d4-453e75c3c8de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/287ef69a-01ae-4d16-9417-96f6596ef34b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2891277c-d08e-4201-9906-03b85a5afff4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/289d7482-e071-47b6-b1a9-ad358ab551a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/28fc962b-de54-4f29-a3e7-457b409d42a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29021251-7bf3-472c-8ffb-5ee6f4cf6bb9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/290f0a8d-cd0e-497c-b68e-900e47b21e2f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/293054cc-b934-47f4-b67b-a2bb55030d51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2931bda7-b524-4712-9656-8253db01ec51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/293622e8-ef69-48e3-93ec-30571f6535b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2979534e-2f29-4dc7-aeec-efa9e10629b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/297e5031-8fd3-436f-87cc-ac52010e58ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/297e8d01-971a-435a-a5fc-12ad59b0b70c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/299d968d-44e8-43b4-a619-eae56b1237da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/299e7ed5-fc17-4e94-b326-7cc24cb2c500.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29a63c74-b4f1-4078-bd04-dd7d982d7580.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29e016c6-1f24-4fb6-8297-b9082981be7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29ea3edd-2bac-4fb6-8026-6a76346a9e0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29efb4a1-ac7b-40fa-a500-4c22fcb0bb02.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/29f75139-d073-4f4d-abfa-739f382db899.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a06b384-8ba3-4121-872c-2bf7b60c4d29.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a13f18e-57e2-44a7-8b88-523c0ab81a14.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a16e7ad-0ad1-4def-8a25-c9befe098259.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a1f93ec-e3c2-4ba5-b9fb-4459cb5901e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a243009-e68e-4e07-9945-56b5a01887a8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a476574-6d69-4c73-b442-b2f7f28ec9e0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a50c049-d489-478b-93d6-f282695551ef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a5c7d37-fb24-4bb0-bd80-98e80edd3e97.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a6c0cc5-115b-4a03-988a-b8e84364b724.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a6d3a9f-6394-47d2-9541-27b2375958ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a77d48a-f4e3-4e92-84cd-14f2b5c41c6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2a7cfaf9-9fab-4029-9275-1cf6ab08b5d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2abec36c-90ef-423f-8750-96c1dfa3be67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2acbcac0-bdf4-4432-983f-4751794e751d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2af59530-d8bc-4839-8688-4cd49538ef58.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2b168644-757d-4582-8cfe-466f56a580e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2b1ca45f-5c2c-4481-8cbf-ea35bb6d2238.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2b4e2f2c-1ee1-40cf-a585-e312f018aabc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ba41903-705e-4695-97f9-3ab965e8ddf2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2bb95ce4-ff8d-4c02-adc4-6cb448c1fcad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2bce96c5-5bd6-483b-97fa-c041d0daa4e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2bd9421e-d0fd-4b3a-a2df-788065229d82.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2c1f1185-f602-4df8-bc76-dd8291b0bf8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2c2948c6-404d-4a9d-bf7c-6cd4347dfad6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2c2d0996-42e8-4106-a8d6-41bb3942a586.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2c4494bb-5a33-440a-9fc9-f939aba725e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2c5d89b7-048e-42e3-b1fa-c6c1148e2e51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ca1e76f-c457-478e-9d2e-13a48e522446.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2cb108e2-c5a9-4bbe-809f-28c20afe397b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2d218991-e00f-4e88-9a10-98b49a68a3b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2d2fa6fe-0634-4f21-b18b-a3208c1c657a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2d573388-32b9-450e-80ac-194b2bcc5686.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2d5d0142-18eb-4115-8c0f-65fd7132b28d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2d6cf43f-e908-4d6d-89a3-23f955440be0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2da04d11-a551-44b2-aecf-36c41c3e454f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2dbe8afd-f6b3-4d3a-a444-05276d2f5953.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2dcc580a-6a40-4990-bc09-f45a2d1ab09f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2dd05395-cd94-4df6-9e8a-ad9d7311f61f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ddf15e6-2d6a-4afc-8721-5ffdaece978c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2de81234-dff1-44bd-ad3c-772c9e05cb5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2e1406ff-ec6c-48c3-b4d5-fa4a40c9f9fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2e3309ae-df49-4ece-bc5d-e62017f54d89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2e93dcbb-cea5-4d20-80a2-4b7d78b57041.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2e9491dd-3c73-4a90-a220-1445c0a9c89d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2eb234dc-4316-475e-9c0e-f21f1b30ee65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ec5144b-8ffb-4fab-ad15-67aa1535ebc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ecd470d-6477-406b-8f40-ea7e6b0c42b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ed12ca2-ef27-43ea-a8b9-acca8251e804.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2ee3a23c-7f25-4d8b-b521-e4cb7247d1ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f43e27b-f7a9-4d35-9a3e-055d1e9d49cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f5c1f69-0bee-477c-af53-204ddd184459.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f6ed32e-a242-44a4-9416-4b32e07594e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f7681de-fbde-4d8d-849b-d36d5dabac0e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f7d7208-15c9-4f67-847b-1e09350cf081.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f9504be-324a-47f9-a8d5-ca449d8c5d93.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2f95aa26-1fbc-4961-a25c-f847bdca9d87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fb8648d-acb4-49fc-a826-b384deba9a63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fb973e7-bc3e-43cb-a893-d186de6c19c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fc0e16d-cf41-4cee-b734-f1390b6a356b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fca6c68-7658-40e0-83cb-975acbc62641.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fe7709f-b641-45b9-a8a4-eb8461f0f5e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/2fe97dd4-35d0-4a2a-b9b5-2bc8b272974b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/300cad8a-ff99-4ef2-9c17-b898db528263.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30140bbf-9534-4a79-bd50-60f4d6ed8029.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3029afb4-ce51-4978-8980-7857d8e8d88b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/302dcff2-c6ac-45b7-a956-b146686e5c78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30382d0c-124d-424b-bd1a-bfdc5c132257.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30460c37-e48f-4a7b-86a0-ff10706d3568.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/306418ba-6009-4cd4-9a01-a31fc97685b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30766b8d-5f19-4660-821a-717b7ab89e3a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3087387b-7d4f-4c91-ac7f-f7e7d2c80c6c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/308e3c90-be3e-4d49-9478-0f5b33ec4ae2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/309b0cdd-7609-4532-9d2a-89f67addf4fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30b80d01-6fa7-488c-8938-a16ee4b6b9d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30d15ae7-c830-4ca7-ac47-b1e01f6a12c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/30d41ba5-c815-4dc3-a3cf-0dd2e7a26782.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31062253-e2f0-472e-ba38-91382bc1c3dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31153102-0ed7-4ad2-848e-d28b6a06e9dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3136bb1a-49ff-4424-b77c-b31fbdac6b21.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/313bf21b-1912-4f2a-97d7-6df343946ab6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/313d3b82-6f9e-4d90-b126-d29daae4f5e0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31aac27d-566b-423c-aa37-86bd03a24d80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31c6590a-9f75-404d-863c-abdda1c85f54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31c902b7-6cff-4368-918f-0229a86d3ce7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/31ebc99d-63c2-417c-98a7-2db8e5323b18.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32147210-538f-498a-86a8-9493c54d236d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/324ec9cd-8a6f-4821-a7a6-3f972c773285.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3263f2d0-10a5-40c3-914b-f599cdf67b3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/329b28e2-e6c3-4beb-9a43-a78023fa2557.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32c571b9-5e8a-4025-81c9-961eb9f60bb9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32d4db5f-43d0-454a-b87f-1e6ff2249465.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32dd474d-fd73-49dc-aafa-0c9f53cffef9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32dfec47-ef28-4146-91d9-bc5335644624.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/32f713c4-9391-4dca-b0b1-b9f53a5372dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3302ed2a-5e4c-423e-b704-8146663c4dc2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/331dd87d-0670-4fef-9dcd-3207a5d17b87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33547ded-5d95-429a-b931-33f7fda81738.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3363742c-9b5a-4fcf-a20b-33da136a01c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33a04d9a-de87-41dd-914b-ef09f23bbf62.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33ab57d2-9bff-4baa-a23b-ffb685862409.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33b08a33-2b61-4324-b614-da3a857fe8da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33b0e9cc-adcf-4ce6-915c-a736f8a05901.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33e3bb35-ebff-4ebf-a150-110cf5c6afe0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33e40b21-4a7c-48d1-ad51-c56f86d7e6c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33e4ab2f-cff9-4830-a440-3e05e1c89503.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/33f3a96a-110f-46bd-a5d6-4e0ba75eeb2f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/341e599f-01a3-43ad-bb1e-1b3b62fd7945.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/342aaa46-bd87-4c66-9202-0ff9074f2b77.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34438712-59d4-4df2-b0e0-e2bc84d672a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/344a84d8-a5bd-40e7-9969-7fc24c4d015d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/344dad49-f60e-456f-b423-939bf605b607.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/344f1c04-8b44-4f06-ade0-cf2a5ea28e0b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/345b6a6f-8b84-48ac-baeb-c51b2dc5c50d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/346652da-65b8-451b-b1da-0cfc16574457.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/346c234e-4c88-45f3-a8e0-392fd06e2bfd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/347192fe-96c1-4969-982f-4a556794aad1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/348a104b-b1bd-4537-bf6a-356bfebbbef9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34c29e45-fda1-43a8-9d99-29a5e5d2a1a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34c898cd-00fc-4809-b759-650d4f4ee082.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34d0bee5-95e9-4f19-80af-0284e8c42e26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34d58a92-43a1-4be6-872e-79919fff22f1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34df4b1d-82f4-49e5-9f3c-17b49c257268.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34fab4f6-c7d1-412e-8ce3-ff993c215fe1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/34ff6e3a-08c6-46b6-ace5-1054287261f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3510d228-2c3f-4206-9d81-a074e1632754.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35183a7e-f3e5-48d1-aaf5-4e983632dfca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35251afb-20e9-4414-bf04-5aca71bdeb7f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3534584e-f82a-4d67-b331-e74f281d695d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/353534be-26c5-430b-8714-9e2af459b92f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/355967f6-c78b-49b7-b427-afd2dc498219.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3571fab9-d4ba-47e9-9478-fb6d0e10138d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35a8f1c8-235e-402e-bdf3-5c3cb46c44dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35bd6bd6-dca4-4062-bfa6-c6aca3c4cb40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35c93035-07e0-49a7-8b33-671c736a8f49.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35d70375-67d7-469b-8930-062b96abf3fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/35f2c5f1-71c0-4fa8-a726-16c997284262.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/360a936f-6113-43c0-9124-e50662917c53.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3616529e-764b-420a-9059-ec0f167d10b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/362ac4a2-bde9-4e1e-9a33-8af104730332.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/363e855a-6b28-4a4e-b4b8-27a3b192fce9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3642c9ea-839f-4a72-b7d1-ab3b378bc96b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/36754788-6447-4782-9449-c2446e80cc30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/367fba07-1835-4cc1-ad90-740ed130be8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/369cc983-20d7-42ae-967a-c369f335eab8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/36cd00d4-6f98-40f9-ab33-a2b8578eae23.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/36d34419-c995-4b05-9bb5-9f96525c01a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/36d37374-717d-4690-9625-ae7ff88b766f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/371e0c7e-6874-4c04-8d2f-494b66210ca3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/374a9a8b-eb0d-4d0e-bdc3-6e48d09712bd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3769dea3-6af7-476d-a607-85d8d79b006d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/376a8354-6941-4c85-9b6b-522da11e38cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/378ee0e0-80d4-4c09-b579-cb0794260cc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/37ae96b5-26e1-418e-b710-64bc7d89d4b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/37af8010-f282-47c0-995c-b1450d2bcd0e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/37e1e04e-f3f3-478f-90dd-cfa60fd1e375.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3803673c-0d33-4500-9494-d1abdc050bf9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/380e0806-f9b9-4581-ba08-21cacd80beee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/384cb1e0-baf3-4dd7-bd51-e453d32c3183.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38518878-b054-4de4-a562-db342f6d9b01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/386e19d0-1150-43e2-8af2-2cc21823d358.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38786ef9-61f7-4470-949d-ae9bbb28d562.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/387ccf9c-3ffe-4f2f-ae6b-1a1381998cdc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38a88c9a-0687-4591-8e04-5516d316fe47.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38c0969c-6017-4e48-85a0-df5401195fed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38c11818-ae69-4fe6-b6e0-2396669472cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38d64fb8-0e87-41aa-aa52-5f29dee1c3ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38e043f6-8f0e-48c3-ac09-c6cc741699d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38fcfe90-7a36-471d-8cf6-fd81a056bc7d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/38fdace6-e04d-4c5c-996a-1df4eaf153a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39301e78-cc00-4d2a-a499-6f065231123b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/395addce-e348-4d87-afe2-77984770b640.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39667b3e-a04d-47c3-9565-17f5a9dbd46d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3998e128-2467-4889-9b33-379c0b00201a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39b7a692-2b1c-43e4-b048-b05e6227c834.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39c72f20-e8ca-43cd-ba43-7048b9b99659.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39deea09-a16b-425f-8f0a-66e9a0204588.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/39ea87a5-f401-4c55-8ffb-987cd7a3ef49.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a0d211a-6211-497e-98ec-f93956aa1a0e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a185814-e9dd-46a8-b5bb-f0d666902a6e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a3143f0-26ba-4e61-8a5a-c157a037d919.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a472361-6910-4aba-87c0-35431268aeb6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a5f0d93-da42-4db0-b15b-c2e9d85368da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a89a592-b948-4fb8-bb50-caf523f6ae07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3a94af14-35ec-45b6-87f1-f8f26694031a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ab2b078-91f1-4a86-9f20-207e30f86c06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3abf138b-8eb2-44a2-a9ed-14b57956047f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ad2412a-9c36-41e2-a172-1f7fbc224feb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ae02454-1ab4-42d5-870c-5b9ffd95f1aa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3afa9659-c88a-481a-8e19-05f79a87eefb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3b319fe2-ff32-445f-859d-faaff897d435.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3b533c27-355b-4df3-8777-8449c074e48d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3b628977-65da-4517-b8df-cae471be0c7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3b813348-4d08-45a3-80f7-7f391b6d0b6c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ba2aefe-bed3-431c-b14a-cb3ef5c19871.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3bb778e2-14b7-4e62-b28e-5284c7e20736.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3bda7662-ad59-4985-b717-f823aa9dddfe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3be3303a-ec41-41f7-a430-c4852e2c70c3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3c399e91-fc5e-4387-b471-a505df1dd7be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3c47a3d4-4357-4405-b753-da903d3ab3bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3c4b5296-4858-4f84-990d-d3ff0a7e404f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3c60a380-0361-4e18-a00f-aa89766aa8ca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3c68ecb3-c96f-4f98-97d8-e2694fab13cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3caf8ce5-6b4e-427e-8b1f-4470fbede306.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ce6f846-7b19-4e2f-866d-13b23161494d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d3b603f-3dc2-4a65-b8a5-46557df666cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d623558-75a3-4964-9498-7c5b617f068c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d6f8c67-aa0a-462e-824c-fff4ab10197b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d78a9a9-653d-4a46-9594-38ec07840ce1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d7c30fb-43eb-48aa-ba4f-c304321c3159.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d850c83-cf97-4924-ad09-77552188d562.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d876956-8529-4457-83bf-b93c146caaa3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3d9546f7-0161-4cd3-9bb0-af72ade1dada.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3da0c3ed-97cf-42d0-8999-4469ea707453.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3db39d23-3b5c-4a0a-bd77-eb77006a9cce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3dedcd9c-0a13-4fff-977d-43bb3499c54d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e04a61c-baab-4463-8469-61d6e3e0ffcc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e0b14e1-da41-4759-acd9-7f1dd0647fbb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e0d0512-69a4-4f0a-ab4c-7b64e10b1dd2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e1e4b98-7b06-46da-8e65-c5445f8940ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e4e54f6-ba36-43dc-bd71-b0fc2112785d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e59ad1f-a418-4436-a339-22a8d7a649b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e5ca74b-eca2-4444-8eb7-92702f5e27c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3e62662d-357e-4593-828e-a767c1c62f6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ebd05ac-51fb-49b7-907b-8bed2612591e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3eca78bc-30d3-42a5-a979-cfba6abbf313.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3effac5f-383a-4be5-9fb3-f5a90a8a9ea4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3f297867-8d43-435c-b9f9-000d949af931.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3f5289ab-2e89-4a91-a238-add4bbd0b0cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3fd4f94c-54f4-478f-adb7-0b1d2dad941f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/3ff027b7-d862-4cb2-a5bc-a45ef96e9168.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4044ad30-23d6-4398-9ee1-2f9e1b302a8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40530bfe-c8aa-4e32-a4c0-970198bb38f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40552614-ba38-44b5-84e4-293aade92bf8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40598d33-5edc-4cc8-8c3f-522fea2cc3b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/406a562f-e380-41dc-bcf9-06d302c82437.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/406b760d-3145-4582-ad69-bf691afb74da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40974c23-8e3d-4a89-a342-5836574a6caf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40b2b486-5d56-4926-afc1-e0a4abdf9829.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/40ca7d20-09d6-47af-8662-9714551cd2f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/410fd908-5d33-4d4d-ac4f-7b8c655799f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/410ff3e0-fc97-4046-bd82-cc74609a9c01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/411b1e05-69eb-4302-8a71-587933c98828.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/412a3d56-8761-4f51-9553-9dc56f99f10e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/41343d36-1c57-4d29-8a95-d779985e1006.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/413f5099-cd92-4167-a65e-9962bc57639a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/41686b45-bd75-498b-a1dc-e166e0f55c21.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/41971700-9d8a-4dff-8b3a-32de8ece5bd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/41fee9fb-9265-418b-a452-14d76f2ff46b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/423115a3-41be-4f5c-9606-6fe705400447.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/423e663f-fc6e-46b2-ad1f-3ecfe16ccbe1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/424a0839-cc05-442b-b8a1-f4ece73aafce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/424fd4ab-62c9-4ee0-b246-c85264d36c8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/42599288-b3ba-4f4a-8c24-ac1aa55f6acb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/428820b4-e83a-4424-8942-fe89687ba7a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/42abe59d-7648-4f31-8cae-787f4d34c0a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/42ceb9ed-fcd4-4709-a3c2-9dc802f9b6af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/42cf8ad6-16f8-486f-8d13-2582e3f283df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4337dbf6-9814-458a-92fa-f4b36d99473a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/433fb7c8-dd56-4678-8769-81da461a0196.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4361b583-b359-4f05-8ee9-0f5a78bed298.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4362d9ac-b46a-4c43-b7bc-b1c2d600e204.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4377212a-f623-456f-8216-2c4216635ec8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/437b3e58-06fe-42e7-b4e9-11943c6e3a13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/43981727-789a-4022-b3f0-26c773753ef3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/43c58105-f880-4dfc-81c9-81e7d82b3cb3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/43eec41f-7b1f-40f6-83f8-a900b597303d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/43f07ce8-af2a-4edc-b5c9-a7fa1f3735e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4427ad46-e4a1-45f4-abe0-5cee8256649e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4429f610-8944-42ac-8bba-33f5d058bade.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/445b198b-fcda-4ae8-91d2-8b117b8ab232.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/447d0d0c-eabc-4fee-ab11-7299000ef59d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4488e404-e91c-485d-aeae-de79a9e06782.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44a23048-9178-4b56-8405-f1e1990464cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44b67bb9-e458-4cd0-b957-75088717410d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44b69b62-390e-48cd-98b4-62aac6cef575.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44bfbcf3-675c-4ea9-81ac-af9fcfd41113.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44d922e5-3460-4bd8-9807-7344290c8009.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44e57901-6747-4876-a172-089336040c55.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/44f57d38-cdb9-4473-aed6-3d6b75856904.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/450e5f8b-12fa-4c39-879f-9ae7921f4504.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/45215740-c0b2-4b9b-ae39-9654494c4a55.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/452f7e89-2c89-413a-91cd-5151c841b63d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4540863e-6d37-421b-8c1f-58a76a969221.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/455729e0-5b98-4e40-9b45-61b75ba8f657.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/457a155b-4153-41fb-b195-767a57939644.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4592e064-06cc-4b54-891e-3dc586a215d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/459a2f1d-4883-4246-b39e-d92678fe2789.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/45a60d6b-6769-4833-a72d-5d3503479b69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/45cdd89a-82fa-417d-aded-e00e4a764001.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/45de42f6-b255-471a-9824-df5cfebe763b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/45e8d923-6edc-4130-954f-de43a774b6c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4624894c-301e-4e82-b048-bb1f5d349c61.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/463ee9cf-fedf-45d6-950a-b6351514200c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/463f23ed-58ff-4ddd-af76-96a19362850a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46af0ce4-c5b9-4e24-b2bc-8d839783511a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46bdc73b-00dd-46f8-9d1d-8667bd4e98d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46bde59c-2d3e-4a54-88c0-5712c83973f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46bf3477-9283-4d2f-95d3-3152747a14ab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46f5f352-25a0-458f-83ac-2600e796f20a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/46f713aa-bf52-4f51-8cf6-33f646543643.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/473431f8-47fc-4d90-b428-a85fd607e406.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47630ef2-ec2b-4aa3-ab0c-e19a1066f841.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4768cff5-1294-4555-9d7a-35fece1696e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47740041-cc54-4fed-a1c6-e4432d27bc9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4774afb2-2799-4e1d-86cf-71bc598a17a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47a0904e-0879-4618-8572-a1d03ca341a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47b0d2bb-0100-404c-9f80-c6cbf2138b5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47d387b4-691a-4b89-8f5b-76cd13c4ad94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47d41cfe-28f6-446d-8c45-af96c8b9ae05.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/47fb3a1f-6128-41b4-9ca6-83a52b459b8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4829e155-0b21-41a0-8cad-3a2e3bdec14c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/487f191b-ddcc-437c-bddd-c3044e843b44.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4882dcf9-930c-4a88-bdca-f0f048ff89cf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/488e1a10-3d1e-4ba0-bb76-9eef40f16ebf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/48aabc22-2836-46d8-812c-dddab3b804db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/48b14924-23e6-43c5-8c4e-dec91c20c0ae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/48bc05c4-8a10-4c6a-b93d-f9fb4befa66b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/48f4da85-709d-4d98-aa39-d5463eeef594.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4900609a-2fc0-4d0b-9e0f-70458d73ec5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4909e97b-b2f1-44d1-9e30-a7c51f11b19e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/492166ea-c866-4d75-99a8-85849a48e428.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49294cb0-5fd6-4769-89a1-91d271a2abae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49305898-2431-4b6a-ab59-561077316525.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/493b6db7-d053-4d6a-827c-9259e91e2527.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/494e5350-f38d-4585-acfe-10a2695ca620.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/495bcc91-daae-490e-a75f-3cbf83477384.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49618a5e-3a19-4f03-9ce8-6fe5d0e54a80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49622d46-1f35-4293-9ba7-121a753f068f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/496576f6-4ba5-436d-83c0-2da0265f7741.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4996e1fa-e049-41cd-b224-b1046472f32e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49b65eff-c325-400b-b8fc-c8af162e3857.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49cd7a27-bbfa-4995-a778-9888cb7bb4e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49e1d5d6-87ee-48d8-8553-1620c1079132.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/49f2fa45-0f81-4f48-b393-50abc05e3f75.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a10cb91-a388-420e-ae10-0b9cf38c34e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a2a2e28-92a6-4ee1-b6f6-0e8e919d634f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a3d5e9c-90c3-4ba4-b1b6-dee5698b5c04.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a5309dc-8ea2-47da-b544-11e00499370c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a705734-d740-43e3-b29f-39e50f455df0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a872c55-5e1f-40bd-84e1-62efef230adc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a969242-9f88-4efe-89b0-ede5772e5f94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4a97b48a-3309-4253-8bdb-6607b56d98cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ab71322-4ebc-4865-907f-69087ff29706.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4abff7fe-4853-4631-9461-50f0c3af0d0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ae89df5-26e5-45c5-9ddd-b6f773bbd172.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4af2fade-5ac9-49d8-9c09-7846708025bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4afcb92a-5a81-474c-88a6-135111bcc8e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b1aeebf-8afb-4559-a099-0ee38e1c8cca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b1f4157-510e-4564-b3cd-b4b2106fea61.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b2a6f86-6085-4a36-900c-5fd610b04f2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b6489fb-0987-4c8b-abdd-a99d024e828b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b783a6a-9f6d-4c8c-87ad-f612b82f180b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b8d23c2-b79f-4b2c-aa64-1a5d6d5d013a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4b96a42a-6226-4d2d-8902-cd4f48b887a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c1d30c0-2d15-4daa-9fb5-bf3244032813.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c2412f1-e077-43f3-8500-5a31d8172863.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c54ca4f-a039-4ce1-8ff0-cafbdb80c3d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c6618e0-85d3-4fc6-922d-b7b5b39a4b5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c8107e7-7a52-422c-a848-bc2d75242041.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c891094-8c89-4ee5-a0bc-986f8c591d68.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4c8f9959-b613-48a0-96ed-ed8871a0a4b4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ca0059b-65db-4c84-b6db-dbd535562585.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ca1c51c-36b9-4f30-80ef-92484b634101.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ca5608b-50aa-4c04-8b5d-2342c63a198c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4cb0376a-3e99-48d8-80e0-6833a0b7cdd2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4cc39a85-fa80-44e5-89b6-8177b7082f92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4cc878e0-9054-435e-9306-396f373ff1ee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4cd49822-e401-4513-b730-f7a51772547c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ce1ee5e-f954-499c-921c-d13e47c52fd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ce7e2a4-8378-4d88-b7c4-fc3fc698aeca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4d0fdefe-8656-46c9-95a2-87ee644c57ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4d30f823-a8dc-4cd8-a9b2-a13c9b7c33e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4d4ed945-76f2-4868-b6ec-3e98d36f4a5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4d573c05-8c61-4e91-a92e-38beef88e8d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4db4294c-5130-4ab9-bb6d-e16018854ab2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4dc5106c-2ae2-422d-966d-0d7466c6ad51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4de107d2-1071-4b02-a873-72b6c8515280.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4de308ff-f691-49d4-85b0-ee7a330cce2f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4de9382c-c2c1-456f-9822-2f6f38f1a651.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4de94def-9e46-4d4e-beea-c4b3b9c328e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4df50bba-7425-4103-8733-ac349af75997.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e0be864-15b9-4e6e-8e72-40a1df38914a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e246913-a51a-428f-b5ca-6548f9702b61.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e331733-ac5a-470d-b925-111a441335bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e845139-0257-4b12-b0ff-97636237c300.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e931b06-a91a-425c-a1f4-4c90f999da31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4e9dac48-17a9-4e7f-91f7-dcdc162b21a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ea0945d-b57f-48ec-ae1e-1d85b79dc695.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ea3e1aa-b3d3-44ec-b28b-6f9061b28367.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ebef52e-96c5-4769-9bac-8eb1024edf32.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ed00558-12ec-4faf-ac8f-e58f371ca1e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ed6232b-5629-41fb-97a1-8883ffb473c3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ed94ccd-c8ae-4364-937d-a7fcf614c146.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4eebc286-1aa0-456a-b469-668cb4c549c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4eec6004-8366-485d-9a8e-23f76e217468.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4eeee538-ef0e-4125-938c-9f3a97db5a1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ef81ae4-abe9-42f6-ade3-fe3644e80c06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f1855f9-a060-438f-b7d2-bab2836b79c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f25eebb-b862-4824-9ca7-c5ba96a4a28e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f28d63a-167c-4855-95d3-26785ae4bc5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f2ac16b-9c63-4bf4-b99f-d8ab90ca2dc9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f3a8c5f-47da-48a0-a0f6-5bab3b6b6138.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f6bcb75-8e9c-46fc-9116-469fda3ef75d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f73814a-1b43-4e5a-95af-9b58aaf7cbba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f772e11-76b6-4db5-a02d-b23fbb274e6e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4f9502e9-e855-4eba-9340-29f8fe140f9f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4fc20e68-fdc5-458e-8c22-2b912ffa9309.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/4ff0413e-511f-423c-9a37-5d3e404e3491.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/50120a72-bf1b-459b-91f1-d4701607ba8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5020ad7a-e55a-40e7-94a1-d5fc3af81f73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/50331086-bbe7-4c28-bddf-1f649fd0db9f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/505acefb-f4e2-495e-a63d-511231c7be7d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/506c5e70-8da9-4c28-8496-e1335ace193a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/507809d0-75a2-4a6f-94a0-79d2c6b41941.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5095cb09-0202-45b6-bb3d-3a9b8f008952.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5095f115-1c2f-4389-b4fa-d0b4166bb864.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/50d12871-c6ae-4013-bdc6-2c76c04e9e07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/50d3b798-d18b-4de8-bb7d-728f011f0ada.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/50fde729-2146-4563-94f8-c46f72423124.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5119f68f-c735-42ef-b7c2-ea714e077375.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5145ad05-a097-4251-965d-95f6295c656d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5145c02d-3ad9-482e-a942-0a07d775dbeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5162e9da-a511-4d3c-8534-0a588ee8deed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/51746061-71a2-48be-87fe-8b4b52a32e85.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/518f1be3-f6f7-4516-b0d8-b945975ec463.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/519624e8-81b7-4ef9-bd5b-37c8a8fe1a78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/51cb338d-cc9f-43b2-a4a0-bb379bdb7e90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/51dc5fb7-c3e6-40ab-b4bc-bb40e46fc20d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/51f79e4f-366c-4517-ab77-cf3718e9cca0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/522b2dd7-5d0e-433c-b5bb-73b2d1c5dd65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5255554d-d30d-410e-9aab-3539ee74e397.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/52670cf4-0ba3-4b22-a744-fbd1dee03dce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5273f92d-771d-41bc-886c-64fcc44432d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/528eb6c3-f83f-4b9c-993e-75d0f938f4bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/52bf9a89-1e94-405a-a9d5-36e509b8d891.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/52cd6a59-dd02-43e0-a823-c5061bc58ac8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/52d9d5ee-9d5e-4571-ac28-98027d9aac26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/52e10074-b586-4e68-bc5c-b39b6f3fd1dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/53012bae-ff2a-48c2-b9ad-2d0edad2524c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/530515bb-c000-4e10-96ae-610b72e5719c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/532ab2b6-fca3-4560-a7ba-9ef188768edf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/534a8304-35c6-4918-8aa4-ec64bac05b80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/53510c36-c8eb-44df-936e-91cbf3459797.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/536098c5-c0b8-421f-8140-27e86a6e984e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/538c01f0-17c9-44e7-b050-121d211c5108.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/538ee594-4403-4ddc-861e-8d6724abdc95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/53a03414-8ad8-490b-9886-5929760d68fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/53a3062b-4da9-4fb4-a356-e75025e97253.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/53e4b533-5841-46f9-8518-c9b9bbcbc5d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/543b2f64-f414-4f44-ac8c-d3f41611cccc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/544ae29e-104c-4ac2-81fd-e3ae4aeb34f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/545b2a14-7c86-4c31-81e8-247479f5d3ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5485955d-60e4-44e3-b716-f366244929ca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/549975f4-36f0-44f9-9e3b-f1020c4f4aed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/549ebad3-e954-41d5-acb9-7ff6260ca555.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54aa9a71-bbc9-4f73-9b28-bdcb1f4744a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54aaadb8-b49b-4665-b3d8-e9410a723d17.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54b73c71-d125-412b-bdc7-969878a949ab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54b7b297-bcc5-4bd2-843f-98b5c69c5218.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54b9691f-1b54-4d7f-985e-34474bd52938.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54c653d5-7e02-4889-b648-56b1d9969130.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/54d5a6cd-4356-49b1-a7da-8285531a89c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/552a9c11-180b-411a-afe9-11e1d8b6f168.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/552d81a0-204a-4a44-b746-f9ea1f2122cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55438ff0-6e2d-468c-9cf6-31b517bf4b37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5543c3b2-9d08-4b3e-8c6b-8dc538f638d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55528aa2-cfcb-45b9-9f15-5bdbfdf43e1f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/555e702f-d41d-4dc6-8862-d30092964b51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/556d508e-037d-4e79-af2e-784308766626.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5576a4ba-d771-4ff2-be95-dbda8cf1a471.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/558a124e-58ec-4824-900f-6d89e5d5f2a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55b8b423-3aa4-4b89-bce5-97479317c1c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55bad125-cb5f-4c93-9b21-f1f1e2212541.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55dac9bd-d79e-4735-82b0-6c519d6bf9b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/55f11a40-ec7b-4704-b358-b157e0f01431.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56045a56-3926-4705-9a00-1f8d4894c3dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/561f5ea8-7720-43aa-86bc-66cc05d4e7f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/563469cf-45b2-4130-9f55-2d47dd0b3fd1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/563cd097-cfdd-4c3e-8ef4-a99114cbe9d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56511f84-4897-4871-a1e1-1e26f801e001.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/566ab4cc-821f-405e-85b5-3b2b557a8803.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5681a510-92b7-4b52-8297-dc2ccca2b93f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56a16cf2-b5f7-4b0b-927b-38807e078139.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56baa7ca-5e34-41ef-8063-7dcddfdd0576.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56bc87e9-6fa2-4d26-9116-5ec47ac93614.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56db8e88-4a1c-4cb5-8d30-f778bbe948a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56e14912-e683-4c54-9206-1d5bd15c21d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/56eaf8dc-3b39-4ad7-bafc-eccf7ffe0105.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5701c09e-3618-4f5a-b17a-9350803bb76f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/570f2323-8083-477e-8b7b-c5f85b6b19c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/572845c9-7918-46f4-8807-42fa496818a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/572ab0cc-16d7-4831-a2ed-1f3d8c276a6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57388536-e0e4-46c2-9761-4c14e6cdd059.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5787210f-a85d-4984-aa09-e0b6792b4f5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57ad3238-4dc7-4fe4-bead-859a0b9be839.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57b4b4ee-a148-4b1a-b13a-a55907d75d04.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57b79896-ded8-4a91-bb98-a73325fc2c6d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57ca066a-5605-4284-95ea-aa025f8c8fa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/57ddd4ab-2ec1-4c28-8337-8676fb4a142b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5800541d-83fb-4921-a9c1-1ad768fcadf6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/581e027e-ca59-46ba-96b4-82cb6911b67f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5837d2c0-83d3-4c63-b780-0b61f04c67fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/583b065d-bb7f-4bdc-894a-d635778f00c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5841c584-7499-4b42-80fe-92fa2142813f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/584c33d4-cb49-49bb-bfc2-7a7c09a7e8b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5869de9e-c242-4fa5-bc8b-455353ae1a15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/587cda69-2cf6-4053-8d7d-71651e83b0b7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58aec216-4406-4a17-b5ba-041b6c722fd9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58cae7fa-60f5-438f-8967-dbe1631b2af9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58daeefd-8cb8-4dde-9549-ccf2796b5aad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58e138de-2ac7-40a4-88ac-61a9f4bcef54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58f2d865-0bb4-46a8-b9f7-6f546d281b85.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/58fd1837-9784-4f4e-9b13-bdef1675822e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/590ca982-3902-45eb-8ec4-1ea6e1b5aeba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59493ec6-da71-40db-a398-520b4e11fd5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/595f9f00-5531-4d19-b9e4-297a626f9a7b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59a493fd-440a-4d1c-a60a-e3072fec8012.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59b6463d-5e12-45ed-8132-6362db72a819.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59bddd1b-b25d-4e14-81f3-243834b99d20.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59cae095-2f89-4e83-904d-fdc79f669a12.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/59f11096-77eb-4d92-b50b-0529a16f3494.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a077929-ebc5-4d7d-a1f9-ce749257358d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a1b1938-6f25-46c8-aebb-9bfc79bde87e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a2e1a30-e408-420e-a326-5ce9ee863927.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a369bde-f8b8-4528-9a27-908127221b2a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a379691-367f-4469-a1d0-54f6e7535f60.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a44356f-dc15-4562-88ba-2a894305efaa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a44c175-cb76-452c-ada8-3dbcac50d35f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a4819d4-4cb1-46e2-9a10-805078c65cbd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a53ba2c-9a44-4dfc-9a36-08711bb4e0b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a794013-4d05-4c6f-8f5c-502e7388d606.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5a8a0f84-d253-413a-a403-a0c36a8a3d9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5ab06bd8-8236-40fa-bacb-037ca1f8ad97.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5abd6042-0bcd-4ad6-8fcd-89901a006e54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5abf35e2-87d9-4eed-8435-c0ba711e1985.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5acb6b6f-1e46-4021-afd2-4212e4723eb2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5afa310c-14ba-4021-b247-42061eb899df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5aff711d-0a76-4a9a-b8fb-0b446edd88e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5b256e10-4015-412b-8ed9-0aff4dcada89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5b46fbb4-4cec-4229-9a53-161447956dae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5b526450-1f95-44fc-9b5c-3f891157b305.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5b78a350-ac9e-4b9d-89ff-665f8eca486e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5b9b9481-76f2-4a12-bb68-5e6dd98796f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5bdc89f8-2e4b-4ec2-8825-be336a9a8620.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5bfc92d3-0272-48fa-a301-bac9e74c3450.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c0fc772-536c-471c-93af-548b4740fff7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c325c04-85c6-40fd-aed8-2f8b1d4afe5f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c370b06-c60e-4155-b5b1-b52bf1fa7c15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c3b64d5-be06-4079-a44e-f424319cc2c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c52f32a-631e-4891-8516-acec411c797d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c65312f-86a9-4d45-b57e-49673fd8a513.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c7a24ab-410d-4ab5-8eeb-185fe57b64a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c7ce289-8f86-4d22-9eb3-0d9a83bfa1d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c890dfc-c3cc-4173-81f5-e1274a043281.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c8c78a0-2d20-4f1a-a8c4-8a72d7f23a19.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5c968f53-cd55-45b6-bf58-785331a53592.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5cb524e7-0f22-4711-ae58-755d43360cd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5cc7c7b9-35ab-4385-ae1e-752f9b4f51bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5cfa4c7d-207e-429f-bcc0-31a251041180.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5d0e72fd-71b4-46b7-9fb3-a63a981b9f71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5d350bad-7ecb-4bbc-8ab8-6a1de3affaeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5d3ff718-ce9a-47ef-b6c3-d8a335e6994c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5d67390b-bd20-4a12-8fa9-5fee81a992ab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5d933d85-92e7-4a90-9d6f-22e6b450a32e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5dad76fe-0ed0-4816-99a1-df482bf60963.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5dbbde73-b226-49a6-840e-a27774917ff3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5dd3c6c5-8486-45f6-9f75-c5362fbdaf09.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5ddce6c8-9810-4a19-a55e-ea3d21f9d1a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5de1106d-30c1-4e3e-9156-cee76dc98947.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e04f8f3-98fa-4c01-829c-0e8efd0f6974.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e0b0376-d07a-4764-a008-1300f4d6b53b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e45b584-ec1b-475e-b1b9-4460dc6367af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e4ff5c2-bd74-47d5-baeb-dcc609783817.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e575b1b-53ee-4a4f-bbdf-e54ba45f78be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e77b3c5-efdd-49f6-94b4-ed25c977cc76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e9282d2-77f3-4ffb-ad48-196c34627e0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5e92a653-27f1-4c33-b1ed-0b74d7776b49.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5ec422cb-94f0-4d24-b7f6-fcc173d93a91.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5ed31002-ccb2-4b86-9375-33d21b353acc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5ed87c8b-7ef7-41f6-8414-0910813015f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5f199ec3-4fca-43cf-b3a3-6011f6322ca0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5f251b3d-bb09-4b96-8997-7f7648943d82.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5f3949aa-ce18-4abb-a4ca-50d8ea81c6f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5f430770-776d-459a-85a6-4e175baaf7b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5fd97ef1-0f0f-4c91-8ef3-e0f24cfdfc42.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5fdee7ed-a7ad-463b-8fc3-709565251607.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/5fe58954-6712-4295-8e85-5f62b732bd6a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6005fdce-8aac-4d43-a6ca-475f130fa750.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/600736d0-3082-47b3-811f-7890e654b421.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6013615d-be0f-46d5-b170-9838c8934467.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6023c67f-e0b3-47f2-903c-329fc3455320.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/60729b9e-753c-4bce-bdf8-58840f23bf8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/60a83cb5-2e87-435c-a51b-8bcf44585f3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/60e5ed5d-2f3e-48a9-8efd-f074e4438c87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/60fdbba7-c833-432a-8972-0b22f683cdb5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61143a0e-0fde-435e-b036-7c17ae70cecd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61211431-3f4b-45df-a76f-da74ad72ea66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6121ce35-a94e-44c3-9275-9313528364cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/612a7a00-b75d-4531-85ff-22d60a4e08b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/612ef3b0-fde1-4fab-8240-70b8ac491c83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/614c2940-ca97-44b2-be9f-fa882f9cc4b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/614eb841-21fa-4f66-8ea7-1bec2faf28f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/615772f3-9095-43f1-9a57-9c03a4baa202.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6190df1d-9633-4df1-ba3d-6a4a541fe1ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6192b24c-2633-4e00-8183-e73a8a0d2f0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61a9e2e0-15ca-4085-89d0-b39ca185cb36.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61c3ca2d-ad31-4102-aa7b-a948c53867aa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61d86d4f-03ae-47fb-9417-e3a6e9a4f7da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/61dde111-7d4b-422f-b85b-e6fa8768c83a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/62061d48-e64c-4689-92b2-bdfdea65846a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/622273f5-5552-4709-97d1-156a468bb128.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6241ff8b-17f9-4e49-9fae-df1959275eac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/62470fa6-694b-47c8-9f09-7aa05fe5e3db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/625453d2-d776-4f80-aa59-d07b734124b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6260342b-5e62-42fe-9e99-ed5e221115e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/62605a01-a522-49bb-bf27-23cf4bf14c9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/627cbd8d-7d16-44d2-b923-0cfea6e5aef6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/628584a1-85df-47e5-a0ac-87844eedc3e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/62dca4ff-f60c-46e7-9d74-a9ab22daede2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/62fcda04-51e2-4faa-9a49-eb0c68ef4b52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/63021166-0e4e-4582-9431-3af4aae3878a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/630f388f-859f-40d2-ab3f-655bb50ad366.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6338011b-e44e-4ef6-be5f-df7bf3f0ecd8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6348d96d-02ba-4aea-96db-e27302bbd10d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6350cbe3-ba42-4fb1-b9bb-78ac181b45d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6355e740-1883-48f8-aa1a-b71c5a48ad33.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/635b9ac3-862f-43cc-9e9c-86df53b6cc1a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/63604a20-e4e6-4079-aac0-09fd59fb87c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/636ade19-e611-49d5-9828-6fef268c502c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/63715cc2-356c-4d7d-a201-2c1417a64b53.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/63e7d3de-7202-4564-b829-e7448783a680.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6412d308-5fd9-4351-b4b3-cbf45d362d1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/642217f7-e106-4258-84c4-0b845cbb95de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/643379d6-2f99-45d2-98a8-32c3878cc342.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/64adc9ba-3311-44d7-ba82-16b444ca432a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/64d40e8d-47fd-46d9-ab27-2354d6f360e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/64dbcb32-1dce-443b-b808-4288eadca6ee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/650a7740-56fc-43d3-b730-2ab869cfb017.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/654e74af-1650-43b1-9264-a2247dcb272e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65533e1b-c3ae-431f-bfda-272473b6a9b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65647add-eb5e-4723-999e-41977072c6b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/659e0743-dbf1-491b-ab69-91dd09527b57.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65a0e30c-522e-48e0-bb5f-df9b98400b06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65a5a1da-5ddd-4d8a-95c1-a70c5e7dde53.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65b8015e-3d2f-4ceb-a1ac-edfe60c02a44.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65c7c8e8-f52d-411c-85e2-3a0340356859.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/65ca3b70-af4c-4848-b2b9-4eca22c3a313.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/66149ca5-b8ff-4c2e-9a99-3821a377fe9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/667da828-e1e1-4430-b4b7-8a81ea2939b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6690914b-5c8f-4ad2-a50c-a5bb5a21ffb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/66c02ea2-f079-439b-b635-94cf8dad2f78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/66f54c2c-20d6-4a43-8801-8d086c2cac84.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/671ec8a1-1a6f-4cec-b2e9-7616514f79e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/672be36c-77b3-4236-ad5c-fce65570e481.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/67345781-45cb-4a88-94ad-199985f8cc1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/676d922f-5696-41cf-be99-6531210d6825.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/67793f28-ff85-4072-b859-8950a157ef8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6799aade-0433-4e1f-ba60-86ad2aab4d32.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/67b2fe61-5ee0-48a3-9f89-3ffdb50f508d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6805e29f-efa1-4269-98f3-7ac48cba5bfd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/683c336c-78fd-436a-b6fe-58f299788d15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6863321b-d4ac-4a2b-8ea7-e69b563328e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/688c4b8d-468c-4318-8a17-7595ece8d9d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/68b00601-5ffb-401c-b550-ef7de132928a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/68ece873-57cc-4e40-bd81-380a337b0a38.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/68f66411-b93e-4e22-b808-ba9d121db139.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/690015ae-1257-4f6d-96e3-61300d201adb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/69045eda-11d3-42e2-8d1f-3e31272c7ac7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/694b92df-b89d-4774-a9be-48d939c755d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/698392d5-97a3-4531-8055-785f87217391.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/69848a93-8d00-4fd0-a8dc-0f813d549d01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/698727c7-bcbb-4183-a0f6-c6c1a72b562a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/698a47a2-5558-4010-852d-b01e11a59fdc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/69df5fdf-e42d-4ee3-908c-75e4f3ae29f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a133a06-b68c-467e-8d1d-efaae4b34f2d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a18597e-204e-4534-a2f6-abdddb30caed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a311a1f-7471-4dcc-918b-9b312f11a547.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a3b2dc4-5ef7-486f-9b70-5f5f021f069e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a4e0542-4459-4215-a9a1-aaaed1b47b8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a603f8b-c3e2-4654-8d89-93dfe61ed38c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a649085-a9dd-4bbe-a254-ba9cb8ff7bf2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a8070f1-8f25-4cd4-9178-10a03099deec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a872d2f-5904-4c8d-9a83-b2e9c68849fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a8dadf9-fff4-4a77-9222-5fca6b29bb4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a96c0a0-84a9-401a-ae08-6b800e63f3bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6a9d40f8-e3ef-4347-8df2-989ee512bf5c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ab418b7-4cf5-47ee-b7da-adebab1275d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ab834d2-3d62-4a38-9776-d1c76f9d5933.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ac6a9a1-2eee-44a5-a130-f0379d70429a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ad371be-066d-4153-9004-82bbdec390a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ad9da56-87d8-4ce8-a84b-f316541057c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6aede364-15f8-40c9-acba-7f2addf9e6c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6b366e3e-b5e3-4eec-8694-68c28f270e6e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6b46c36b-6213-429a-810f-1bb2c7736302.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6b61ed70-afab-4ab3-b6db-e37a46f534d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6b85ea41-8f87-4645-a459-ef1a50658a08.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6b8732bc-e810-4f44-94e5-610f15ed855a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ba4e212-5e20-4fae-b2f7-4257515c8ff6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bb97f58-9f2b-4b1b-94a2-e40c0d650057.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bbd0eed-484c-475b-a982-9d198e992503.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bc39668-e9f0-4908-99bc-6df7962bf1d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bd7c308-1e33-43ca-a1ca-0b30b1e1d717.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bd8d368-85f0-4575-816f-2a2fee8733be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bed8a09-e693-4d37-a0c5-9b30ca9af4fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bf27381-600c-4290-9ab7-4dace79f9a1a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6bf8cd8b-9a2a-4e83-97be-1f20e6805ef5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c0e081d-d15d-418c-b5ba-66d569dee771.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c1dd6bf-bb7d-4b1d-b4aa-bd3ee8e32561.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c1f5b51-7b83-4ffe-8100-394bc2ba1af4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c213a37-e876-49bc-ae8b-2e0b834a966e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c3b3cc6-2460-4491-a59f-f8b856ab913d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c608ea2-5ea7-4020-a69b-8ed5000ed8fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c64605f-1709-4edb-be3a-4248038fbb74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c68a2db-189a-4dc0-9466-d5efa36d1cfe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c6b1064-2110-4553-9221-aa9679b7cd38.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6c9e515a-c5bd-4cc8-aa9f-ce89ebdc07be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6cb10b21-8b2a-4d0f-9b88-aa241392b558.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6cb2101d-2f1c-45ce-abf3-fd714d3af917.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6cbf4281-6f83-4819-9a3c-6a3674e93d69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6cc1f174-95c1-4762-8427-a0d4d33164a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6cd4bf4c-b973-4b4c-8047-1887915613f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d0662f3-888a-49e6-b442-f4adb699422f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d278b51-8fa1-4743-8c60-12a06b6a151c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d34d8ce-5844-44c1-afd1-757658bb35fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d5566d8-8091-4d98-86a5-867d4e4e0321.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d5a3748-1ea4-4006-a54e-3089ebc71a0a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6d95dcd1-46dd-4f50-bf6f-6d3157880e00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6db11900-8df2-4470-a9ec-d2b5227c0006.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6dd4953b-bf48-4cb8-a6a6-3892cce9a71a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6e3fc856-abcf-464e-8cc6-b9721c14546c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6e631512-fb58-4090-8b43-28dfb876195b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6e929f69-49dc-48cf-b56e-a14e777e08c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6eab3eb6-63db-4ce5-8d62-1ec109e1af5a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ed41abb-3221-4e00-8ff4-f5a58e1bf48c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ed511fb-2baa-4e2d-801d-0427de329539.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6edcd82b-2a93-4809-b47a-cce947b30804.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ee002a3-10f4-479a-97f6-68daa08c9537.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f3998ab-fb52-4c29-863e-e6594c656429.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f493ee8-40dd-41fa-8675-150396039460.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f53848e-7e6e-4f33-9588-e45d0870b5e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f6d45c7-77b8-4926-a6c6-7485424e2c6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f8b51d9-d2c2-4fbc-a1dd-320f41e1a1e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6f8e8e3d-cbe0-4640-a85a-a534cdbe4d30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6fb27709-1cba-46cf-b8b0-650da61df1da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6fdde70b-56d7-4d56-aab8-e9ef5b709a07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6fedf950-cd3a-481e-b369-d0fa31fba1c5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6fef4564-1aa9-476e-b331-51effa976ce3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/6ff04e69-e3be-4b73-99f2-226b2725c5c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7001c336-b3a9-4249-ae15-7a32de318b25.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/701b4b28-c5e4-4858-bca6-e17de4f630f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/701f1e90-b54c-42b4-ae19-f9499fb215ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70636f99-f3b2-496f-8898-974fd1c310ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/707083f7-04bb-4deb-b314-f0c586fc3b73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7079edb5-c00f-4029-b4be-cef1f200963d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7081a0e5-899d-4ee3-a95f-69443e8a6d86.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7084e2b6-86bd-4e74-a875-ca21a34abb3a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/709db0aa-e0ea-4f4e-b76a-214d80431c20.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70b04c25-d8c8-4476-b490-fbb20cef0949.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70bd6c46-1a7f-4c66-bb8d-bf420983f38e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70cb05f9-42ad-4aa0-8f75-f7980936f0b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70cb470d-4a58-4bd2-8e9d-dd78a2ca3501.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70d8613a-72d4-4730-9fbd-ed6941aa2ca1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/70fc02e4-a115-4983-8cd8-b147d5530790.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/710d4039-2c05-482d-985b-7412f03bcc32.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7131508b-110f-41ba-b1e1-d1d8ded7a734.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/71376460-4cbb-4a29-92e3-441429820e3c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/713ed22f-7233-437d-9f28-40944a404015.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/717adc1d-6835-475a-a673-b39029774b63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/717e08d7-ed19-4058-9eca-43f0905b65c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/718509f5-0feb-4613-a1e9-9813ad913264.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/71aa7cb4-10c1-43b0-9367-18c55681afd1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/71c2ca3e-13e1-4250-b710-510b8dc828d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/720b6fa8-bc18-4c09-aaa3-7cd420a3b499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/725e6855-b53e-4305-a57d-594f2acfe6a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/725e737b-c7a5-44bc-9a24-a88e6226a23a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/729165ac-9da9-487e-8024-702707a378b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72c10b89-ed4d-4acc-be6d-a20bc4ead7c3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72cb33d7-ee4e-4639-b379-b4504f669d46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72d1117b-0bd3-4b59-a5c9-7c7ad206b6f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72d26a30-82bc-459e-a675-97e8f2689f97.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72d66006-86f1-4138-9fea-9b72fa4e33b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72e3422f-6c8d-4b95-b650-8c34703f5583.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/72f28dd5-3a76-47f0-a212-cfd189319d7e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/730dd1d3-a655-4daa-ac09-68abdb42cafc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/732a917d-fa49-40d0-bb6b-eef450e60190.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/732b639b-3051-4a43-8528-56a6dc66cb44.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7335324b-58de-4b12-9687-0a59d26ff1df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7399e9d0-1e94-4627-861a-990847438f11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/73a93f0b-43ad-4fd8-94d1-127f1125687a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/73bf18be-d84e-4f42-869b-b2896c9ae3bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/73cc7c75-0d7e-431c-9d2f-9556e999fb9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7407beea-9249-47e1-81d1-e8335874febe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/74120c32-2eee-4774-81d7-37c14407212e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/741ff466-a6be-40c7-bd90-b80f714f6b2c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/743a7c0c-1db4-4096-ad2e-c52e393227f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/743d46b7-3986-4411-a82f-aa6969186bbd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7467cbdb-2ac6-4045-b3f5-92b0999cfe26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/74b651ca-639f-4ee1-a4a6-d38726ea3a8f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/74ef1492-b574-428d-8f50-2ce657bf5651.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/74f653b7-40c4-4f24-8b8f-c13ca74cb351.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/753447f1-58ff-4397-8677-d866a90f1499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/754b33f4-7229-4952-a59b-e9e6109f9ba9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/755c04c1-9edd-4224-85cf-9fbb3ac6c53a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75822214-6b54-4e95-944f-2c0c91170dec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7598b9b6-def2-4779-9078-37c859f4d1ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75a40da8-e65b-41de-8f1b-9d139a3d9bf0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75b54088-1aa1-4190-a044-08883017e1fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75baa641-27d2-44c9-84b5-8b210d7b5094.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75c61e2e-f7e3-4f12-831f-48881a9a562b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75fdfd12-c2ff-48c8-bca9-52d14b7f5bc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/75fe2825-a60b-401e-8d75-69a2ddf9ae45.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/760de84f-076f-4a5b-b787-896f25ba1c9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7623aa53-79c8-4f75-9cca-261f7fb4f0e0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/76640611-9309-4964-a6c2-8315374e5dd0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/76940a26-0a0a-4949-b724-d62c791afdae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/769b071a-9ca0-4bbb-bb8f-e95449cf23fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/76a3d5fb-4604-4999-9e91-816be2b61dfe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/76d5aee5-22d5-4bde-b425-3dbf2bbf1c1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/76ed6aea-cb02-436b-8962-e5c453fd24e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7732504b-e92a-478c-a845-ed46374feea2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/77444a80-6a6b-44f3-803c-f4716681f120.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/77603d1a-a21b-431f-a00b-2953a0517032.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7785afdb-ce0a-499c-9b74-935f60911fc4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/778b919c-a317-4fa7-91a9-99b147a562ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7792aa6a-8081-4b61-95d4-60f5227a082e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/77c269e6-0ac7-44d7-9a32-6860d00ca53a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/77ddda3f-a034-438e-bd27-313608cedda4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/780c1f05-7119-4ea0-a208-83fed7c01ed4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/782e72a8-48d9-4aeb-8d4c-6334a9454983.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/78449488-ccec-410f-b944-253bc1fbf18c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/784b4f86-5b88-4dda-8e06-a7d24ac80672.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/786a73f8-1a22-4b74-b869-8b2403004165.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/786f9c4e-96a9-4960-981b-157b1f95c3a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/787d92a5-21e9-4525-9df7-9051432d982d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/787dbc66-9d6d-4936-baf5-3e7c12c29df3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/78954c05-f523-4038-87b1-74f611aaa8b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/78af6847-9f85-46d6-a683-97069b09d685.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/78b7ff71-cd35-4468-bff8-1c61ed30a5fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/792158df-e3e0-456a-8fbb-aa916c5b4c6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79267d6b-c452-4aa4-af7c-c99bd4af0b3e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/792d2478-d878-4793-a21d-53d79c7e0564.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7939b041-4fea-4550-96c8-a0f702c5b8f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/795ef5cc-a823-4f5a-86d3-bc55944dd3bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79696b51-5b80-4bad-876c-c4cb64d30c46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/798580da-06fe-4beb-b654-73701e3e6e11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79b7c720-2536-4bd4-9713-a848894888e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79c4c504-de72-49ee-b702-09b1c83a53ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79d3ed6d-8953-43a0-b88f-dda39a503517.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/79ec60c5-e4aa-414f-80b8-114f0409e546.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a466117-f71f-4522-8902-a4542173fcd5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a4834c3-d53c-4886-ac3d-076424e4bafd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a4b78ec-d809-4452-b9de-40610cbef645.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a5e5e6e-1304-49f7-92c3-7acac4187ec5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a6be3a4-6d13-470f-ab49-8a132d230bb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a861750-9066-441d-a2be-f0c66550b493.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a998687-9edf-462d-a83e-ec1389ea0e0a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a99f005-a6d1-4e0b-a656-9759e38b8b59.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a9bcd48-5c9f-44b8-ab4c-6e60162a7aef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7a9cd837-bd0f-45cd-bf41-ddd6df04e47b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7aa63544-c4b4-4e29-8c24-dc9f678da57d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7aac0914-8b30-404f-855f-f641c58aed5a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7ad4173b-075c-472f-8dbb-e13a050c696a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7ad8d2bb-4481-4551-ac00-6007e2a6d073.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b0613c4-07be-4a38-98e0-41a390fc1db6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b0777e5-97f6-4122-81dd-9069813b9139.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b3be635-e9d9-45af-90e6-7d2f6b3c48b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b5a460b-5565-43af-9925-9837f5f6afc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b674efe-743b-4a05-b299-fb035bc3e12b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b84db37-a615-4869-bfa9-0d38dc511be2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b86e9b9-613c-49d1-8a82-e553ca7b125c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7b98f288-adac-484f-b219-0d7df8ca0dd8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7ba5f2f4-db75-4ba2-943e-5e316a142acc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bb2ffd6-202d-4a56-8ea9-ddd2a351d89b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bb5b921-78da-4b09-8d87-50c89de1dc02.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bb75f26-97a9-4af4-a298-5c4cc43d0c31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bbedf1a-fef5-414a-926e-6e2a0591a7d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bcabbd9-3762-481a-9c4a-06967992ebba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bcdc0fc-704e-4156-8719-16631355b5bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bdf966b-1fc1-487d-a552-b120cda9c246.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7bf0eb8f-15a3-4b46-9407-08902dd2f8bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7c05cca0-d1c6-450f-a1e7-a84973e7208f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7c3bfdc7-d991-4421-9c79-6e7b608d6620.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7c479aa5-f2f3-4ff6-bc3f-831d3f70fdee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7c62c9d7-2a12-42e4-87aa-08c58e785228.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7cb08c6a-1a26-4634-ad7f-497de8508e9f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7cb6ccd9-b690-4455-b043-fdc14e6c4ab6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7cf0999c-4c6a-4743-a036-3db22509e409.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7cf572bb-d827-45d2-a3eb-b825b32420b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7d53a85e-1096-4124-93d5-033bbdd23f36.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7d8b2e58-5361-4a6c-8219-fe3d9737bf8b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7de41c03-81c5-428d-aa85-758c6baff37c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7e2d281b-de44-40bd-9a2f-94b3a031abc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7e3c13be-ced6-4b99-b5e3-68558192d5b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7e6a522c-03cf-465c-b96e-77f40258cecb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7e9ad6d7-6488-4308-94b0-5f69512dd4b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7e9aef2b-5ff2-4df1-8a95-b786ec487ca0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7ebd3731-fcdd-4d74-8f37-ddfc03d2ae89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7ee4f379-36e6-4c62-b628-2c217c6e14f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7f066eaa-8f13-42e6-93fc-5bdd2fafa513.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7f19db87-48d0-4423-a361-c331697e8b02.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7f7acd56-3325-4443-a7da-8f47af0a729a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7f908501-48d8-4ea9-afa4-04eb90baffb8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7fccef99-2f26-4f8f-a0da-aae4f4502fc6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/7feeecce-1a55-4405-9f71-76bafb994de5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80455dce-a7bb-4180-8f29-87ccd171fa98.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/805c1096-a96c-4993-935d-8121445b7d40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8060987a-13cb-4544-a309-6653f4db997a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/807e037f-0729-440d-a898-a938092d7058.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/808cdec8-47b6-4b8e-95be-12a129498ebe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80956356-4ea6-4356-a437-b0fa73e7e6d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/809b1ccd-04ab-4e20-a026-594981cee164.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80a78905-abcf-4737-bfbd-416619634a06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80c87a8f-ec39-45c2-8631-8ad9380b9979.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80df8c88-7e2b-4ef8-801f-1acb7712e6ad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80e63175-a800-4ffc-af40-fbd426b5b79e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80e67490-1522-4d22-a725-7d79623dc635.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/80ec529a-94d3-422c-82d6-13809d5d02f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81013ace-64ce-4eef-847b-b99586ef799c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81078e50-6e20-4cc8-b3ae-6827fe40f341.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81367423-4165-4495-8632-a53d984b1a94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/813e6bbe-7698-421a-82f2-a346c71cbe83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/814c2e3a-b7c6-455b-a166-bf7f54778022.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8161692a-a922-4881-8b8e-c44b1e529fe3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/819e1f33-ce6c-48c4-a75f-209ef2e245ad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81aae19a-d61c-40fd-970f-df500dc6d0ef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81c666da-32ca-4b39-953d-68cf252847ca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81d6be25-ff91-4c42-b895-2a3ea9fef5cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81e54fb2-cb70-4c20-94fd-86987d35eed1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81e5c11e-e050-4932-8134-577ce1adfdc0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81e5c995-25a8-45f7-872f-8c73c16a4416.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81f3a567-fc87-46fa-b868-2452e0b9b499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81fa20df-31d9-45cc-9d85-dd181273c4d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/81fd6800-7287-4ef0-8717-57943bee3168.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/823f0fce-d895-4465-b558-b83ee014b6c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/824dcb4c-e91d-46ca-9588-cf5a7d8b2f24.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/825529fd-b67a-46b7-89b2-96bb5cf52f76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/825a2f6b-3e57-4ddc-94ce-cade4366c261.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/825fa90c-b7c3-4591-8c70-f5033b6efa1d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/826957c7-0543-4e5b-89ea-37752e535265.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/826d14a6-6913-431b-9f07-d7b64ea9d48e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8285521f-dfab-4ef4-8a88-dde1cf197c43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/82b77d59-719c-4901-af9e-f9aacb38ef55.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/82e2ad3e-f802-4fef-8267-1dfc71f8cb77.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/82fb2b67-cdab-45e3-9e93-251e551abd01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8309ed90-6391-4fd5-bc55-e3957d90e2d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8315d59d-8040-47e9-9817-b80d6ae70dd4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8347ae1b-ab39-42c3-b126-b005f2ef8068.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/834f3a28-4c91-4ec1-a33c-8d084114cd66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8368b01e-4272-4cc1-977f-be3ca9f3c3af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/836ef196-86af-456c-b2ac-a1f85391d84b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/83762849-58fe-4f46-8af4-741af08cd82f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/841db655-228d-4ccc-8efb-fcbb60b54049.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/84208203-83bd-4690-9e0f-86fc05411a18.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/842357da-4642-416e-a37d-ebe3764b206b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8441fe4b-7bdc-4f4b-9797-92a69ea79d40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/845af5e9-0104-41da-8bd7-21464a22affd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8497373e-9286-4ad7-9659-0cece9a886d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/84a257ab-2190-4bdf-91ea-f77632c83f39.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/84e6a41b-65c5-480e-a591-2544fcaeb60f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/84fcd39f-26fa-4b1a-8b2f-f9e6fa3061ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8506003c-ee4a-4318-bef9-841e980b8315.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8543921d-5cd3-4135-8b9d-365e9531a212.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8562dd50-4b39-4b5c-94df-884e97a2f482.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/856edaaa-0a0b-49d4-8f70-71ecc25c1477.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/856fe98e-5370-4d46-b5d1-8bc406b90a22.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/859081c4-c5ea-4867-af65-fb1387ca1b78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/85ae5af9-347c-495e-8182-22f607694a13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/85c29c72-4bfe-4a15-b46e-7047980cc274.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/85ee6177-9c02-4aa5-9763-2a7cd112f64a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/861af0b2-5737-44c1-b86e-3780fd400d00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86247d00-e214-4bd1-bb67-c38297098d7f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8630160d-c84a-49c1-84ed-a42663e079f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86447c5b-d428-48ab-aef0-c0683826c184.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8667b9f9-013f-461d-b3bd-6d2fddd4865c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86741569-fea8-4655-954b-4c2d718b61c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8683dfdd-7231-4ff3-9f82-dc4149590e83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86af082c-5425-4181-a2a9-59d5ee14abbb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86bd5052-c048-4a38-a582-582af93edec7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86cac03f-124b-42b9-84a0-fc059458bfeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86d1b2be-1a87-4a42-a8c1-0896a6ab1ebd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/86f188c1-97fd-4fe5-b4b4-e6816f56ab6a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/870de64e-552c-4946-978b-7500f8928858.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/875149ca-d1a5-41d9-a556-cc893ba56c2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87814675-e0b1-4633-8eaf-dc1be9576cac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8793d284-828b-49df-9b49-689094a71a11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87c548d5-dd47-432a-beea-eb3b9222faff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87cb2873-d1c0-430e-9289-4e227224ecc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87d4512e-fa17-454c-bc03-c94b2f1c5933.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87d81775-d18f-4ded-ad98-62d358d75abb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87eaf295-c646-4071-8a1f-94e30f03c94a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/87ef8cbd-e3da-4c73-8c17-a433d3874881.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8828357a-60e3-4e04-9a6c-ae350935036c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8828de28-5ca8-4b67-addf-578c8a3e3ce9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/88465e9c-c9a5-45e7-9d21-9b6e3f68643b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8857d1f2-28c7-4472-b86b-49841518a886.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8888ea72-ddec-48ac-b0cf-5191ac1f4907.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8889e311-8a48-4715-a786-993ed08727f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/888a162b-595f-4ec5-9766-f9dad395faa5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8894c03c-a8f0-478a-8c0c-0f2c05515182.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/88bd4073-37c3-42a7-ab43-2bdc31cdcf90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/88c7834c-7ef3-414f-a937-721d9da900ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8902aa9d-08b9-42ca-bbe6-5af94f28006f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89079f28-cb67-47da-aae4-62de1b9d458e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/891ecfb4-3f1d-4284-8a9d-b1eb6d54b3e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/891f26c2-a2dc-4d83-9c40-c181bd0cf03e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89285df5-0cda-477f-b728-cc0df13a2b94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89322ae2-63c5-4d86-b85d-43c8f31c7663.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8947a986-0eb6-455d-a0c2-bf591386c7a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/895db6df-444a-4c05-a108-c75d4fefb13d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/897904a0-8908-4fb4-9d57-0a5d351a2e1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89b08627-572e-4de3-a6ad-c06763c7187f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89b268f6-4b7c-496d-9105-0179d9cfd5cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/89c6d18e-2520-4f45-9491-2e06df7a111e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a034075-2434-46eb-956c-de96bc9f0a1c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a12d7c8-d8b9-43bf-85bf-70f63adae291.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a1f9b9b-e921-4151-99fb-3be622d78dc8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a20a68b-0efe-4a8c-99b3-7392fac45bfa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a2c30e2-8a0f-405c-a845-be7647db431b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a5afee5-57d3-4754-b5e4-b7fc05a2e371.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a61eb2f-1855-443a-8721-eeedeac3539e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a8655d0-94a8-44e8-90e8-f314837da334.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8a8e1f4e-9b48-486b-bee9-82b630780ca7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ab3499e-6282-48b0-a762-148c61832653.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8add3e54-7cbb-44ea-9b84-0d9f4f032782.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8aebd491-cc9b-48e0-9db5-ff2471f7f164.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8aede6db-a131-4600-8d56-416d816e8bd0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8b0d8d09-4055-4a8d-a9d7-1866d9253592.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8b248485-df7a-4efd-bdd1-b3f1cafd92bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8b4fa802-3aa8-4302-a18a-ddb8df771d1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8b6ec273-ba28-44bc-81af-8bd15350549e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8baf539d-65e5-44d8-a8ec-c1753aa289dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8bb3d6ae-a2e2-4364-a353-bfb9e5c876a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8bc284bd-2e13-4889-819a-dea81e2140a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8bc7e39a-cb68-4da4-97e9-a180cccfc1c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8bfe9437-ba1f-4683-817e-037ed595d10d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c062917-7faa-47ee-a1e9-58dc87f09283.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c23583e-9138-4d37-872e-db7a8bca85ee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c2df815-1faa-4972-87e1-d3fd3bfc9d09.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c37908d-bfa6-4003-93aa-0d57d0e95a3e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c3a6edc-708b-4911-8232-a77a1ba965be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c480ce8-acb2-40bf-9281-de37ee5db87e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8c837b6f-1422-49a8-913d-67481f6f21f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ca79c0f-fe24-4196-86a1-c4014fd5639c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ccf579e-d069-48df-ae93-fa669dbf02cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8cd92c8c-6378-4940-912b-0ae70583521e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8cdd4a94-8214-49b1-9be4-3cac2b8f7dc8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8d04b6b4-b2ae-4d83-b250-3251b02c6fd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8d243eb3-9205-4b50-a653-c53c0479adb6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8d407704-0b48-4dac-b6c6-747af7c9a130.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8d82b6cb-1828-483b-a09e-74cc03d483e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ddc515a-8dab-4a37-ac0b-5a959a23626c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e2097aa-4424-498e-9176-b3ac526c81db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e260166-5c34-4450-aa0c-054e224a265b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e3faeb2-f38f-44d3-9c37-f7471de50c69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e47a8f1-e72a-4fd3-8ec2-d2cc26c49a30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e5b42ff-d5a0-40f8-88c5-25f0464464d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e631974-3ff4-4342-a629-6e90852018c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e696b51-47f5-44eb-83be-ba4bf68e3570.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8e9544b5-77bb-4204-9220-537d219df1c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8eab5c07-9306-4202-91fb-3eff46b80620.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8eb71372-f9bc-4787-931f-0166c46d6651.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ebd66ae-d314-4595-b57f-62019a6610a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ecf49d9-97a1-4a05-a48f-29f102bedeb3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ed97981-581b-4787-bda0-10856b9ff86d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8edb1e15-1f80-4432-b012-6cd4383b0742.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8efef66e-1ebc-4d44-b316-5e1536d196b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f1ad1e6-ed79-4056-ab53-58101323fdef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f370c8d-3cf6-4612-9bb0-3cc9143e01c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f3757d6-f764-4aa9-a2da-2d8ffc0ac2ef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f5cc296-f020-4d06-b9b6-1d19b180df37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f616a60-ee38-4ad4-a667-23dc795fd08c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f7541c4-57d1-4d1d-accb-1dade7a77712.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8f86a80a-69f2-4d96-8d67-a25101b7f7e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8fbcdc5c-73fe-4af1-be8d-e9a54ec44421.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8fd0bf88-0450-4c34-951b-c71513a9769d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8fd943f2-df4c-43e0-b6fe-6233578c6b5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8fe2f5da-bf26-4273-b8f5-d3bc99f05872.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/8ff97e17-eed8-4498-9a4c-4cf76d7c794c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9002e88d-287d-48b8-8975-4bb9ff3ae541.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90205bbb-917d-4493-ab55-b19397a48dac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90344fd2-fce2-4dbc-8d07-c5fd0e867a1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90512fae-0b56-4b33-a318-fc9156bc4c91.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9055fc04-6a25-4f37-95e4-693436b0ac3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9078a5a0-4ac8-4743-8320-2336f1daa7ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9080b3f0-fce4-4942-bc38-8f016368656c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90a8511a-8400-4d9e-9239-cdf7fc08b2df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90ab50ac-9b2c-44f2-b006-f2e9bb61d2db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90bebc78-52f6-443c-aa16-af04152bd363.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90f3e4ec-21de-4424-ab8b-d443a3f31c71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90f81a61-6704-44ae-9a20-4dda3cea0f81.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90f969aa-7624-404e-91d1-fdc7ed35173c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/90fbf985-bd22-4ff6-a6b6-568e9803b1ef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91053a51-ab88-40c9-8fee-f6d898a435b4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/910a7fda-4a0d-4369-82ef-719894e26b1a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91131194-7933-4e13-9251-d0f85a7456da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9116224f-3b3c-421b-b76d-997f398385e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/911d8714-6713-48a8-bd61-42164c17a499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91221919-e9ee-41cd-b6f9-1639d64bb8f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/913f4172-4594-4942-864b-4b3d5ff446bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9151983b-f166-4e82-a9a4-472ffc4b68b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/916c10b9-7547-4d25-9214-e29cb701d4ff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9170a200-f388-46cb-bcf2-59018ffded31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/917feb22-21b0-44c6-a359-50277c3837a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91882d66-658c-41f1-a991-351a04976417.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/919d5882-8da0-4765-aefa-0a44d1d6dff7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91b85673-be4c-470d-b13a-871599fbae5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/91f9731d-e8aa-4043-9bbc-49a731e206a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/92103a9e-255b-4a08-b410-bdf26a408d3f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9218c53b-cbc4-4566-a950-251b2f2095f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9239bc4d-1345-44d7-a485-cf2e30dc1fe8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/923bedf8-9db4-4b5f-aee8-fcacfdf53363.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/926229d3-2446-4de8-827e-c3ac6a16d6cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9270c500-7696-464f-b09f-0bdb4686a6bd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/92a853f7-3860-42b7-9e31-69ae0822013f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/92ab9581-b3dc-496e-9441-839e7ce207f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/92efdc9d-b6f0-43d0-8ab8-ede0a7b0414d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/92f27a6f-e836-4b11-b8d4-6a22a4987596.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9316b64b-a367-4dae-bdab-8e9edb9327a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/933dc857-b8c2-470d-ae6c-03d18b4d0207.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/934f7dba-b0b7-448c-a71e-4c4c0e56dcc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93a1ba76-cc9f-4bf3-b5d6-b49fa898a8ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93af6756-1e23-4ee1-9eca-d7538da0a436.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93c2b53f-136b-40d7-8214-e73d16d34939.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93c97900-c35b-4094-a94e-1601d21c7424.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93ccfdb3-4fe2-4e9a-8883-fcff1ecceba9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93de2fb3-2390-4566-a8d4-13cc5316ba44.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93e5531f-8885-46b9-9199-336b92165190.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/93fba3aa-0c5f-4836-87dd-e667dadd5d06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9410c242-8321-4841-b05c-473ea39d30bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/941b3515-5aad-4ae0-aefd-10a6e16df4e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/942bbac4-713b-4726-b184-3790fddf9926.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9437a537-d998-45ad-b439-fc5d11b3bd99.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/94683288-52bd-4031-b8f9-8a23eeb8cf46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/946e45cf-aab3-4a21-98d1-ba659e6ec177.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9488520a-da5c-49a7-88bb-c22056f33a8b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9490ac39-6f0f-46de-baea-33997f01d05b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/94a5121f-c9d2-46e6-878e-94407917f9b7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/94a77d36-5893-46cb-a498-981c8cb65d03.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/94b22aab-f0f0-44ba-870a-8de895a5ba78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/94fd2291-2c4a-4edb-9de4-b8a83d885333.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/95070291-832f-48cd-8645-fd00c173ac3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/95216d5e-44fd-4c46-a970-fd7af9398838.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9575fa8a-be55-4965-9d26-65eeac46958d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9584d012-2f78-4d53-92c3-9198de3b73ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/959de485-7dc8-4f10-bb12-c812bf827413.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/95ae001e-9c6b-48f1-b7ba-358bafc7b26d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/95be64dc-e95b-4585-8079-46c1463668bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/95ebfda3-427f-4a5a-90b2-74213cf48235.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/964ecf20-76ec-4dbb-ad9e-449db209eb5f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/965e520c-836a-4e89-8325-62ed13dcd0ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9661d872-eaed-4537-ade3-dcaf899063ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/966d8f81-d2ee-4dcd-bc52-e7f2f6d9724d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/968d2d0e-f085-4df1-ab38-3bba78c51f34.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/96980ee5-6d70-424d-9141-88387ebe2397.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/96a2b54f-4e32-4684-9fef-8db7962f0eec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/96b64ca4-ea7f-48e7-8bad-82e0c05faf46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/96deddfa-77a6-4fcb-bd42-3a529cd58562.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/96f86301-9eee-4426-83a8-92e3e0dff8f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97126d22-f3a3-4566-894e-944526b2ad88.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/972ed3af-c0f4-4829-9c26-adf6ff9889da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97824d55-3bd8-4c73-ac41-3543b5891b04.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9797d84a-1b72-44fc-87d3-191e774069d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97ac092d-38d5-4032-9955-f6025d166ddc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97ac9884-8bb0-4516-a850-5744b91173fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97b68dc0-cea2-4fa7-b171-61bc85dd0ab6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97bee671-474e-49bf-ab85-6fd7e91e709b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97e45705-4d94-4047-9007-fd7c4911547d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/97ffcefb-513c-4146-845e-2a321676292b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9834e17e-7654-46b5-ba73-c1f31fa69a3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/984de1d8-ab3f-4b44-9313-795b32c78f71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/98704f9f-98c5-4e63-b5df-5d47fe79b16a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9878f364-c695-4f38-9464-588ebcdb322a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/988b328c-ddf6-4c52-9681-467e92b11989.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/98ab18b1-1449-4aca-bcf9-19e9cafb59d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/98dd4f14-a3d8-4fac-b13e-01fcaca8d9fd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/990a59e8-7860-4b32-9e70-b4535e10d2f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9931d758-d493-4bd2-90fd-222fc0dc306d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/99627bee-6595-48ec-9959-3ecf23cf1609.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/997f3cab-0782-4c99-be6c-a1b807af2173.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9981ec9a-3b00-4fab-902c-0fd37bb48571.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/998e602c-577c-4f2e-802e-da6323d46e90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/99ab2e1f-1b97-4e2b-9bde-243305d2e7e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/99c1a4c6-3c53-409c-8dd6-a3cdced9db63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/99e746ea-5144-4263-8a0a-10f47db986da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9a2dfb89-11b7-4485-b5ba-82c5ce168181.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9a648e24-ec5d-41bd-aa17-23d8628d8c01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9a8868ec-1603-4f82-afa1-949ea27bcfc7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9a9599ea-4f0b-482b-94d1-f7a93574e280.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9aaa61d3-8ca8-4706-94e5-40777ef2dd7c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9aad3865-abcb-4d26-9cf3-00842d33b9e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9afee447-c517-4f62-8d75-05ad5a70bb92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9b31f83a-1f0c-455a-a0e9-0a0b1146a477.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9b5e6151-627b-4a52-a054-cf69075dde36.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9bc03469-3937-4864-a0d3-7fed7c86f1c3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9be259a5-d2a6-4b95-aece-3d51889e2551.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c2c9618-db51-421a-b139-bb01ad96f379.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c44dcd9-bc6a-4af5-be49-6758f4079d00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c60e61f-bbae-4875-b51d-6054f17248d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c6f0bd5-bd4e-499c-beec-1e1a18705387.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c7aecb5-e436-40f6-8916-d64bd8c53dac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9c88e0da-2808-4350-8419-4c2b461904f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9cba9a8e-d592-4486-86e3-ad71ab6b651b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9cbc7240-ac9d-4c4d-8fd1-8769fefe7cbf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9cc492cb-ca90-4eee-afad-dc50658251b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ce86356-833c-4dc7-b410-3652cbe2f23c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9d26db8e-c802-4ccc-adbb-1c658d84bee7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9d377cc0-8af4-4891-a51c-89a3df803f79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9d3a917a-ad94-4b61-a7a8-106d4c164755.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9d4a7691-63c3-4cac-8ddf-9c33a9197600.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9d543f3d-a984-444d-99d0-342f712ad312.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9db2ca91-68e2-41ce-830c-f63c7031f066.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9dd350d6-07ea-4569-95ec-c777eb006808.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9de452ed-9086-48cf-ad4c-d7ab92877c82.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9e156fc7-a124-4031-800f-f699a2d77f82.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9e23df1b-d2cd-4890-a19f-5cba398958fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9e4323b2-d1e3-49b9-9405-b6a127e86b51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9e4f6bef-5110-402f-ae93-ed0da52e04d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9e5d6379-33e9-408f-b840-15aa786e6e3c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9eb47456-6719-4c30-a9bb-8b1b871ca11c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9eb83067-96a5-490e-bab0-c59847b0127c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ebf6db6-b429-40dc-b0e6-c7a75bea3d9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ec17728-2df3-40ff-a7b4-597dd7031c45.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ec5f7ed-d370-4e0b-bde9-1ed8b88bc21a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ec8d91e-3ef8-407d-9064-570b1c3c6890.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9eea69fc-1468-4fe2-b650-b7767d7006e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9f344eb1-8f1a-4030-ba81-f0c2616ed8b4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9f34ebc4-0f31-41be-86e9-59a5b1957a11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9f47d022-0e74-433d-ba19-923bed3a98f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9f5e6c2c-0ed8-4d62-a043-bdb1ce691ec3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9fa0c2b8-6c14-46e8-a941-f73665391cf6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9fbef629-a900-4162-bc61-363c20d5595c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9fd2e9e2-8b11-47fb-a080-64c1291d5159.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/9ffc6537-e565-48b4-819d-e78b70d58188.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a0121826-6100-475e-a6e4-e45db681f13c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a016445b-242a-4d4b-9a33-50d37d0fe53c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a06ca9b5-cb31-4f08-99fc-e33c8475e0d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a07d156a-a1f6-4a64-96a7-d94772f8cda2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a092d2ef-4e6d-4343-80d5-675a2e824fb0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a09cb8ba-7a1f-45c3-8e32-5097aef8adf5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a0da8a3d-8e4e-427f-aa2b-b2c8d2df5219.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a0dc147a-8986-4e3a-b22d-9d50576f7f74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a0e50aa9-412b-4f25-9719-cab2250a25b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a0e56976-9bef-4ca7-a33f-5f37973824d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a11d2814-5cdc-410a-8543-2179a38efbdc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a12ead85-f228-47e4-9603-601574a06207.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a13d88e3-f28e-4a5e-bef0-a02c7aa7dbf0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a152cfcb-b774-433e-a950-9b3dae6d8294.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a164595b-8952-45b0-8d4c-e56b9b1fe224.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a175eeff-6c89-406e-ad27-41ca6e0eb903.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a18436af-437f-4a5e-a760-9aa6d3bbf5cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a1b6b8ee-7770-48eb-ae2a-a36edf4a5321.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a1d545d6-b24a-444c-8b68-50d3d1204b81.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a1f20189-90ba-4c05-8269-64117e3aefac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a1fb8e7d-194d-4611-9bb4-ffc5741fbf9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a22f9704-6b55-4a7f-a4c3-60dd462a3cf3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a23234ed-a2c0-4562-b05a-605d6c7f94f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a271f9e7-f497-411e-8b17-395fd16cc560.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2724bf9-0830-4377-9bd6-6149d9b43946.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a28b524f-ff48-4db6-a3d5-e532f98f9080.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a28d0ba7-ff81-4135-8e2f-c1c23ecdd023.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a29a7ac2-acc2-423e-8b9e-e0f2f1958d7c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2a49fa5-8edc-4356-8659-7dbc0c7eb671.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2c9644d-f263-4b7e-b1df-2018debca6f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2d133f4-7bbc-4d3c-8e2b-137f4111a8bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2f3c3ab-5e64-40a4-8b7c-eee4557f8722.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a2f55225-ea90-495c-9431-5dbd56540e4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a319e40c-ad5f-4754-91c6-bab115b7a738.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a32d5c47-1bd9-4788-b8e9-c3145d06b13b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a34d1336-4946-4ba9-b707-fbb4fc97e207.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a35380e1-5acb-4914-b611-9475603a72fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a3637f44-f9c9-4cc8-8793-5c66edf10370.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a393b4d4-4bd3-4558-bb1e-a34d13307b44.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a39e1fc6-c3bf-46d9-ae6a-0248001c71e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a3eec76e-8a85-4d88-9220-fe0ad2590980.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a4102d02-3b65-441c-969a-b930b46187a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a42b4fbe-b3dc-469f-bfef-b55bdd4e3968.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a42df817-2a5c-47e2-8b57-e08a1e710635.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a4687834-a6c5-49ab-81df-00bc9611cdb5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a482ccd4-4913-4f0d-8239-cc6dcb48404f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a494a819-b278-4fec-bd03-8d3d7c204a52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a495b448-a682-4ce5-90e6-e45c448671ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a4c9784a-a4d5-45cb-890e-c91df1d68208.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a4e640d9-ad23-44e0-9c0e-ac3b969378cf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a4f2930a-ed68-4d8b-bfcf-baa757045f26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a50c774a-0939-476b-9c09-05f1739ae0af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a52cd566-4056-4667-9f46-1db191d540f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5357017-6ad5-4e39-a5ee-63dc262fd899.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a545e155-d6d6-4503-904b-60384598518a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a55a01d1-de36-43c4-b6fb-a9bb3d9045fd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5610799-6167-4011-947d-c09ad38392ae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5701240-b375-40e3-ba09-56db3f1921d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a57177ad-77b1-4b86-80b9-6392aafa2831.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a59b5bf3-13af-412c-97cd-26ec45d6c3db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5be3404-0dc5-46b2-a369-a83a4c1b8367.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5beb84e-2590-4cf0-87b0-92cff9596168.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5d19590-8164-4ff8-8adb-d9c81618410b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5df9616-59e4-4811-9aa4-fa059001eef3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5e0534b-b08b-467c-a068-fcdbdafb0ebe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5e8150b-64e9-439a-b408-c5f0954fcbad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5ecf3dc-b1c5-44f2-8310-c4ec4b06b677.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a5ed4b11-1e6a-4d03-a07d-e7f8eb5aea92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a620c723-fb77-462d-bfc2-95009fa4f149.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a62ec71d-9620-4c01-a04e-680b401148a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a644487c-74bf-46c9-91aa-50edc2d0f9a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a65bf103-6911-4050-a3cf-e2b28a83b3d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a65f8929-95d2-4624-a63d-db0cc3471a22.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a66fe17c-3bff-4a53-8212-e4145d350a36.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a689bc01-ba0d-43b8-ae3e-5dbffe7df3fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a6a7cf7f-a540-4c3a-b787-eab6bd0aa843.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a6b51fbf-7408-4701-befe-4ae20fd0cfdf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a6c4c8a7-13e9-4295-b3b0-a4eb15f0cbfa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a6cffc5c-097e-42d0-b74c-3f54a2529040.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a6d5a5fd-f174-42cb-8b67-5cda1315fe2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a704c590-060a-4fd8-9331-e47b22e39d52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7248fab-24c0-4ad1-a146-abb72ba40c53.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a72743c4-2bb2-4607-8cab-73ca06870eb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7296ed9-a2ed-4ac4-bd05-ef9b82580b1f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7311ce2-137c-4f6a-90a8-e41b32d3b75a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a76653ac-844e-4b45-8bc1-5704b6830d46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a76afaa6-6382-4a2e-bb95-25740324f7c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a771a4f7-3d48-4d70-821f-52c2892354f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7750389-f9da-4f37-b6b7-9a2893a1115b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7aef4d5-24a1-478e-8fa4-f8e88d656212.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7b31fb4-0129-4fa4-9251-92366d70cfb8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7c6d58e-228d-4d05-be19-dcd2827f80d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7c904ae-ccfe-4480-86d7-605a2595a148.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7c9d691-6dcc-42f4-82d4-4efe324c63bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a7e5ffde-9f26-43fc-ae9e-6bbb50e6a8b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a805ce64-68aa-47e0-95f9-52014738dc45.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8212497-a221-4d36-8abb-24e11c02968b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a850835f-204b-4229-a7ed-5ccadcf1690a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8595f6f-3a0a-4710-acfa-d379d733e145.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8608fdf-aaad-4b1c-940b-acd4f329a2b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a865f654-12c5-4680-ad60-81ae451c011b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a86e6153-41fe-406f-8729-be8259a6b72a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8972c36-fc18-4e87-a7ed-560ad038e319.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8980501-ef70-4d5e-b14d-6bc5beb4c019.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8aa8182-8af1-476a-a4e4-54ed0f214a23.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8b89a84-be0c-4a85-885c-9c2b8d04e1a8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8c53e12-3a76-4a60-9ab6-70745e1cd049.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8c64c33-a126-459a-bb8d-a29c0a5af61b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a8d7d2d2-cfd3-48e9-b28b-42efafd0c60b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a9116365-9959-48e7-b686-9c4c517c56d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a938c95f-7f13-4d36-b1a9-eac3cdf410a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a957190c-a943-4b07-bfc3-301276fdd418.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a95797df-c40b-4e9c-b6ff-4e4f3d401e40.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a962b2e0-c822-486f-b33a-50413ce9a233.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a98d6f3c-52be-4c00-a3b3-44d685736b88.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a9ab24cf-7984-48fa-8740-43a410cec8de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a9b893a2-9598-4b15-911f-8b4c71afad77.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a9bbcc1f-9fed-4c8e-a205-661158c3dbf1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/a9f5752d-1528-4466-a0a3-95e24a62fa27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa19f60d-bfb6-4079-a0bd-6b9f0a776a5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa34dadb-813f-49aa-8706-0ee37f199ef3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa5148b4-3fa5-46dc-8116-823e49509abf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa761afb-8002-48f6-8d9a-c93fcc36caca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa8abd3a-4ecc-4aca-aa2c-11058d4eb7a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa8b42f0-99a2-4ae0-9498-8198052bf396.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aa977d85-3526-4c9b-bf41-ce0a1c6ec547.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aab27b3e-b9a7-40d6-a111-49d256ccf4a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aab894dd-4c7e-4113-bde9-3851fde04302.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aabd271c-43f7-418a-88bb-ad662fa8338d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aad57129-7682-469e-9e37-a5596f074a2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aaf97045-d091-4e54-bbd8-a2d4be808c13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab1ae78a-c283-4363-b88b-39d6977ea9e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab33e663-0d24-4b86-bc82-72bafe95420f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab403f3e-61bd-41d6-9d1f-3e5d6a730e52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab4ec647-13c9-42ce-900c-cb8335811eda.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab759c2e-9d6a-4175-af0e-987bc02b6558.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab89a97a-c4b4-4b9a-8d1f-981e5773b94c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab8be325-95f4-4d47-bae7-d2f07796f8d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ab8e1501-3589-477a-a765-8039bb6cc1eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/abba84eb-996b-4773-96e0-10fe90174ffa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/abd44140-1e5f-4ce8-8280-09064a7f9875.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/abe8dee2-88ba-40bd-abae-21da20b8ca26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/abfe2a36-e854-43a2-932e-a97f35917698.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac3757b2-f003-4cc0-9ddc-82c15207635a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac407fe4-54e6-4d8b-80e9-4681a1b14ac5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac4bb0b6-3feb-42be-b132-8f3a6aef032d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac4f291f-82d8-44c8-901d-c27a4e4f5a84.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac566643-1c64-41a8-b2a8-bb52c8f0cbe2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac5c2871-5cd8-4a2c-843b-7ce2d7c53400.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ac9f33c7-a5ca-465d-93b2-5714267c1178.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aca5f798-a6dd-4bae-989f-2cd12213d86a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/acaae198-32c1-431f-ba21-55446c5cc78e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ace763d0-151c-4447-8b81-f052ad372e3e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/acf6b8b2-586d-405f-aeed-d1ca7a5b5c58.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/acffc725-13c8-4bf1-8106-d9ea33dfcaee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ad34cfb9-c133-483d-934d-23350d8ec782.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ad8f3fe0-5ff0-4339-9344-0e647394da63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ad97bbee-3f33-422e-93b5-5b690205e35b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ad9a6f21-3838-4d61-92ae-ec062d9c8144.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/adb05419-22e8-4413-beaa-e5ca733ca03e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/adcb38ef-ff12-4c91-8e50-fee73bbdc9c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/add72e3e-c16f-43ec-9d0b-80af83b007cf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae06a6ff-4f2b-45af-a02c-823678850257.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae12efce-4bd2-421d-90f1-0a9f20c20707.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae2337f5-04d0-41b2-bcff-68fb8fe9ee66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae4be312-a906-4e61-bb7a-623be861bb1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae6db195-75ee-4b79-8b0b-8253b5cc188d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae797c16-589e-43f5-9827-7d963bd17a6a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae7d1a89-a9a9-47cf-99bc-4343d53d8c6c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae7de933-66e5-49e1-8e06-00a40669c69c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ae85e8bb-946f-4c36-a9ca-fd831d166182.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aeb4f092-a733-4133-94da-32ed06158220.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aebd240f-ac7a-4e12-ad5e-45c393995aad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aece3171-0d26-4e2c-a6a7-4850cd875ada.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aede84d3-c261-4ae8-b401-c12ea994a1d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aeeec053-e817-4e74-b5ca-5aaf549e38e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af09ed18-1b24-4576-9693-56a7b85133e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af13cd7f-c79f-487a-ab98-a1b009f8bcbd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af1a50a5-63cf-4cf7-87ad-80960a33cc4e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af28d8db-36c4-4238-999f-1bf5dee77462.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af36f4ff-2e8c-49d8-b370-700de322aa92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af58eb58-13a6-4363-93f4-a496eaa1cea6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af5971c0-6b04-478d-bcd7-4b9f21af82ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af5eef1d-65ba-41b0-ac2b-1d9545a74802.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/af6ed493-c12d-4586-877d-48acf085273f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/afaccdb6-de91-40d3-9709-e100fb17aeb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/afcac19e-a18b-4e83-adf9-ec5b64592ce6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/afe07bb6-734c-4a49-8b7d-5953a5896477.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/afe3d2aa-ad67-46ec-abde-cc7213a6d43d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/aff04b8d-6b63-431c-8cd5-3dd1590a516a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b00690f4-e124-44e1-84ab-485f88a6c27d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b026764e-0552-4f87-a6ca-7bd822133745.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b0368d73-e955-4894-b9d7-0123c23c87d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b044c5aa-ce50-497f-9741-0f807f9e46ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b064aa69-0a6f-4ef2-b640-b8e715cf26e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b0855e7b-05a4-4d03-98dd-029e61011379.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b095df6f-26f6-4ff1-baea-c1a4cda84fd1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b0b51348-a1da-498c-b1fa-73005fa3296c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b125cce3-5422-4e77-947b-f131e22f221f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b12ef104-b15f-4e2b-bad5-6a4ebe27c867.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b16dfcf5-b060-4ffe-9cb4-960933a6be07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b178dbdd-430a-44e0-be1e-e026a3d7a08e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b18f6aab-1d20-4585-a9fe-0de4dda6e1a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b19cd7f1-6968-4eaa-b261-325096d33763.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b19d726f-8ab1-44e6-98b4-08d50bb34b14.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1b73dda-c1a9-42d3-a922-e475f3551043.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1b87a8a-1ce4-44e7-b6cf-e05a4ccc8a0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1c16f2e-c198-42af-b46d-17a6bef970e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1d98c7e-ae93-4a44-9771-8956ed20bc7e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1dbd913-ce2b-41a9-8851-2e73e8b644b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1f50883-2034-413b-b7c7-0f6dc093aec5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1f5b9a4-14f1-49ac-b30a-eb05d376a839.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b1f5d338-5749-4724-aec0-4f5bc636838a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b20498c5-f345-48c4-a2fb-5e942b6e6014.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b21c7e83-603d-48e4-8f95-6cd5fe450a5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b2220f93-713f-486d-9162-d15799babbf4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b246bc2d-608e-48fc-b434-051517cbc79d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b25eccb4-c0f9-4495-8926-218c735dd2d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b2879896-9483-496a-8b64-b4efda32b422.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b2925fb9-81b1-448f-9f06-04c7760d64f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b2c4c592-6ec9-4be0-9a90-c9ad9da5c4e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b3294079-35c9-4b22-a0a8-1932b0c01d6f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b329ebad-69ec-488c-8d66-9d59a92ed092.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b334d061-e77d-4d3e-8c10-af68ec56b772.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b350c583-035e-4bde-b5ff-3e8759d30d9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b356716e-1496-40d4-bc6b-6687b8fd4cb8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b35b3d22-f38f-49a2-88b1-e4cefc373461.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b388fef0-3110-4c63-b869-17ef8d0eb9c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b3bea2d2-134e-4250-9a17-222a2e389401.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b3e7b1e8-205f-45b2-ab7f-a4d33b68d8ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b3f9d099-17f6-49cc-94ca-fe305e45a076.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b4317cd8-1270-4b9e-939c-ee60cbc6f01c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b43188a9-2529-4d1f-b880-8158bf0a606c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b47412bb-b3e0-4401-bcb1-42d17734fe74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b47ef0c5-7690-48c6-8d68-7437f78c8e5c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b4b5bec1-2aa9-4198-ad34-6bf10cad3376.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b4b8b9de-441f-4232-8167-51c47c0c8b5a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b4dd584c-7875-46b0-a8fe-83c2defb7c5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b518d0fd-049b-443d-af6e-642154a06d3b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b52307c5-07b6-43a0-8322-f64ef2ce9814.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b52f9e2a-3efa-48ba-a5f7-380b4061325b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b545ef2d-5f02-43c8-91da-5b63dfbb7a27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b548d5fb-3b20-4474-8df7-5989e1d84f1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b55ac2d1-9024-4647-bce8-8a552662823c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5924bec-3aa0-4b95-8060-b660ccfdefef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b59feec5-5745-45ab-aa2a-6401873abbc1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5aae249-c3f3-4464-8fd7-86ad5443b8bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5ac7e93-bb06-4f4a-a883-27335b66a54c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5aff2c5-b269-4687-8904-ebfea52bdf8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5e2cfe3-0521-46ac-8dde-2c92e23341f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5e50cbb-f7d2-4b01-8325-cfa006f3b4fd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b5ee850c-5fd7-4b01-8320-88f975cc43a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b627d667-d7d2-465a-a066-f2cb9c7381ad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b63331cf-7034-49d1-9507-a2eb9f11d652.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6396140-822c-4359-99e1-057d9db328ab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6514ca9-6ded-46c4-b660-31e733a12799.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b675ee31-dd1e-43c9-b413-24dd27c338f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6787dfe-5eb0-4eda-8640-861660ffd0b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b67fec34-a2cb-41d4-8836-e22d9919dd3b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b680e8db-3704-4851-9bac-dcf1a7609954.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b687138c-b5ce-4141-bb44-557b38197663.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6a21336-f525-4725-b0ef-f7798b503b62.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6c6a671-d7a1-4599-9ac1-d06a81911a6a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6d34c8f-d932-43fb-b2d7-21910f0b4588.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6e9cf4b-3a28-477e-a39c-70f945a5a806.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b6fff448-6dfc-4152-8b9b-814b28e15f4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b70c29a7-2dee-48a9-918f-c77f80ff6e0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b7276fc7-4868-4b0e-b5c1-ba99937f58da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b7457d94-ba61-4a67-827f-75abebf7efe6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b80e5c82-2976-43d9-a83c-3a9d153b8a72.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8387c9b-6bbb-433d-9959-0c971a7f11df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b856e877-9ff0-426a-8ccb-9391c0cbfb49.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b85a1210-786a-4bff-95a3-3dd7e555069b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8633a6d-c93e-4610-bce0-118da57d6bce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8831ac5-bd8c-43aa-b575-942d110e2406.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b89e5fdb-3981-4a00-b0ef-736faecd2b79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8bf0871-9f95-4a65-b527-380c49010497.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8c923c8-37c3-4246-afeb-9ed925dbeffc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8d4ad65-5dbc-4c45-a92b-30e95946507f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b8df246e-b1b7-4ce9-8b03-4ee0932944e9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b90e2898-0c51-49f4-80fe-02df0f1703b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9210dc6-1e81-4d41-866f-43a406aa5680.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b92c8c52-846d-4a69-8250-e3f6aff9308b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9334ae0-4011-4ce8-86ff-f8e62d19e12b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b95c3b8c-9495-4c68-9153-96c22f2992cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b95febc6-ca61-488b-a7f2-548ac8a969c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9759c3f-8f23-4070-9dca-72c4525e4b3f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b98aef07-ae47-42e8-85e7-87ac98e2b485.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9940717-360b-4f72-b90d-bae94d82c2db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9bf17de-4311-4720-bc66-56fcc7a00fe3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9cf471d-2a18-4e74-b396-83f8d9966b4f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9e1d0a1-d182-4606-a1c4-2a8b5503b1e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/b9e9aa9f-5602-4371-8285-c128b95c77fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ba0d617a-97e9-40e7-860b-14373c457427.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ba6f5ca0-81f9-4d15-8560-d10f1ee1e7f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ba8f912c-1e24-45fd-92cc-e42eb9756282.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/baa20e5a-d80e-49ed-aa54-d3051b159ff1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bac6aa8b-069a-4fc5-b4a9-fbd8f9b865fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bad5bc02-b513-41ce-a684-05f3d562ae76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb018b36-c3ee-42b8-85d8-66f1b6a82d73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb4eb59e-11c7-44bb-9347-30f5f7ebafc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb54a799-2354-4f83-8c51-62bc4fb73919.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb5a9d3f-b312-41f3-985a-579049378997.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb62d96c-1e92-46bd-83f6-06b2f09a477d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb756a32-7d38-4916-90ef-0402964c978d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bb8b56c2-e42a-4d72-a7cd-38209fd97054.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bba5dc7d-3c2a-41e0-a4a8-91ae95b82182.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bbc44c89-1c07-493f-81f0-9e245b88eb0b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc09939f-9ced-4d15-9380-2c1f183045d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc34a88d-80fe-4a4e-b77a-235e9b6ca4e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc3dd539-8e1b-478c-a9ab-877c8fac11c5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc46a864-64c2-45e6-958d-c4976db9337b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc6da01e-ea56-4200-8455-0451bfa08fb9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bc9e23f0-e23d-49c0-bb66-07885a56348e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bcb55196-fddb-4807-9603-edf08257d5e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bcc99b62-7623-4377-a1ba-2dc808a915c5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bcdf04b6-c95a-4331-a6a9-9a65cbb1fc63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bce1d5c7-059b-42ee-a01a-13e0f1a315a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bcf3ea13-b40c-4fc4-a501-162756fd1acc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bcf3f51d-0054-4bec-8bf2-6e5c2f441b90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd0d5438-ca23-4f2b-bbd3-9daf16dc4752.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd1fca25-aba5-4fbe-9514-9f4fe73d3f00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd3c23a4-d6b4-4e7e-b71f-a3ae9aab490d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd4df421-7775-42ce-b186-b738f91a0999.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd56a69a-6f37-4a46-bc9c-444fe4b1a3de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd5ed50d-7dd6-445a-b4b0-e1294459c231.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd625222-0b05-45ee-a246-8646be3f0d86.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bd9052c6-96e2-4f3b-8738-0411f5ef4245.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bdb4021c-f164-4a1e-ad31-ad004322e15d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bdc843e5-fddf-4bdf-b2d9-395bb183499c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bdd3f163-2efe-422d-b966-0286e7810352.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be1d3b1f-1942-4b15-9db5-7aa7c8697a8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be361486-87f4-4871-9b36-73bd96b0a09d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be68b3bc-6bc3-4127-b885-4a70a6566f33.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be693f55-352c-4ea5-a6ce-e2aca8b98d90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be6bb8dc-22cf-473e-a4eb-007f4ffbf3d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be6ce4b8-1d69-460d-8ef5-eefcda84d5ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/be841c4d-e957-4c68-bd64-dc64d0b9e1c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/beaa4fae-dc12-4c01-b5d5-3a0c28f7e591.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bebdb07f-5625-439a-b028-09166d0b32ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bedc146e-5d61-4ded-a140-65a9eb32fab5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bee906ef-6dc9-42f6-9b78-6f1541ad560b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bef061c5-795e-4865-b0c0-10433208226d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bf0869e6-e0ab-432c-91c5-4f0a02e195f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bf1bf934-99f0-4891-b6be-9b3a7989be0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bf3269a3-7506-4608-bd66-ba32effbb707.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bf419340-1180-4f07-b2d1-f75f804c2736.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bf587536-6dd1-472e-bb4b-c461d0978c90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bfd10648-d815-48a7-a97b-fb0935163c68.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bfda18fa-7604-4a81-908e-407df50df87a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bff0b8bc-3705-4a31-beff-4d13213a2cc0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/bff6b7d3-cffd-4d38-98f7-86507d12bd4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c002b4e0-0ba6-4c57-bc64-43fae10622d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0287097-e958-4a7f-8816-65f76d4260a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0601b86-c17f-41fc-b892-baf845c02413.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0700267-0f7f-49db-a450-f061db02ed98.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c07766c3-2d97-4684-8af4-ab0dd3ec0f27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c09771e6-2042-48e0-94e1-55ff7bae6fb5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0a594d5-173d-45fe-8537-52ef4ce5f777.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0be8bac-4553-4b23-b75f-f51effce2624.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0bf3cf3-a38f-4e40-9b2b-1fed1b7cabf5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0c6164e-9174-41b3-99c6-9628198cc176.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0cc789b-63f5-4a67-8cc2-feb315720db3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0d361d4-426d-4102-a2f5-fc4e3c2b5165.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c0dd7c24-f149-409a-92e4-502f5141b121.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c10da1bb-497b-4988-aa9b-3e10483bc4bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c113af37-f38e-44b5-8d02-14c8a38f5a78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1710377-1e76-4b45-a12b-e33b1ddb4ba7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c174987a-8fc7-4828-99dd-270eede7c7c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c18a947d-68fe-4c9e-a999-079b8788ad11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1ab2e22-b2e2-4430-8786-9e75a3b4062f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1c94f4c-8107-4115-a16a-1039a111ab95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1ce9de6-9d1c-4759-86bb-44365e77d529.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1ed56c4-1b58-4078-a15e-18ef95493760.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c1ff403f-226c-4581-bef4-031ccc765824.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c222dc36-abf3-4845-a66b-1548e2fa1f53.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c239e299-3b4f-4210-950b-f2f89858a551.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c24962c7-a472-4967-abe0-0ecc6809ed28.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c26706a0-dfdc-43da-aa79-2878d158c7c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c267806b-5fe4-49b9-b8fb-ab91c25daadf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c274268a-7fa1-4ce1-944d-7cf588f81c87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c288b06c-85be-4cc6-a2ee-4dee7850e3d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c293dd81-decd-4c4d-8fc8-3ed9984bb411.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c2c76a21-f795-4725-b080-0f38e7b1afb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c2e600fd-dcb5-473e-9c03-c089db354d5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c2f72904-082c-44cb-84cb-1a4fc01188f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c302de64-e166-45ae-96f2-e0f24e57d07c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c308826e-4932-4863-8087-a83e520cb94c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c345587e-e206-4466-921a-2b3231818358.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c349a771-50fe-4b65-9d93-972069f4d475.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c35e9dad-448a-4ef1-adbc-2de67f41d6cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c373253e-61d4-4cda-bec1-29644523d491.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c3781d11-ffff-4ee9-9893-a3f94f83f746.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c39469f6-da84-46a9-b73b-de645a8e1f2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c3c994b3-9bd8-4b66-9867-ab8ad5ecafc1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c3fcf9d2-b26d-4e61-afa9-37e96320eaa8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c420337e-2851-4959-9033-307e7ac5bfe2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4219d55-9a92-49f7-ba60-b97522ede9bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c434b0b8-2c11-4266-8f7c-089e25f2890a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c43a6f11-6cb7-4027-a65b-f44082e36d09.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c43e7578-5bb2-4b45-9170-75d0ecdf3854.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4496f98-f992-4a88-be4b-db9c841db1e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4570e69-3987-43c6-8f9c-699006b296a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c45c39af-7a5e-4f71-a11b-fe688426cfa1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4631749-0df9-44a3-bac3-ca7fac236bac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4848897-3943-464b-b227-c17152fd107c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c493fbad-50a8-4cb3-95bc-a42ff3332bbc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c497e0bb-3231-4508-9421-65223fcc53d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4a38502-4416-4c8e-8a4c-a0447005b1ae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4b6d3c3-4161-451b-a4b4-acce1ca84488.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c4d72407-9d5e-4567-80fe-0069500c02f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c501b90d-756b-4cfa-b798-85d38c3427cf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c510e6dc-9e32-444e-b2a9-6fdab38bc6d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c522a68c-a382-4190-9790-cfd84fad9107.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c538a314-ed94-4c07-872e-37479a1572ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c555c30a-ce75-44df-a6eb-699cd5626033.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c55a48d7-bc9e-4236-9dfa-4d0242d27df7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c55bd711-6de5-4e83-810a-e1e7234eba67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c55dd5e4-27c4-4894-ad06-bb2a79b407c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c56d62b8-1dee-4950-99c4-44e3287ffe89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c5747b0a-40c6-46f3-b514-e7b75b96e22d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c59a7cd0-4f1b-46e9-b987-7443633192af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c5d40221-2f86-4a6a-85b9-85c7697c0aef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c5eaf582-8024-465f-8a9d-5e5113c319c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c5ebd151-fe01-49fa-951e-57eb85b0aacb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c5f12ff4-5474-4bd9-b016-2bbad54bbf38.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c606f0db-3350-430e-ab20-46971759e4d0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c60e80e2-260e-4cdb-8d66-434475d437a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c611cb81-0f3f-486c-bd45-e236f453a322.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c61c4366-3e18-4e90-8733-edc6934e7b3d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c66543ad-2755-45ff-96e8-75aae2e75d31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c66c37ff-e7df-44f5-bc81-ad54a7ce068f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c6a14329-c65c-40ef-a773-045612ca31c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c6aa1948-33ad-46e0-9d0a-294685b3c817.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c6b90453-de5e-48f3-a798-bdf2380af173.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c6c72f70-1ccc-4c05-9abf-a3252c9e8737.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c6d57187-ca2e-4f2c-ae0a-b17aeac814b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7298fe9-c624-40d1-9800-e073b464ffca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7318309-faff-4e4a-a98a-d2911faadd8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c73c1c28-b9d2-4756-9541-20f29a91c376.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c742cf2a-c772-452f-8565-fff49e611038.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c74ce596-fe3c-47f2-9d8e-67c867491b35.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7640f8d-4c8c-4874-8c96-1901c53c6662.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c76add9a-a1f7-4485-b93d-cf680f973f1c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c77cdedc-68a5-4281-a903-a95e05e01d6f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7830fac-7428-468d-b1e5-a622740a8475.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7a846ce-e7f5-4503-a103-144a72e3f0b2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7cc40ff-d1fa-4e88-8d17-8429e47f46a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7d23e6f-e093-4498-8c58-891ef4960fe3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c7ea6b2b-13c4-4ced-8c6b-6b20db75b45f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c80dd898-e64e-4752-ab4b-febc5fd54377.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c83ebb2c-13a0-4671-8dd4-7b0060c0c812.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c83ee7ca-47e8-4e23-9027-6340e4552b95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c849b779-655a-496d-8076-7b951d2d6bbf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c87141cc-6e68-4fb0-bb6e-423a02680286.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c877fc7e-e249-4f0e-96fb-b50a7a9fc945.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8a20b3b-3bb7-46f9-8a48-7e0437de9690.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8acb419-3c3e-4fb1-ac63-dcabbda1443e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8c0025d-0ea3-4fb8-9024-9c9142e5988d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8c8f1f5-9011-48c5-928e-9229910a7eed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8ce1a77-0192-4038-be58-5076a410ffdc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c8f40258-4223-432c-850b-c78c825b5b83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c95b5acd-4e6f-43a1-8996-a1913cf5fb74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c98a2b26-8ddf-4574-946e-eb0baea5a4b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c9c29c43-61fd-4be3-bc65-75f370810913.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c9e005af-73da-466a-9170-220977e0e8d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/c9f41f57-d7fd-4259-9a09-9ec7642914a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ca549bb9-c452-4200-8938-7ce50dea3e85.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ca59b3dc-d47f-40e2-9b43-05156196a5eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ca7f3315-9be2-40c4-92ac-265feaa833d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ca90a7aa-02d4-4a16-b03e-c5f192161105.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/caa53a14-3dcb-483f-b496-8d283b13796a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/caeaa62a-468b-4c98-b09b-da761174e5fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/caf3bc12-e7af-4ad5-944c-9940920850b4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb54941e-7021-42eb-9cff-98ae2c76cf69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb601b92-9e62-4604-b7b7-e3218ef55dc8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb61f547-da0a-460b-8ee2-f9e247fdf202.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb64d5cd-9e2c-422b-877a-ae92dd2939d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb679654-ddc9-4e7f-8c45-edc58deb0093.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb704765-b241-44e3-9ade-f5ac3767a84b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb7bb14b-e497-4ec3-82d6-b78c7fbc68e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cb9d87a7-0d3a-4c8c-ae6b-63ab7379c18b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cbaa77bd-a0a8-409b-a681-5e16db9133cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cbafe2a2-2c59-40e9-8cbd-9bf30abd99f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cbd921a6-4194-4393-985b-012561098df7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cbde5f20-18ad-4cda-bd44-8ff95d053b66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cbe4902d-aecb-4f4b-ac01-a569ad4f4622.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc0eb81d-b3b4-41b0-84d3-ee34d51421c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc0f3077-81e6-4236-b2d9-f04c832ce9a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc24faf8-4c03-4525-b36f-9569dff9fd4a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc4740c8-28fe-4c04-86d1-7c09bc1733ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc54483f-bda1-4259-884f-cc55718f9716.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc74f013-2973-488f-b77d-88aaea92a286.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cc95d4a4-da5c-4eae-86ed-397b685cbf27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ccdd2b2c-4f2e-40ea-87e0-8fdaae193b60.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cce0bb04-4889-48ce-a320-56f3ed074463.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cce12b81-d7bd-4994-84a7-ced40657d483.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cce83f2c-eabe-4c85-8949-8fbe2549dbd5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cd495259-5785-44f1-adfe-58760dbdaaa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cd98e604-df82-4d71-a680-64ccc173e264.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cdb659fb-3c4e-4387-9178-71a8b92c543a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cdcb5598-7773-4523-927c-01d1860d5a74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cde2c79c-40c8-4a01-a081-7bdadb6e5acb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce0ca51c-32d7-41f0-ba7b-c9fcfd8cf222.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce0da345-d190-4030-a6a3-67d1865ef438.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce10cef2-210c-4c14-9519-5f483ed7267d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce1a0a9e-5fe4-434b-a2a1-29d3eb755acc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce28d966-7698-412a-80d3-e5562cc3f8ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce31fbd4-420a-4a3f-ab1a-4136232ee670.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce45ada2-fbb0-4596-9c36-c5ce7612f313.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce6376b2-bb15-486e-85d0-2be4843eac58.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce676cdd-2af0-47f0-bfa6-654a0e32f3ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce7b1386-5052-4d99-8318-9b1746967668.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce8f18dd-8cc2-439d-85a5-9e6065d64a83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ce975598-2a56-48ec-8000-4e557a0a87d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cec6c849-301e-47b6-87fa-666b82c69fe6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cecc1234-2536-4678-9b46-76f46d87b953.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cef2bafc-5389-44a6-b275-296473633cc5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cf6b4ce7-3be5-47ed-9307-3849d8bd416e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cf6c77df-0b4c-481f-9200-b5a9df5acb6f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cf8dcfc8-1a71-4153-a6d0-9cc0488b25d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cf90655a-0216-49d6-a6de-461a226b1573.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cfa9c6ef-e018-4f21-b4ad-489c445337f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/cff53faa-7a4b-43e3-a0f0-86e588fba181.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d00ef1bd-11c2-4ec8-a5a1-4ce189265806.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d024cd64-9671-4754-9c14-0f39964cc0cd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d0584860-8c97-4bcc-82d9-06a3a3fc621c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d05cfdba-a876-4a4c-b6a8-f84aef52c68f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d0739202-7bee-44aa-990f-0c0f0eb0d84b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d07a80d4-9912-49f0-ae09-1c75f7e5fc63.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d07ac06c-76ee-4629-b098-b0969213a4bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d09e7d92-553a-4f38-8ac2-0ab75f4459d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d0b23c98-cebd-4e3f-8344-9f72863fbd73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d0c0ed98-0efc-4b2d-afc5-d31287a7bd87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d0d6e41b-4798-4f11-8d0d-ad31875bdd79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1122604-7ee7-45ca-a117-8665dbfcee0c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d13b799b-4c1d-4839-a2c8-a2beb562ccae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d13f9d1f-13ac-4917-b17e-0e91f13d6667.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d17c9d66-c6e2-41de-ae5e-017406032bc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d17e043d-3733-4f50-bdeb-3ffe1af537fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d17eb309-5cbc-4562-accc-77c4936027b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d18bacd3-9062-481a-834e-f5eb91caf0a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1990917-4586-4590-86b8-15cee17f0b15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d19c5c2c-6e18-4e5b-9b83-2a671d5798be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1aade5b-c63d-48d3-b733-ec0372643e76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1c8c3d9-9748-4587-b510-9e79e149ddb0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1d6c18d-02db-428a-9db0-838de21086d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1e2f673-b6b9-449a-bf0e-9aaa537141ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1e96243-6444-4cbd-90c0-1519d07862e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d1fbdb53-15c0-41d4-bc2f-f6f4948475ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2054694-8d59-478b-a601-d86c4abded5e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d209a2ac-a7a9-488a-979c-f11bf711f7a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d21745f0-51e3-474f-b4ec-71bd94ea17af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d229abf3-5602-4d29-a50c-3aa803f918ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d22ebf3a-01fb-4e79-8eb4-2e541570985e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d24b2967-571b-4d9e-8fb6-f29eb5f7916d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2517242-c445-4f91-9639-afe1e44e88e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2671a5f-3fac-48b5-a377-a78e1f251e79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d287c1b3-df13-4547-b900-9abd1f683af4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d294f0af-314a-4503-9036-df2cd6905d03.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d297e863-a290-4e54-9ef5-f1bb5f898249.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2b9c621-6ff9-4f58-a34b-5865bd592617.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2c1abe7-7b04-4164-9c5c-4f8b65ad1ec9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2e8daa8-23c3-4b10-b0e2-4502da89847c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d2ef6908-2fa2-4f24-97d0-fcf316a19c4e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d3219367-a204-44fa-9c52-d10453a1dde4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d32af07c-0a31-43ab-a125-9878974c7905.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d32fc791-8b57-4b37-9405-05710f9dd65f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d3837d7d-22c7-4efa-af79-1ed8f4bc279d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d39d058a-f0fc-40db-a007-e1e14035da04.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d3c060b8-0fe1-4e77-9538-6104e6ee375d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d430749b-d149-4b29-a2ee-13a8ca5a58d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d463a047-7d47-4cc5-8b71-8db4145893fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d48f5556-ada7-45bc-bd62-f1bc91089024.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4bae70f-6ebd-413b-beb7-db726e465b27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4bc1cf3-aa92-4139-900f-5052311cf33c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4bf416e-5c92-4121-9f10-ef5e098f7a65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4d48e10-6500-411e-8713-11df5fd21b9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4e70b73-a3dc-4bc4-962a-0722b918f928.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4f17e51-cf58-4cd3-b31b-c389dc7c0add.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d4f385d4-6d88-4ab1-a108-51d6cfebfa64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d50ee808-3954-4b22-a76f-c9d962b3c764.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5277cdd-e8b6-4b88-b9f1-ffa19a0b057d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5398f08-72ba-4d21-8b82-6551b82b7346.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d53ee389-a1c5-42c5-b41d-7bc8a8ec24e4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d55822d9-6264-444d-8458-4e6696b0efe0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d56b2f6a-f766-4cf2-893a-90dcab7409b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d582c1b6-7726-4982-92de-48da1be475cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5a17578-7f7c-45e9-8d9c-c56fb387d75f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5a921ba-ca80-4e67-bace-f9b8084c9c0e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5ab40ec-6c91-463b-a5a2-c944942f3e79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5cd50e8-d251-4ca9-8a09-5352a3a1b971.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5d0f7ea-c947-4026-9662-7cfb1cbd5175.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5d7aa5f-25df-497c-85d7-e1fe5d012e95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d5dde5a9-4d00-4800-a347-d06bc5105f9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d60166c8-46ba-4b46-a49a-fb2a25535890.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d60a326f-a7f5-48b2-bd08-536a96c2cb3b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d612dffd-2676-4f58-9f97-46bd57059298.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d61debaa-b5d4-4d79-8889-d763d594708d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6323e6f-efdc-446a-b83c-03a9b702ff51.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6428f90-4b5f-41c8-897b-d1f216b6d42b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6838e49-ac5d-49e8-8d30-5bd84b518d83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d68c4367-6ffe-4c62-bddb-201816081212.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6a55e93-0ad0-45c1-bfec-e5970804c424.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6ae464c-44ae-4909-acf5-ff50c7dcf366.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d6ba364f-959f-4fc2-adaa-751176300406.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7048c51-d556-4620-8b3d-5b33ee2b331b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7074539-b966-486b-80fe-094ba40bafb0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d729ae85-149a-4d28-a0ab-a1d03395c23a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7352bd0-4122-4d2a-9af9-88be8a38d1c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7419f75-e63d-49d0-aaa3-a30de2c03619.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7522a19-7248-4a0a-b910-0e6c5502a2db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d762c8cc-35f6-4253-a30d-a643d8bd9740.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7649436-95be-4191-b9b8-e1a3e1433156.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d767ff49-c81d-44eb-b425-23e06827fa1a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d78f99eb-82a4-44f5-9d09-8629861e9fd3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d79b67b2-fce2-4eb1-b522-681a7b73c324.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7b35632-4e01-4747-8111-4431b37712c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7bfe4da-3696-4593-bb50-0a6f4bd819dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d7fd29a8-596c-4e12-b2b6-944d9953e628.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8060c05-932f-4d8f-ab4a-3aea4ce6221a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8104d66-d20e-4625-855a-a9e16e079c79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8160832-7774-4a9a-adb7-5ad0ff7d249c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8219fe6-feeb-4384-ae4f-71567a0fd16c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d825bfaa-a725-4e4c-832c-adf2f329c5fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d87ce499-8127-4433-8e9a-b51b937b468a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d883704a-e70b-4c95-a880-f080c1951fde.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8971ede-7aa7-42e7-9ae0-e49eee4190f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8a65c8a-7a4b-4825-92f1-2e8aea9acba9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8a88ad8-70f1-4698-946f-b508a2cdde67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8ae4c1f-87be-49a3-80a4-6f164edaa9fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8b503f1-d3c8-434a-8be3-aad6812791d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d8c4e82b-c089-48c8-80d4-22dba6ce15a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9049423-eaea-49d0-9c76-e737a0b9f512.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d918de3f-3d76-4201-a8a3-4bb4080655c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d92b9312-00a1-4c41-aa49-8241cb6b338e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9439152-6477-4b05-97a0-318fa3295ac0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d955215f-ac7e-4ab8-b9a3-c0edafded6de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d96a950e-7444-427f-8e60-43cc71ae2249.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d99d3818-dcb5-443a-8322-af2d071ec25e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9a8bac2-548a-4178-a10a-601f49c28181.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9b3fbc7-6740-4c73-ba1a-54f33782df5d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9cb3123-c6c7-43eb-956f-1e90350c98fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9e06c24-3289-4184-bf34-980b188543b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9e1d3d2-f6c6-4e67-b382-d51bb9bd1fc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/d9efab31-bd8c-4f1f-99e5-65485d87ba4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da3b276e-c253-459e-b2fe-f12970d6ab7d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da4988c3-3f83-4548-a21c-4fb3ede4b473.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da731124-e9bc-4a43-afac-ec8d278e8894.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da74212e-a8c1-483f-a25b-9c76cbc6f3ba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da7889d4-d441-4565-abfe-8158ac8456db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da8ff572-f4cf-45fb-97c8-1d98db93bd9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/da9294bd-f810-41dc-90a2-8104194cbf30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dac7329e-de30-447f-b8e0-ba925207753b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dad7a64a-7035-4c28-ae78-9efc63696741.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/daf5a3ee-eb34-41b3-a53c-600f8fedabb2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dafd356b-88e4-422d-a38f-04da1b20283b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db0cd21f-09cb-4a97-8a1b-a0724bab8820.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db21464f-09bf-4252-b6cf-685cf5a317a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db2c5c2d-f35c-4066-9c0f-9c17d597ecdb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db363c24-a506-49a9-bb12-9df75ef66287.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db55217f-2013-4a28-ac0e-0952bcd5e4af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/db98585d-4d2e-4a0a-8b34-e35745d296e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dbaa6f17-89f3-4480-9b40-2024baee3b54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dbb6581c-026c-460d-aa75-b858a94d5a0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dbbe3667-1024-42cb-85c8-44e6bf8bac70.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dbd4b043-1951-4b71-8bdb-36961087512b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc00dae7-e6a7-4b49-b911-83e83416aac1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc00edb6-be57-494e-84c1-4e547bb39971.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc095348-a477-48cf-974b-db86f186f3b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc113156-5fee-4f12-b369-1eb5c11accf5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc1c038d-2ae8-4de7-94cb-a9cca6648209.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc34ea29-904e-4ee5-9ea4-d1f10a38f973.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc3636ef-e319-4f54-a77a-7e7d7803b92a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc3f7f64-a561-43b9-bf03-af0ee672abd1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc46c3bb-0850-4d51-b91d-1bbd908038dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc61ec7a-a2fb-4dcd-b303-600ac595a1e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc656d2e-bd27-40cc-8e98-9be2104b2ec7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc689460-57f0-432f-86c8-2a1ce64d0720.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc77cb76-c61e-4ded-8bc5-27eed6ee65b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dc985f52-33aa-48c7-87a1-278ee5da54f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dca0a4f1-89bb-44d8-a0bb-b4ec66fdd58b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dcfda71c-f284-4c3d-9680-d1b5ecd8efae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dd0ab4a0-30ba-4374-b2eb-2082ee24bec7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dd2dc76b-bf71-4e2d-8650-9641041ba11d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dd3631a1-e917-45a6-8490-206dfa22b210.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dd3a3f13-3d92-408f-be9e-80e21cbd17f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dd539d7d-ff83-49f9-bc51-14f43b864b37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ddb408d5-ca39-4694-98ad-caa6b81de6bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ddda9291-740a-49f4-ae1a-d1b1751e900e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de021c8f-b67f-4f53-9650-8ce0b6691ec0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de1db872-4a17-4eb3-8697-f7efa94ba5f1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de405a05-4ff1-4131-9404-4bc207496f11.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de44588b-27f2-48ea-8927-fa8e7e0eca84.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de47dc1f-240b-4e96-ab11-9dce7a84b293.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de518a84-51e5-4300-ae67-1e862f385a90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/de9cdb27-1a36-443b-b8b8-bc30a5c7d092.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/def104cf-27c5-42ac-a871-475cd30ad64d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df2c57ca-400d-42d7-8842-27296689b59f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df374c63-c113-4833-b4da-917273c7d050.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df38ae9e-b491-4000-afd4-4d4d3e870e80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df3f097b-ff35-4ea6-b9b1-10d0b370c5d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df672aad-6260-4649-870b-5d7cf1f30592.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df6b3950-86e5-4c6a-8ed9-b10f1e248a59.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/df978083-4166-4d35-bde7-7e31c1990f54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dfc24953-fb1c-4c45-81ca-5134d1c30600.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/dffc7acc-118c-4a72-ab68-e8a8adce0e3a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0139510-8817-4dce-80a2-8ef23bcf94c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e01cc7d4-fa13-4397-93d5-a36d32e2f132.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e021c8ab-48fb-419b-9b4e-b2328f94eb2b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e036aae9-9225-4a04-9303-07d04e721a33.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e04eee0e-1f82-40c4-8b72-a38f74c59362.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0840ab1-0093-4a38-aa43-b4adebb7f1b0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0c1bcd5-6832-4ec0-b4fa-70d3bd4baab4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0d1de8b-5064-4785-b8d6-dcceb77f5870.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0de03aa-42a6-4e7d-84ab-12285e0beb15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e0fd9704-e220-468f-bf42-6e0b13353cc8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e1197fbc-e575-4d56-b2c2-38c97611143c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e11d0161-0f04-4ad4-a43e-5bb0170339f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e12afd54-f3a9-4eea-b17d-030700d95403.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e14ba3c1-0f14-484e-ae7d-c9d25ac99f01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e1845e46-f0e9-48a9-bc5d-1e569d832c96.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e1c1f7ea-5cf2-4b1e-b603-6c3767458a59.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e1ef25e7-0028-4b61-b732-9cec3e454273.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e1f88a23-289b-44f2-8a55-02cbfab628ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e20adb8c-bbff-484c-b2f2-62053097c2f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e20d8e75-79ef-4ca6-9a82-f2e18a3accb6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e21f2332-4aff-4ee8-b613-ed5d368817cf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e24732ac-f76d-4be4-8791-d18ddcf220a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e259092e-bd97-4eff-9dee-547f93b3d369.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e25aa899-1c2d-4d02-afa8-53d6b164d033.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e26e7d22-e431-416a-89a3-cbc25eab3b2c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e28bc514-04d5-4deb-8395-4782b0d69e7f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2bf91b0-5451-46eb-b196-5838e958e50e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2c975f8-f3b4-4fbe-9a37-89b56686110b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2cd996c-9352-4a6b-90f6-47b8383ecdb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2d172b2-ca3b-4e75-ad86-f53df61ab7f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2e487fa-847e-4a87-a3ad-5d25758a87c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2f091b7-f200-44aa-a18f-24bd4cba4aae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e2f502dc-0caf-4aab-b895-f6d7f14ced54.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e3232a47-e92a-4956-9dbd-0eef45a6dcd0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e328d76f-e619-4f35-81ab-528b05b35cca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e3466fd5-f2b2-4d38-a51c-f6e66a0f070a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e34aaa46-438c-4081-a2fc-1131b1f0c230.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e3621acd-b0df-42fb-a50c-c21122527c95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e366524e-3585-4481-90a8-b8f17a369c8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e37477bb-fed0-4834-b7ff-39fbe6e9b397.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e38a4339-9d1b-4677-a6ab-043309e27344.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e3fd9ac4-1ad4-47b3-9b41-59f26e2b4c30.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e4292c75-e2d8-4259-a66b-9af3140d0050.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e4891e88-8462-443f-acce-5b6833da6c5c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e48930c2-567b-4af9-9d89-d221c70ac559.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e4e40c9e-8602-4a5c-8c25-c5fa74bef0f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e4f7a853-a7d8-4931-ba70-1e790a276224.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e50a04bf-9423-4fc0-b599-eb301d0483a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e50bad9e-4513-4c4a-8223-beca0d00a21d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e50f184c-fcc1-4bdf-99b6-370c32ce17b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e511ef52-f783-4354-9ec1-1f09fabb9d18.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e5423de5-871e-4769-81a6-3f1608285e0a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e554b0f3-ba22-42b3-8adb-197b06550be6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e56061e4-36d0-4cd5-aa9b-2be467e15b68.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e59e4a28-9d1c-4353-832f-5b2d31b51489.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e5a1bcd2-3437-4f63-a3a3-a09c82dab251.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e5c98240-cf56-4d15-9b3b-8cfed1a798ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e5ce389f-c652-4dff-93ae-1af5e06bca9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e5f5d563-4af7-4ff9-9066-95f14843ab03.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e61f0aa1-07d7-401c-9549-d05f6c653204.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e63b0993-85cb-45e2-ba94-7b00553339f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e647cfef-b33d-4d77-8ca8-0dc11f72b2e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e65459fe-aa59-4682-a569-14ab1b627bd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e6d95156-cc2f-4e7b-80c3-54703aff398c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e6daad7b-ee4a-4091-80db-2820b4094643.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e6f8dd05-6235-4c82-8d3e-7e9ad1967090.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e6ffd46d-ba7f-4313-b72e-abdf2433ddb4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e7045f8b-9dad-4f3e-9e2e-f1312bc98e89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e70c79e9-1820-42c1-915b-2fa3a0b8dc21.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e724c9c2-ff78-45c5-92a5-ab5036de9d79.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e732d3dc-15bf-452c-a295-7e191407cdb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e74b0664-df4d-496f-b67a-7df59c41106d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e770b7d5-cb51-4ffa-819b-184c1c8423df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e77dd289-6724-42c2-aa87-0c94d5cd919b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e7948170-2e05-4cfd-854b-d7f1a299cb7b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e7abe2e0-36b0-4b2f-8540-95fd1e24639e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e7deb74c-bd71-4cc6-baf3-7910b699a9aa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8473f48-13ec-4a04-8191-078fc96b50ee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8499ac6-2f6b-4c89-b571-7f3945d0cf6f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e87189c5-245b-4a3c-8881-f9de5e155430.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8aea8b5-53d7-4879-9026-51594e4b86bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8b59740-7d01-4bbd-837e-65cdb7fa9fa4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8e4493b-a728-44b3-ba93-4810bafb9857.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e8fc8cc7-8de3-49e8-871f-a8a172bdeb29.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e906629d-df55-4148-a0e4-3e9c3a3b377b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e92228c6-6290-493b-b054-3c3e8d2a6121.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e93603fa-a1dc-48ce-925c-da45afbbb7d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e95092c5-212e-49a1-9a7a-79f2a34dfb46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e96393f3-d10e-4a73-8100-ca67a9144900.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e97986e8-177e-4738-bc80-46d82a613918.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e99ce3c5-bc35-4c73-be0e-2d6b4e4a9e8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e9a77a26-9c82-4301-b270-6ba338ba0f4d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e9bfc7eb-a470-4a02-a11b-527ba5a240ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e9dc919f-4e59-4c64-ab94-2dffbbc7a5a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/e9f51f4f-fad9-4edf-abd4-24099d05e54b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea1167e8-0aee-4310-a9de-1b75954412bf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea29d1a5-be1b-48ed-b4f4-28ddfc177ff5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea2b9b37-e086-4904-a323-be0d6f7841e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea3ce5a8-b0ce-4bcc-bed1-fbc224f93397.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea42072e-e23d-476e-baef-67a96abd75cc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea470a38-70d4-4233-b8be-2d0cfa2b6c0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea6a5fc6-6480-4ded-a40b-2814b4aed932.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ea967dd8-b65e-4ec9-ade6-4220847f5e3b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eaa15df6-2e24-445e-bf63-f1d7b9cfc18d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eaa9dc66-c505-4b0f-a025-a28a72894981.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eab50f04-7194-4024-8758-0cfe7fee2bb3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eabb08e9-23aa-4a18-9aed-f2c7839a098b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ead182f2-3b41-454e-b487-5b2e73fac43c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eaf72bb6-1ecf-4b13-acab-772f3ac70e43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eb0b4ad1-eaeb-4263-846b-18e45141329e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eb4001f4-59ef-4b23-8d97-3a4566067a0c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eb54cc9d-0fb9-4716-922a-c3cd87fdd597.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eb7fa4bf-07b7-4eef-9a89-7e0a1f62e254.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eb9f6eaa-1ea2-43ce-a05c-c17153656270.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eba20b77-b8ae-4fad-bfc3-8088beb6dbeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eba6dec9-f975-44cc-b97a-9233ed1a16c7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eba9dd24-9823-403d-b470-903e78d31354.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebaf196a-9b0d-4269-ad9b-2413e4f8a8a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebbb1f11-a2f6-4497-b88a-b3b428806a26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebbce8bc-254f-433f-aae7-e5397eb5ca20.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebbe7396-7a11-4bea-a164-4c9300157118.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebd4c816-2ce2-41e1-9da2-4333f24801a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ebf3a214-51a0-4be1-a504-78a087421e5c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ec225b5f-4899-484b-8c73-f958c3278381.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ec2a9324-33db-4bae-8154-ba991ea43e9e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ec424bcc-0e56-48c4-af72-cab32dcedfda.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ec56bd05-43dd-4ad9-8118-722afd703f35.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ec91accb-a5dd-44fd-868d-45a8eca637f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ecb9ba58-e97c-4d86-ab28-c903c027a224.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ecc43ce7-5a01-44cb-9fe9-2887e71e5801.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ecdaf686-e758-4f9a-958c-34c0b2b9c027.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ecfa7440-6e12-4c36-9508-20f0ec69c56a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed020ebd-a93f-4fbd-b863-f13f6fcfa3a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed073b9e-2e87-41a9-aa98-0afd327f2861.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed1f2268-76c5-43f4-a67e-6b8a7a2e72e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed3cc0e0-80bb-48eb-95db-d8a94f7cd4ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed42b7d9-ea1e-4608-85f4-00b936b10b64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed468912-cd97-40a5-92bd-caa5e5e725f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ed556613-ed39-4316-94ef-36eb22c94ad3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/edb7356f-7bbf-413d-85ea-df4c6e5090db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/edc7cae8-b08d-4f19-93d8-ce3d628a09fd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/edea375a-988d-4a02-ad23-679cbf3a4182.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ee1da991-a34f-457f-b0e7-5916a84b77ac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ee48d04b-abeb-4c14-b14a-d82731b77e88.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ee4e8c92-c10e-4773-a9aa-29d9e67890af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ee5f3b1e-0eb9-4468-b4b6-b18fa63a0041.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ee73d573-f4a5-42a0-9bbb-e6a47185c99b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eeb15cdf-2734-480a-bd9d-7c8917519622.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eeba19c5-f0a8-4151-8b76-c15857bbdc58.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eec33edd-41b9-4dda-a8d3-8a7659066d71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eeda0068-26cb-4c21-8230-9383d1c08ecc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef0102ed-1a3d-4892-a19c-60d148af633d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef2a184a-1412-4d8e-b8d3-df9dd7e2b2e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef38f00c-b30f-4172-a8a4-6a76a66e1bf4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef4f6c42-231c-46a1-b743-c941c7d15d46.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef536a48-bc92-418a-a8bb-5f5b7aeb3977.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef7613ed-944f-4166-8482-d22cdbca2432.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef846337-8f83-4919-a052-e3cf15a6ca9e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef875c5f-4fb6-4668-8cac-a4f551d03b90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ef9f5700-f56a-4442-8bd2-372a465eadf7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/efb191a1-4679-43ad-8a0c-9c43a543a9ca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/efb6d16c-97c8-44c8-87e7-dfebb32c57d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/efd56862-9b3d-446c-a0fb-23b31940bacd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/efdaa812-6536-45e2-9a29-9339aa721668.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/efdd1963-1b73-458d-aa04-82ae71adc6e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/eff0c31a-e446-48ce-9ff9-ced9e822f0e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/effd231b-0291-41a8-8dfa-35b75d76c394.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f01ab956-63fc-4ace-a27e-5c3547b879d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f03bc0da-9e68-4810-8c86-9a3f53487fb8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f042651b-a181-43e0-98d6-a2ca789681af.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f05bd5c4-8db8-4764-b439-1ff91a0aec00.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f061ead2-fdd6-4a9a-9200-f512c3f3d224.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f073e117-c917-4e08-ab31-a41beaf3c508.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f07887c7-5c25-4a42-8c36-04be59af032e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f09d2760-4103-44f3-9a08-127c7ea51b69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f0a171b0-735f-4dff-90de-8d9bd181ef3f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f0c3bc89-f93a-49f4-81a8-5e9356e79c62.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f0fa4b2f-68bd-43bd-801e-db4954c6ef32.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f107f438-71f0-4c50-9bcb-3076b2a61b2c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f12dd29b-c2dc-4f4c-afcd-884fa334e363.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f14ffea9-2b9d-463c-a6f6-611621a5d538.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1759c9f-59a6-4ee0-aafe-c779035470c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f180f2c3-c10c-42d2-9da3-6de0cf99f3d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1890790-5d14-480f-a197-6f10f3279590.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f18c0d16-f5fd-4f95-a271-981b764c4d60.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f19a2a8c-bfb3-422e-a706-fed0160f6163.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1ae61b6-1173-413d-b4db-a03ac3757fcc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1d6e89b-0db8-4b20-917c-bf46e0645220.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1df477a-dce6-4ff4-8834-c279fb258b52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f1e3d270-5679-4d6a-a35b-f3ad20164f3f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2500ce1-47f5-414f-9293-7f2a6d6c33e3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f25e8552-a304-4fc9-ae86-0a7b8b2e78b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f26ce962-fe7e-4a8c-b151-f156c2205979.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2834133-9a99-4601-8763-384d02da90f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2876a0b-8512-4cce-96f6-099d1d9766a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2b0ca07-a873-4309-af04-957c11a222dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2c78abe-e48b-4a2d-917b-a76f9186fe8a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2e67325-17b6-4d99-be62-ca56fc2b70c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2e7cba1-f9bd-4b1e-b9ca-131b6b473dc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f2f99b57-bf6f-4ecd-9274-811c80efd621.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f30ee3bb-b661-41ad-9f2d-b85522b2d4ec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3131882-a879-40c1-b7ce-528ec1a1edca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3151e97-ae69-433d-844d-936708f9fc99.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f35031b0-1501-4080-a748-69a85dd66e62.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f358d414-cac0-4f0c-a1b7-df03d5e0a3bd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3605fc2-bae3-41c6-bdb5-f509d2a487f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f360f497-6372-42a6-a6cf-3a6167583fbe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f37de0f2-119c-417b-850d-3db151cee11a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f39474be-e9eb-4ff3-b7f5-8caad429bd56.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3986181-b713-4ccf-a3bc-25ab363c91b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3b2bfff-b601-4fb7-bde9-587bd75787ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3cf55a7-9438-4999-997f-ebb34812e87f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f3ea113f-0594-452e-99a2-e8ceee6fe499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4024591-1fa3-4c23-aaac-6925701b2c6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f40c3682-d126-478f-bc5a-bc1d1dfdda5f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f43ff24b-8547-4f37-917c-f9f6c56a2f17.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f443c1ea-7fc5-430b-abe5-5edda4db4018.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f44ea9f5-f805-4e10-a1eb-6987de1f4fa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4613a62-abc3-4c6f-86a4-83f23abb2ac3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4b596b1-5ae9-4711-a84d-a5004bc8e1be.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4b8864e-b234-4d2b-8772-b13602745b24.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4d4f1d5-ea92-4a73-b16e-63d53996f436.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4d9a371-ae7b-4ba0-9e0b-24efc8be5d69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f4f2ef41-306a-43c8-8aef-4047a4afb621.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5037a37-7b2a-470b-91c9-27a0cba52e02.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5072063-0a52-4a9f-8e30-2b047305c63e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5520a83-bc9e-478c-91da-d912ed89a144.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f55de017-1035-42b7-9f0f-03cdda1b81eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5b35c78-c626-4c73-ad9d-2dced8539afb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5c0fad5-380e-4e2c-a5a5-2e4d72441a25.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5d4280c-3d04-46c6-9b04-cf7bcbf8de83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f5d4e234-e87a-427b-bc09-b491123d1d80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6193e2a-40d0-4388-a217-6e2ec23aee6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6321126-4a33-4a52-ae62-678e987ade6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f63a66af-24a0-4b2b-9f0a-2e1b675e94bd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f64b3078-cb34-4a72-982c-c835b2fb2239.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6535755-a0d7-4e48-9879-52e159c2eeeb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f675eb47-4ad2-4743-822b-f85392e7fe71.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6a9bbc3-26a1-4299-9b75-30315edf1711.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6b060ad-a746-4998-ac17-b5391b098c94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6cc8bc0-851a-42c1-876e-56800bb30723.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6d0b936-e2e4-4c6d-9ec2-103ee86b09ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6d46354-f718-4d25-aef1-c21eeb2ffcad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f6d48031-9499-4850-addb-9d950b0fd927.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7098778-b33a-49d0-a21a-65e1603a1ee3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7157efe-e58e-45fd-92b2-60c598994e86.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7187f98-032d-41e3-8cbc-d74c67e898ee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f72a3173-4205-4c66-abf4-1c7a5e689b13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f75733ef-3c1c-4680-893e-48318a7e98eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7b3918b-edaa-48ca-9ce8-2a98918daadc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7b4969f-f5a9-4c5c-a13a-689dc4bad380.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7c815c6-59b4-4dbc-b89f-ca87d36fc999.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7c92ecb-0dab-42e3-bd8c-d06f8b8ad4d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7e53bb8-3b5e-44c5-8d50-55bac339de1e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7ed4d09-de50-49eb-9582-a351449a1df1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f7fcfa94-be1a-417e-80e4-33424a527a5a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8091f77-010b-4b56-aac3-d79959c2f9fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f81f02af-4542-4f8c-b45b-1e78e570febf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f82004a3-1a54-4bab-8d7a-a271e9377400.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8243b9e-cc03-40af-9d07-7a62cf9bb287.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8372cdc-9f1b-41eb-98e4-f7c4ebe13205.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f83d8bc7-e37f-486c-88e9-fad174de2c94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8480981-770c-4d69-9a2e-43e461fb1e8c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f849fdd2-9291-48f4-9ed1-e2ceb7edf5b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f857e4cd-3594-4bc9-bc58-ecec530e1333.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8587186-718e-4bb1-9f6c-099485419a9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f85ddcef-01f9-4481-8bb3-b4d3734beb75.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f86f1a62-8d5b-47f7-9662-e064f8dba4f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8a834db-6a77-4127-91c0-16b747e08887.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8ac3e44-b4ba-4018-809f-eba109b0d815.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f8de004d-f52e-4cd3-99f7-23290aecadd2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9108530-4ac1-4491-806f-e8fcba9c32f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f91d5f7e-7e96-4ec5-846e-c01e973b0fb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f923b656-2a64-45bc-a666-667d2cab3ec1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f957cd16-db23-410a-abc1-ae61c60fc482.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f96a2a67-3e68-44fc-a9af-ac7bb0d876de.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f96f233a-cf7d-4b2a-a6b4-d27233a8959f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9781de5-6d85-4cf8-bda5-7f0aa7e59152.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f97b6530-c203-4977-8b50-c7f8a74a5844.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f982d513-9ed2-4a6d-b3d8-c1c4c3cde282.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f99c4572-2947-4139-b17d-d43608c0fd34.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9a2e7e6-e23f-4d2e-801f-bfadc4a13e43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9aacb16-117d-46e3-9e11-dcfa7f85af85.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9ae9b33-750a-43e7-820b-0f1fe4696744.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9cb4614-b017-4b2b-b7ea-9938ed2f7f7f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/f9d16468-ab31-4674-8c76-07f212f8c5b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fa0413b4-980d-44ae-8737-8acbf6d4d2b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fa2acab6-cc6e-463e-8f12-0e6f6ea8abae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fa4244aa-ede9-419c-b7c1-3a497890b348.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fa61943a-841e-494f-93d5-73867781ea73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fa7907d8-6399-4f46-a2e5-e7425a95744a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fabac8a9-d86c-4ebd-91ae-e122d581ff50.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fad1fd06-f066-479f-b5f5-192975141bac.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb1df875-63fd-4359-951f-be256581c380.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb30a12e-cf0d-46c4-b8d2-68434056b07e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb396fbe-77aa-4ea7-b8b2-2d58f8f3d9f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb58a16e-c7ad-4305-b223-189112343287.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb655412-ce21-45e4-a3ab-f7a6854a1397.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb7fac6a-d678-4f1e-a61b-8adda8af3890.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb9104d7-7af3-4a8b-8f1d-cf05e682bf70.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fb9f5818-c9dd-46c5-b857-394fb666c5a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbad164e-f0c1-4c0e-bf3e-0bf079711020.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbb068f8-b058-4cb3-9cce-78c097acab73.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbb4c0f1-287c-4dbb-9066-743e612683d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbc6dd18-09b4-4e1b-9b70-076419a8241b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbf845de-8dea-42cf-b5c2-8c7696b3da87.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fbfc088a-5f1b-4c6c-9e14-9a2a4554a15b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc091f34-cc4d-463f-a947-825f6c00b94e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc0c6b21-e926-4d50-8f95-2c7e8c45aed3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc1ef395-17f0-4002-a59d-9cc6840beaa7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc364b09-e30d-4567-86f2-3317e4743259.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc379117-e7bc-457f-bc06-3869f76541d8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fc3f6a32-8c77-452a-ac5d-a6a4f4256805.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fcb7e73a-c94b-4cef-bdf2-7fac711fd08f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fcca04e9-00d9-4bbc-9caa-79290d684dbb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fcd748b1-ab44-41c9-94fa-277c069a5764.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fd1462a4-e997-4369-b25a-acf7e166ff27.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fd4abb32-bdcc-46c3-bccd-f03fe0aec792.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fd4c81c1-45d6-4a97-83f9-e7c3da41d76f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fd5611b5-6d2c-425a-8a1d-c2cdfadabd86.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fd584d82-571a-43f2-81fd-5cd97a9b3eb4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fdb7a2bf-f85a-429b-8707-9fd28f997d7e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fdde9d5f-ea82-4df8-a850-3b131dbade55.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fdec46fe-cb47-4a9e-8ee8-ae531c06bf8f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe0b2a90-f779-4d52-a5b4-016c9d58493b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe0ed831-be23-4276-8907-1bbe154728a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe146432-c126-46db-9a45-555db08514fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe2c30cb-5e37-48af-82cf-98fa734643c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe3162ac-e3a5-4fb8-92b6-f5c888c29fcf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe4e220d-f028-4086-8fa1-79c097a34917.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe55f338-f9f5-43e6-8647-8558e5766d99.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe71982f-8fa8-4573-8027-e6989dbb8ccc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe753c1f-04a7-4fbd-8ec1-78f69f0a7b8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe7def6a-c319-44f8-9f23-f53cdbf9ecbd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe893093-26cb-47eb-90f8-095014f14b61.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fe980394-d9b0-461b-9f94-46b3eca95241.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/feb28cb6-13f3-420b-af9d-2b55fea4a288.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fedfc648-1e52-4b3c-9fb4-2ee97d1b4363.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff007662-734d-426f-b18d-d2df6126fb35.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff058bb8-007f-496d-9d36-598435f510f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff4047ec-572b-424b-9223-3e3813d2bed4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff47eb15-1766-4d9c-91c4-54366d64876c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff4e3bd8-e840-412a-8296-f2795a1459b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ff79aa27-f5bf-4a0f-80c0-5d9c021d088f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ffb44f7f-e530-473d-a139-0c72285c9290.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ffb77ba2-5c76-4eff-8380-cf6340023b4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/ffdfa689-8b89-4d29-a1d8-311c3ca17898.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/fff8c063-24ed-4e49-b2e7-92ecc61d185c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-003bb2bb2f8048ff8d82e140d6768986.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-0054c97f5be749f788e1c01c433c9115.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-00aa6d0adce54a9d918f1a38b8372c2e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-017fee5b46e14f03945630bb7ab17ea9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-035877f72f15435295d2e4f8d6b536ad.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-038bd1bf6a55476d89f0b5937628d13a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-04bf065ed0f14a58b0da6129b8016093.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-05c4c217469c422f92de101350ec9400.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-06b7ddf0057c4a5d95930f0bd5e1dbc4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-06e7106c9bc9402b8bf6329d2c447040.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-073a0470a4ec4ff2a6ba0799e9039dc2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-0b4bcb90105e4744aa93a10714575ac3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-0dc525a070a14e8090a335a73393f1d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-0ec7e48aee7745e4bcaf4c4bbdb1a2c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-11393c9f67724724bd56f939cf02ebe4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-126fd601948c4905be8ebd3d64d251ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-12cf877d572d410bb16d4ca6f564ea3c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-15105dd9234840fdb668d461fa1d307d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-158cdc8d9860477a99155597d8cb1344.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-16b6558405104d16a8e444b071123001.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-199558fd981940c09b27cafd987b9fa1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-1c595278212f420194f030abf44fdbaa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-1db4f410be5d4301a7db4dd93c354633.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-1e0e03b882c444ab8b2f99aadbec2fe3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-1e7c0114fed74cb785222864b1a35650.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-23238961f2a04a1e9f80b44fdeb4e307.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-23869a61529a46db9b4ce81cc20e47ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-248411c6c39947edaaffb00f8128d601.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-24fb3759898443de93bb2af28227c185.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-27878db80ac5406e8d1e22f7f0e398b5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2903b57f534a46e8945bc61210df371b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2a48a4c112c049d1932d58403af049bb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2afb39a20a30495f8a0c64c2a7a79640.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2bddfb62b85e4998980739ca245aabbc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2bf2eaeb62db4c7da90ff44da071fa36.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2bfd2d19f0a642169422d8795a4a41f8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2f02eed7ec354ab6b765d06d6681b43b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-2f074dc63fac480b86c576a99fbac1f1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3075ac8f7f5a470585a21313a5c5290d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-30a52df10f904682add27cdeea826a75.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3361899465d14a9cbe8cb3471f9ecaa6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-33c629350ac94ab9bd81330a4ec45b8e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-342983e650c849748937ce8519014196.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-34a18cd31c6240048fc0da3a7e256d9f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-36e452dd53324272b873710fb3f34aa5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-376271e4717b448691831e237ca3f5e5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3942baadb2b64993b39982f04a293b93.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-39b345d111414a719f5d938255490505.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3b2262276c38490299bd07cdaa5ad2dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3b9e9dc629204c16bed7abf8309c03dc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-3d1b98e280474621b0b20b51a70c56db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-404b75785a5345e4a71398da3077c053.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-405fa6b1f7d34e4aaef25c8088721f18.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-44128cbe8d7346b387de166f0b6a92b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-44b77d4661de424f8ed1105c65185c32.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-44ffa515686b4489a9e94c410e28e10a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4596032779da40739f0954ea2e7945fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-45be76c2e8224d86a8b41f1cbc80f675.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4653e96429a941da93f1b1f87f1a4958.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-46dca7bfd75246f3af5472c98cd2729f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-474f23f9895b4b64b5cdce0a354a59b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-496bb4ba378842069f430ed13a116e92.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4b61ede9395a425fbac942b15e01dbe0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4bbaa46681a3417fa272adc54ce18b0a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4c22ac9781bd4941afac598c4ef4145f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4dd735f56e9645f0934a964b403072f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4deb97cbc52e406dbae74bb88e18341f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-4e574f97f60b4b40916afbd2edb63aed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-5023dac7895a4b309a3d89aab78ad51f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-50e76d4574c64001a08a7cc08efd8795.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-52881c41004a42c48a58f315a511db78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-544aae364b514d3aaa6b93e7ba8f2171.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-54b92f9933c746e78361e0243d7addf5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-5668abbf6f6a4808b075aafafb0238c1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-56d910c8e6bf4f78a553ca74c8980b76.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-580bf8cf8a9741a8b5dfa4fb41c9ec01.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-59df25116f7446f6bbb91110588e582e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-5b431a6edd364b5cafacd9f806398707.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-5c108c538ef743f2a23b20f9c9cfbadf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-62122b2bc6624abf9363b1e9fc9a7ebe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6224ec9d749f45279fca4e9e785f739f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-62815393642c4a718ee15f63f231db78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-64971367fa804b339573ebe0988eb4a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-649a0c325e8246dd9afe5a8805263ce1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6842d13e35d640faad70e863dd331d90.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6859c29481d9419dacb8309b88114e13.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-697b1898c6094d53a7b476a64c5711c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-69cb51d65aad4dfe8953d9d2d0d0b439.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6a450ce298be43e08eb225a15ca75dae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6b77968b3ad241dda399ef0aa8a2f4d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6bc05b08e1dc4c4a98b5558609659531.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6befca6f260b47d6bf2e03e4f5edffec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6f40319ee5214013915628d4bd2ae9a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6f86af4468664fdd89b3651544938c7d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-6ff8553b755c426a8345e060f3de1cb2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7030dca6edfd441ca68662383afb2ff5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-71faddfb0e124e42908fea3d7ba64161.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7371436f8c5e4e2d9a5ea0fb27e3f0a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7518db167e4248178ff61b0bacf78248.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-75db05eab0ef47519857505a23fe66f2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7699706992f34008bca2ed20a9fc91a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-76adcab5fbf444d1a7fd36057165f282.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-773292f4a6624d0d9ee39f7aa910ec77.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7874710f69714cf68c5f93bd11ff5952.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7bd677be68c549429d911db72c606da5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-7de415e2d5f243ff8f9d53ddf0c8e105.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-81d1f0351a7b4eb2a5af709406fbb946.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8237fee75b4640bb9cdc6b6ab2916c97.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8303fd4f2872461a98fab8971d3b5602.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-846a11f610ae4fe0917a9560911a3c2a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-85b97695192446deae0659553029449c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8646d0704f5b4ebe9e50d7058ea8d02d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-873b4d3c577743eabef7fdb29c73b04f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-87766b7c2d39430db8a99111ee8c7d24.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-87a4e33ead574e12ba9face74d1149a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-88fb741c40b549bea3e4390e9bf459ed.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8b026cea134041cbb9437a2885a5f87f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8c813a25fe504bef997a39ffbf07936d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8e42b5e25e754b1b84eef7cd86fea3c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8ea80cc5a70741e6903732d62370dfae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-8eec572428c44cd1a26b18e95380551c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9041b40ae7444b89865466050c7e5f99.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-90ec6121a98840ae956f2a6551134a5a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9153a6af20434efdbd247f3706ebe073.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-92122ac86fc54a538baf042ad122be64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-93d716b55a584d6aac8d342d1898d28a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-95c9837ae10e4bc596faed5311f77792.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9628ca1c1c0941c392d462cef87024da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-972074756be946889819b71d14cf47ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-97407b3ed9ad4b8d9670e651e263c74b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-983c3f5540864a5e9f80fc0f96e48a72.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9c919ceac55e4284be672f23f9d10e98.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9ceae0abc0ab446b858d5cbff5db5329.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9dd25957304c468292a68dac9b8c4a06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-9ffce6e9d6cd4750aa692f93f5c3f032.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a0d17b00b63b466b8f0b09e053719e99.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a0dc0163e8d84b24ac91f1dd1ebe679e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a200518810ed4a90845db258ac961b67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a4a181ae337747a797a93fdce88ead91.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a59722387fd045928007c70419e9f603.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a6be387b57c84fb782eee1f87ad9576a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a70c8f14af1b4ba0953ec32a21606d7f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-a868e6abc5cf4f40a0c1cf597c621823.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-aa919d83173f492493177511dc5b3343.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-aafb4463c794412e92ba403eab3a5acc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-af20d8dbd0a64354a0c2fcf1b115d370.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-af5908e2d5134142853ec47ba535dccb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-af655db9666641afa2510e1d9d01e800.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-b07c01013c584c7e805f3e2561ed46a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-b0ceaca79726435295d3e489c145f1dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-b39bc8394319460cb19c1845a5ff40e8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-b6b96955da774e0891ad026f990b31a2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-b819fbe576b646bd8a0173be48109271.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-ba509c330c984b92b13e583f2b22d7e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-ba63677331164ee8aac2bfe1ca55c220.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-bd9912174402413eac20435beba3f00c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-bde61ca6989148f6a150f9bae77e21d9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-bea22bfb12934b5b92d19bece4a57c74.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-bea3e6c1396745189180b82148c1278a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c1d4f05bab3742d7a1333833a22f657a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c1ee7937b21449c18cc8abde33e3bb5f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c1fb8f7515394e2c820bc176047780e0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c227708e1ea9403a842b1436b893f198.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c2510f4823d043ff8b480fc0fe92e7c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c345bf5765b447969e349281ee970fa6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c367704d797243e39bff689538db8cc7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c36efe54b537463dba7059158a00e0d2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c50ff2b123e94bfeb9971f7bf8382b22.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c51a4f1a318245939e776041eccb3c9c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c54c0d1c5aed42319206ffb3b2dbaef9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c5c687b6c39b41b5912c440d5bfd7faa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-c9cb192cc4684d0dbbfc3b2c62f3e4b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-cb3b94c161264b6896cc3ba58e3902fd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-cd671377770d454293ffc3eabc72c3f1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-ce2df41cc4c849db8fde1df1a00dc122.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d01310339437475c963bac60445beacb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d0f09834f18d4d7eab3f12f6277aa1c5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d1569af3ea7240089e6b5c3428d65304.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d54a4035f1e64f5b8c510d90ea6ec270.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d568e7e611e748bb89c7e5da46b8ecd6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d70105ac8f844c5ca19ab95c052238c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d70d237a66444331b4d91d24d9ef73d5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d7daaacfd2634e7fb4c9e8943d568ed5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d7e7c1bee0bd48f6aca5acdf2d1b92b8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-d8b3d3bbf81048f4917167368def560e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-da44aca9226f4e8a955f36af0f4191fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-dbaadd14d0ed4dfe8c97829d96cda865.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-dc4ccf9c94e94500aca70184ac86059d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-dc96cd5b41a54897a819896cd37992bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-dd6c3a3b162d408ca2aee32bb4098692.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-de6c673247cf467e99b6adc996c5b471.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-dfd548b610614925928876b33d567dba.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e3003e793fd24de09669c906b5a4a0d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e388cf0ac5d4471a99a39a83d56fa719.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e46fa3381b5346049f29d9aed2f18154.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e4eec81fac78401198b7ad936ad64c39.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e5e170b128d34e86b5718a62d4710499.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e632fab5d0a7413c81d3331e519693b9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e895a7bbee764032ae658c7e040673fc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e94476d2912b48c08fda2b58331aca1b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e9bc0136d9074474b472fe413791aabf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-e9efa0330015499b8cf50af7753c3d89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-ea59ad0303d64378be16100fbd2d2526.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-eb8717996ca741fea954586ee8bee963.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-ecace70cf2424f3ab6dfe825c32ee849.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f067b7f94daa4fd3b1367e223a232ea0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f0c2970b4d6d433ba7c8cd244349cbd0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f2b8c7bc77554728a61c2a379c6ed917.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f35d942bfa984c95ae69ab43dea68d9b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f3f2f5cb126748459e1c77e577c2b6a6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-f8e5bd59e0e94d0889d9f1e5a05b22b1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-fd087378dfd845ce8c0d0501b6d363d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/id-fec6bb4c59794779814a2ded021d13c0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/elements/model.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/00ac2c5a-2461-407d-994a-522621827cbf.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/07a38777-a034-4a6b-8f90-6a9874ae035d.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/081ae1b1-7c1a-4a87-8f07-188d90448d4c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0a8ae1fb-a3b9-4baf-8f9c-a8752f200c6a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0b28e43c-0d28-4a27-9303-786f6b1bb04c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0c953c3c-994e-4cb7-9d3c-926515fefc17.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0cb18ec8-ed64-4cb6-864f-3416ca2d198a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0dabd82b-9a4c-499b-afe7-da988722d1da.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/0e94dc1b-2f53-4777-9d6c-07be9d48d3f6.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/1050ce85-8788-44a8-a1d8-c9de65b3cfe3.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/1618d303-0b6a-4c28-9e71-7bcac8c7d66c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/17db811f-5cd6-41b8-883f-23cc1373f61b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/197f2e6a-96de-4fa9-910c-0cbecb488bec.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/1b37c1aa-1336-4038-a23b-d067ed080a7a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/1d12d390-5fbb-4944-b82d-26660e3f4ad5.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/1dc1de6c-0489-4299-8f28-2096975a4838.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/20f74adb-5143-4ea4-be7c-abf026b2e8ae.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/2274bd38-980b-4e91-9a24-09578c013b80.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/28bb74a3-9728-447a-8d72-d7b54e58b591.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/2e5cfe74-9b17-476b-8ca6-d19b142642d3.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/3092fb53-e617-4dbe-ba08-ce4f5f7bc167.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/33e43de8-bac8-4d90-952e-12597a33df65.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/34b6537b-5534-4e64-95a5-00a8ffea9d02.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/34d88f16-ab1f-4e58-8515-6feaec2d62a5.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/39dc2922-646c-488f-8615-6fb7a16830b6.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/3c419c35-0e35-4e22-b6da-072d9243593c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/3efe0da1-7899-4949-a225-6db9d42f6926.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/453f404d-0a13-4dce-9c11-0afdf527d1e1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/49a674dc-c388-4056-b572-87e8cea77181.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/4c0f9830-5065-4922-902f-c3734c524545.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/50be8b01-7789-4f72-aa5c-39904f3ab3f0.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/51754659-d4ae-4a21-9ea2-dc58655a9456.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/53be9acc-0c21-42ea-a060-1d7839892b3c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/556e83e8-3dd4-456d-9268-efaff2bdf9ce.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5652c6c7-bf2d-4a43-8d90-e64c9b7c0a5c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/56c03b2e-15e1-4de3-96e6-332287b6e3e7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5894e7ec-d626-4c77-913a-f61b36267329.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/58a3ed11-fb28-498e-b912-bdc4a9e2a82b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/58c28a73-0190-4a6b-aee8-caf039021d60.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5b93b02c-895d-431e-8213-87b70e81c686.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5c18c323-3686-4f73-8cd7-408bd9a68394.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5c8c4ecb-89c2-4a11-869c-41d8330a0527.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/5dfea728-f0a4-4532-8255-aba4a475bff7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/68a12e8c-1eea-4e9b-9dc2-9cb4d89edec1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/6927b348-6f6d-4836-a6db-96bb2ecf0b8d.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/6d9d9c8b-f34f-4806-9efc-34affd994099.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/6f156b03-6698-4bbe-9376-d3339ff0cd4c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/6f7b7410-581f-4b4f-b7c1-e9a6585355c2.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/73dddaff-91c8-4a57-a28c-c26ceeef21f9.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/749152f0-1015-458b-8521-421b2e81cb7a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/75755276-fce7-4ea3-b17f-ca2c02528780.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/76654356-4818-4f4f-90ad-baa95663e02c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/7a3be38e-7df1-460a-b9d6-fdc735e4390a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/7b2f2dcd-d491-45e1-b992-28d946254450.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/7d3cb257-9703-446c-aed9-3ecca665e269.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/80554891-2aab-49d1-a6cd-453db07e4c43.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/81725358-dad2-4a80-8c44-fde5d3885b78.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/830c1fd0-0773-4ee6-8f2b-1a4b5fe24e7a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/83138509-14d7-4de5-99ea-63b35cfa95d1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/833a39e0-577e-4c9e-bb08-77887e473433.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/8757eca2-0d19-4277-ad5f-99bb6ef53f37.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/87605ad8-9255-43f7-bb06-e162a2987d31.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/87b7bc68-e167-46c5-ac00-3f63c6bb7e81.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/87f45453-8608-413d-b2d6-81088464613b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/8946283c-9e57-4ada-889a-2e2d4fc54143.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/897333ea-5006-4dbe-b4d5-ca6409789037.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/8c67dc20-3b7c-407d-9a60-c3b50d68169d.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/8c6df0a1-5306-4a77-9de8-97c9e6eae53e.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/8de5d237-d280-4656-80f5-1a63f42d7bc6.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/928f2592-d38b-4b62-8841-47f8c3ebafe7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/93cd208f-6cce-4cde-8d78-22e06fcf08dd.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/98e50d5c-3e4b-459d-a949-39de7587f5a0.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/9952fa14-77c7-46e9-adfd-0bce4049553b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/9af1c006-6e44-4e92-ac06-6ac705ecf85a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/9e19f7b6-5ff6-422c-8975-4979ab57f559.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/a282f8da-9466-42db-af61-280ed9930371.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/a58958bc-2048-499e-87f9-8048454190fa.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/af519ca8-a892-4627-a0f6-77b055f32da1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b1af5501-989f-434d-b71a-50eb3c66d827.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b4f7426b-79a2-4b67-882a-c519d04b651e.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b51aaed8-1e4c-44e8-9f39-7df7c0c369e2.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b6811261-01b1-4f92-b4ef-12c8cf959aa0.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b97b2681-7c53-47fe-b899-c6ac0de4d9a3.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/b99fd98c-4fe6-43e4-ba7e-ab2988eca3fb.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/ba306546-fc22-4827-bb65-f8e413886aa1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/bb583668-1273-44d7-a88d-e0d219b84679.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/bbedec01-ffef-4063-abba-1cc92da9e01a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/bca0768a-3306-4e57-933b-abc64a153d83.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/bdbd0690-4813-49f7-97a8-8521fc371d88.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/be6074eb-3739-42ae-b86b-e7cae6e1a458.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/bf091a49-e570-4600-a963-502436b84f38.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c095ad5e-c8cc-4638-b977-c7028c8b5d23.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c0e8af05-1bbb-4269-9ec7-a9cb6c5c8b66.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c112c25e-881d-4fd3-9a47-5b55d30592b3.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c35a5b8b-d429-4e24-8404-9c35817b4f37.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c4837879-c378-4e61-958f-9159fa9e26e7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c4d02459-d3d4-4668-a686-52e02e604ff4.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/c5bf6758-2670-4e3f-afe1-f7ba16f85f48.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/ca405cd2-d732-4bb8-bee4-20629c3b040c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/ca52fba9-1e26-4a94-bb10-64fe8e4ae01b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/cce8df8c-d0f9-41b7-a2d4-537de2d543bc.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/cf1387bd-5133-4b31-a98c-cb5bf94efa6b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d1466cf6-135e-4cac-8c54-ae5264889e0e.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d447a1a9-7ceb-41f4-82ad-1b262aa5539d.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d50f3e55-1a7b-4c89-a532-c674e8d5da29.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d5d0837f-827e-4e0e-b314-d7a9b0ae8ea1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d6b95a23-2d52-4b0b-85d9-03445792060c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d7a666ef-d86a-4d06-a528-9944474afedf.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d9861c01-5b14-4268-b3d3-9ced861e6c64.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/d9e6658b-3e9c-4a93-a33c-0b50f0c3f5d3.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/da2dae15-373c-4c05-9d8a-737dc810b8d7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/dbc1fb81-7d17-48e0-9c4a-f88680fb999b.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/df1dfad2-95e1-4097-a9db-4e6e6fbae550.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/df7375f9-514c-45b8-86e6-2e61789514f0.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/dfad9615-8898-4af2-af15-3f61c6696fd2.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e00fefee-f93d-4b74-a1a9-6f0aea5d1d0f.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e0eb4804-d8e0-4310-8a4f-a924dd158fdf.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e31d4bb8-c0c1-4412-9226-a4b3c5c770c6.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e392ffe6-321c-4b1d-9aa8-0bd58e497e1f.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e4579da6-9927-4c71-a95b-a76671512b3f.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/e4d750dd-f058-4c21-ac0f-cef0275dd5a7.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/f14b68e7-b98b-438a-947a-bc84327e424d.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/f1f89b71-14d0-474d-923c-ce5b175c21db.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/f4da23e4-ee58-49b3-b47e-45cb29aa1ac9.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/f5ab2a23-af9e-4b52-b065-667e3fba21e6.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/f95d3794-c6f4-4dbf-9ab9-b881633ff765.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/fca3d7f4-cc95-49d3-92e2-a386c5a089d1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/fceaf399-f380-446a-a6d8-3c57651d671c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/ff6be561-816d-49ba-8cb7-94f0f368352c.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/ffa8ffe4-2c55-4ccd-97c5-b621f759b585.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-113d3857ca7c493bab31f9cab968b684.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-28903a8b84594435bf7918184111b0eb.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-6ce8b12e754e4b128606d433d271f303.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-79aedba0196148b0b4d54ec26ec1cb1a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-8a9d1a27f6944591810a1cfb0980bf26.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-bb483777115f400fad270e8b35e2e950.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-c0b6b3025fc147f3b2d88fd0c29797e1.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-ef87fc757efa4d64a6df101e1e4f821a.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-f0ec0e39125846c0ae6ba61297ac595e.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/images/id-f9e30582684b4fa7988df040a957f347.png (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/033bfba6-c676-457e-bcb8-df5307c67782.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/0b4f1f23-0598-48eb-b309-0f890f2fd299.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/0c3144ea-9a38-474f-8c08-fdf86ede9cc4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/0d7753c2-202b-4304-a3e9-a7e509ea6e6c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/0f070b75-7c76-4273-b82c-dfb4f0572dee.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/102d56bc-0f36-4a60-82cb-31ec41d0b775.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/10e01e96-ae21-44ad-acfc-2aa14fdc2348.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/12c83ca9-5439-4dcf-a070-96d557f30d7c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/13885dad-d2e8-4952-9123-0bfec146b900.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/18ac3e97-4019-4490-b2b4-3fbb27185e4b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/1a1630fa-42a0-47a1-acf6-4adab8731424.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/1b2c23e1-4c89-4aa8-b6d7-2cbc2451cb65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/1d661f7b-f717-415d-91b6-915ffc2fb596.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/1e5838f4-5d4e-44f5-9ab7-754b8adece5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/2045f098-4462-45e0-8614-e495e8881524.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/207b8273-9c52-4cee-90f5-78845dfa2259.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/24932ef1-59d4-4d7a-aa1a-d776223f3e9e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/250f51f5-6058-4c95-9142-4559dc5943b4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/265c7dfa-f409-4fb0-9b70-a4d3348d2d95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/2987faaa-f600-45b9-b81a-c98fce1bfb89.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/2c2906af-9e78-4e8f-a618-18420d077b94.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/30a18dae-cc16-4ce4-848e-375279913095.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/32cb2662-9dd4-49a5-b180-05500b49bc37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3474c659-2c87-444b-9301-303f399f4d3b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/399899fe-2820-4a9c-9f9d-7bd9c14eee07.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3a1c328d-6cb3-40cd-a80e-b2dad9f0dcf3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3a4c794b-7518-423c-bed1-199314183786.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3a5b91b9-8399-4902-948e-93f246bd6682.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3ab3c063-07fa-40c1-b70b-63aef169f79a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3dec8287-929c-4914-a65c-e7c8cc9d0369.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3f549ce6-5112-4cfa-8355-3b46cd3cdfb0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/3fbe51cf-4dc3-4783-b8a1-fdb8f2d683c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/42dfb378-50a8-4a8f-907f-cd9229495263.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/466e7afd-8afa-47bf-a522-a3cc419fb8c9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/4d81bce1-0376-40be-bbaf-9a424612988e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/4fea83ff-517d-44b2-a36e-f2d86e1e4026.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/514c4c1c-3c68-414c-b6de-891943cb92fe.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/5172da0d-0395-478f-a6bf-6d21c756690d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/51907461-ebfa-47b7-a1a6-4578d7b3d41a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/560fae54-387b-4c1d-91f4-3800f4dc1229.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/56620451-0149-4e7d-b12c-399dd8e20524.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/57233f67-e351-4052-8ab7-28a5a5cc30c4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/5a4f8a45-6c09-4843-83a9-6c107e32f91a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/5b604a10-b789-4eeb-8af7-087080275410.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/5c8f6839-6e86-495b-a93f-8a1d60695207.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/63ea5c59-638e-4888-a761-cf8e4a0b7899.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/6ba3cf1b-ace0-4b65-92c6-cfe738d9218a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/6ebf4796-5f47-4ab1-9738-ffd6747b05ab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/717c6738-8976-4c8a-9058-7bc4395292a9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/764dad9e-e8b4-4846-9271-c67dd4858e9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/76ccf333-cf6d-4e80-85da-f2b9f4747f9d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/7984926f-a6c6-481d-9ecc-edb55c6b33bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/79d28ab1-7799-492b-b0c9-22639cb62694.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/7a403f55-646f-4c91-b6ac-40cdad6b3fc3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/7baade07-e4a9-4228-881b-7881c25343f4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/7cba96cb-f095-4dfc-a339-741b52eb9391.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/82225dde-06bd-4c33-a738-15e66a5817d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/836d5aaa-28e8-49c6-b644-95c3cf0ddadd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/8696b2f3-c51a-4623-9c6e-45ca1fcea89e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/8b5f7051-0147-4f97-b2f7-2580c862f7d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/8c2385e9-cb37-4ca8-a95f-38d2eabff37a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/8d00c49c-80fd-470f-a85b-6f87144dd182.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/94242728-a56a-494b-a1c1-5dae19abc5fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/94e89825-e359-43ad-b877-64ff6e6ccda2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/96c8bc99-f7cc-496f-8fcc-492ca4c94064.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/9804c2dd-ae55-48f5-bcae-5675c84eefd7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/9a3bcc33-40c5-4423-b79e-b22d4523041d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/9fe89e7a-07d2-487c-8c3d-d3f0eaa952a1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a1635b11-270d-40d2-95c7-ffa85f278270.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a33490d0-ec83-4f77-bdd0-88cd3ff9dd65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a4329bac-4309-477a-bf39-42311a612385.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a4e8f577-1b7f-44f9-beca-7e208578d858.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a5211f28-49d4-4d08-8a5d-728450a3345c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a57fd394-a9af-479b-ae5b-7d227e0b23d4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/a7a61185-f8a5-4dd2-8d30-652716fc8df7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/aa0a8dd4-3255-4a1d-a901-b0b5084e33cb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ad46b320-30a2-452b-9403-acaa9ceccd59.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/aeda3a11-8c1a-42e1-9a47-3ebfea32990a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/af22eaeb-d7a1-4cdc-a716-d8f77e9e42f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/b31129c6-e897-4857-9542-64e924a7c562.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/b4a1cfb8-033f-4d21-b282-aa61831a1652.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/b6eb1d30-55ef-4d0f-9db6-1a54be1001c8.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/bcb8d9c8-9625-486d-b83d-05cd811a5b52.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/bee94f87-b135-49a0-bd1e-e6c9c5a27393.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/bf6dc26d-67b2-4d12-8085-c567f4ab1f06.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/c3820ec2-f46d-4b2b-9f5c-efd2e29e3a69.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ca99a74d-1ae8-414d-941b-068a852be16c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ce62fd4a-a29a-4dac-8be3-2e1c81509cb1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/cf8014f7-f203-455f-9c37-a224d684701e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/d1d3734b-651c-44a6-ad68-918a9ee45505.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/d27f302c-5fe1-4d00-bb42-ce7e2ccda17d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/d44206ca-0812-4995-91e7-7e26afd2678e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/d5abfe83-15e1-4dde-a8e3-ff87e3a66318.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/da49292c-4502-4aff-bbac-172429f56a95.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/da95fc1f-d18a-4bd4-94b1-68fc5adce114.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/db7adce0-47e1-4833-9aa4-94bbb92b03a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/dba8215d-c9af-49f9-acc7-89f5795cbd9e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/dd29af9c-e203-4fda-b8cd-fe263a3ce322.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/df4fcca8-9154-4e6b-9d64-bb66506fa23a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/dfbeaaac-b325-4dc8-bd90-21c79e10ff65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/e48eedc6-f167-4ce3-b8da-cae8f82b354a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/e5ffb349-a56e-4ba6-be01-3348d74496ef.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/e9151148-c948-438b-b1cb-49929f8117ea.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ebaa041e-05f4-4de2-9c15-fdbdfbcd0833.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ec038320-b592-4deb-aea2-ec9a43a24557.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/ec8a7612-2548-4495-8bfc-60de48b46ddc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/f4238e37-714d-4c7a-882c-dcdd692d60c5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/f5aa952b-582b-4be5-9a78-59b1618dda0d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/f8a6cdc0-f5d5-4e09-88d1-7d0b5fc5acff.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/f9abfc38-1eae-46ab-981c-0946b7119850.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/fce30b86-959e-4cfb-baad-76f9c1c57110.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/fd643eef-3e8e-4fc8-9f6c-feaca4261821.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/fdd290d0-d04d-414c-bd44-fc04f9a7f9ca.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/fe94540e-ecaa-4e09-b4f3-637fcf0f55a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-0a111de0fb7f46fdbbb366be06e20255.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-0a3c87b2fee646eb812fbb7e54ca65d6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-0ac34a39b9d14b718ef129f4a8240882.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-19d2e4fdcf9042cdb1aeb07ae4c12543.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-1f8ff939efee48c0b5364a62eeca2937.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-21db9389365b467498bffd6e3ca443a4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-222196c353e54e21a807429b561d0098.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-2e68487b6c8d4385868ddd5de8682f67.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-425985f475b34ebdb7dbae20fdf475df.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-53097b85240248faa87a68e8b3f8fe15.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-570715fedad14cdabd29280e30b7fcfa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-64f083e7063f49ba901f7c49f1d2d65a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-6581a6a7721d45b680bce5c74374af25.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-665fd930a19143dcaae0f3bf00c20dab.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-831d168a71be464c8ffec86945842b5b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-83bf17d74ee74d11b01243580c9576f3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-86f60df73d244def868ef3ccc8d7850a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-88dbcd93d6f04ca7ad4bdfc0834c8552.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-8a550914dc6343859ca1afbe6445f1f7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-8dd4f9d4322f4b958d56d7cdb43f2116.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-9b03593cdc38451b96d238639545dfd1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-a26898543cdd42f4a2657892f94c6334.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-a2a0903018f44876a3a51cf6ca4a187d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-b512da9572a549288aa1d4a533fc65fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-bbb2f75527ee4785bed13d46895cc16d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-dda8cb93a7f64a9da2db17a065929648.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-e48891edd4cd4ad0beb7714cf3003292.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/objects/id-fe1d307dc58445079dac8d7f692119f5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/00ac2c5a-2461-407d-994a-522621827cbf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/07a38777-a034-4a6b-8f90-6a9874ae035d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/081ae1b1-7c1a-4a87-8f07-188d90448d4c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0a8ae1fb-a3b9-4baf-8f9c-a8752f200c6a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0b28e43c-0d28-4a27-9303-786f6b1bb04c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0c953c3c-994e-4cb7-9d3c-926515fefc17.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0cb18ec8-ed64-4cb6-864f-3416ca2d198a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0dabd82b-9a4c-499b-afe7-da988722d1da.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/0e94dc1b-2f53-4777-9d6c-07be9d48d3f6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/1050ce85-8788-44a8-a1d8-c9de65b3cfe3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/1618d303-0b6a-4c28-9e71-7bcac8c7d66c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/17db811f-5cd6-41b8-883f-23cc1373f61b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/197f2e6a-96de-4fa9-910c-0cbecb488bec.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/1b37c1aa-1336-4038-a23b-d067ed080a7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/1d12d390-5fbb-4944-b82d-26660e3f4ad5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/1dc1de6c-0489-4299-8f28-2096975a4838.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/20f74adb-5143-4ea4-be7c-abf026b2e8ae.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/2274bd38-980b-4e91-9a24-09578c013b80.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/28bb74a3-9728-447a-8d72-d7b54e58b591.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/2e5cfe74-9b17-476b-8ca6-d19b142642d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/3092fb53-e617-4dbe-ba08-ce4f5f7bc167.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/33e43de8-bac8-4d90-952e-12597a33df65.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/34b6537b-5534-4e64-95a5-00a8ffea9d02.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/34d88f16-ab1f-4e58-8515-6feaec2d62a5.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/39dc2922-646c-488f-8615-6fb7a16830b6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/3c419c35-0e35-4e22-b6da-072d9243593c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/3efe0da1-7899-4949-a225-6db9d42f6926.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/453f404d-0a13-4dce-9c11-0afdf527d1e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/49a674dc-c388-4056-b572-87e8cea77181.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/4c0f9830-5065-4922-902f-c3734c524545.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/50be8b01-7789-4f72-aa5c-39904f3ab3f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/51754659-d4ae-4a21-9ea2-dc58655a9456.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/53be9acc-0c21-42ea-a060-1d7839892b3c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/556e83e8-3dd4-456d-9268-efaff2bdf9ce.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5652c6c7-bf2d-4a43-8d90-e64c9b7c0a5c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/56c03b2e-15e1-4de3-96e6-332287b6e3e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5894e7ec-d626-4c77-913a-f61b36267329.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/58a3ed11-fb28-498e-b912-bdc4a9e2a82b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/58c28a73-0190-4a6b-aee8-caf039021d60.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5b93b02c-895d-431e-8213-87b70e81c686.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5c18c323-3686-4f73-8cd7-408bd9a68394.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5c8c4ecb-89c2-4a11-869c-41d8330a0527.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/5dfea728-f0a4-4532-8255-aba4a475bff7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/68a12e8c-1eea-4e9b-9dc2-9cb4d89edec1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/6927b348-6f6d-4836-a6db-96bb2ecf0b8d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/6d9d9c8b-f34f-4806-9efc-34affd994099.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/6f156b03-6698-4bbe-9376-d3339ff0cd4c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/6f7b7410-581f-4b4f-b7c1-e9a6585355c2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/73dddaff-91c8-4a57-a28c-c26ceeef21f9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/749152f0-1015-458b-8521-421b2e81cb7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/75755276-fce7-4ea3-b17f-ca2c02528780.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/76654356-4818-4f4f-90ad-baa95663e02c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/7a3be38e-7df1-460a-b9d6-fdc735e4390a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/7b2f2dcd-d491-45e1-b992-28d946254450.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/7d3cb257-9703-446c-aed9-3ecca665e269.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/80554891-2aab-49d1-a6cd-453db07e4c43.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/81725358-dad2-4a80-8c44-fde5d3885b78.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/830c1fd0-0773-4ee6-8f2b-1a4b5fe24e7a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/83138509-14d7-4de5-99ea-63b35cfa95d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/833a39e0-577e-4c9e-bb08-77887e473433.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/8757eca2-0d19-4277-ad5f-99bb6ef53f37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/87605ad8-9255-43f7-bb06-e162a2987d31.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/87b7bc68-e167-46c5-ac00-3f63c6bb7e81.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/87f45453-8608-413d-b2d6-81088464613b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/8946283c-9e57-4ada-889a-2e2d4fc54143.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/897333ea-5006-4dbe-b4d5-ca6409789037.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/8c67dc20-3b7c-407d-9a60-c3b50d68169d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/8c6df0a1-5306-4a77-9de8-97c9e6eae53e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/8de5d237-d280-4656-80f5-1a63f42d7bc6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/928f2592-d38b-4b62-8841-47f8c3ebafe7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/93cd208f-6cce-4cde-8d78-22e06fcf08dd.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/98e50d5c-3e4b-459d-a949-39de7587f5a0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/9952fa14-77c7-46e9-adfd-0bce4049553b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/9af1c006-6e44-4e92-ac06-6ac705ecf85a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/9e19f7b6-5ff6-422c-8975-4979ab57f559.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/a282f8da-9466-42db-af61-280ed9930371.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/a58958bc-2048-499e-87f9-8048454190fa.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/af519ca8-a892-4627-a0f6-77b055f32da1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b1af5501-989f-434d-b71a-50eb3c66d827.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b4f7426b-79a2-4b67-882a-c519d04b651e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b51aaed8-1e4c-44e8-9f39-7df7c0c369e2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b6811261-01b1-4f92-b4ef-12c8cf959aa0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b97b2681-7c53-47fe-b899-c6ac0de4d9a3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/b99fd98c-4fe6-43e4-ba7e-ab2988eca3fb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/ba306546-fc22-4827-bb65-f8e413886aa1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/bb583668-1273-44d7-a88d-e0d219b84679.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/bbedec01-ffef-4063-abba-1cc92da9e01a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/bca0768a-3306-4e57-933b-abc64a153d83.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/bdbd0690-4813-49f7-97a8-8521fc371d88.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/be6074eb-3739-42ae-b86b-e7cae6e1a458.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/bf091a49-e570-4600-a963-502436b84f38.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c095ad5e-c8cc-4638-b977-c7028c8b5d23.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c0e8af05-1bbb-4269-9ec7-a9cb6c5c8b66.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c112c25e-881d-4fd3-9a47-5b55d30592b3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c35a5b8b-d429-4e24-8404-9c35817b4f37.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c4837879-c378-4e61-958f-9159fa9e26e7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c4d02459-d3d4-4668-a686-52e02e604ff4.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/c5bf6758-2670-4e3f-afe1-f7ba16f85f48.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/ca405cd2-d732-4bb8-bee4-20629c3b040c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/ca52fba9-1e26-4a94-bb10-64fe8e4ae01b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/cce8df8c-d0f9-41b7-a2d4-537de2d543bc.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/cf1387bd-5133-4b31-a98c-cb5bf94efa6b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d1466cf6-135e-4cac-8c54-ae5264889e0e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d447a1a9-7ceb-41f4-82ad-1b262aa5539d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d50f3e55-1a7b-4c89-a532-c674e8d5da29.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d5d0837f-827e-4e0e-b314-d7a9b0ae8ea1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d6b95a23-2d52-4b0b-85d9-03445792060c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d7a666ef-d86a-4d06-a528-9944474afedf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d9861c01-5b14-4268-b3d3-9ced861e6c64.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/d9e6658b-3e9c-4a93-a33c-0b50f0c3f5d3.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/da2dae15-373c-4c05-9d8a-737dc810b8d7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/dbc1fb81-7d17-48e0-9c4a-f88680fb999b.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/df1dfad2-95e1-4097-a9db-4e6e6fbae550.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/df7375f9-514c-45b8-86e6-2e61789514f0.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/dfad9615-8898-4af2-af15-3f61c6696fd2.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e00fefee-f93d-4b74-a1a9-6f0aea5d1d0f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e0eb4804-d8e0-4310-8a4f-a924dd158fdf.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e31d4bb8-c0c1-4412-9226-a4b3c5c770c6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e392ffe6-321c-4b1d-9aa8-0bd58e497e1f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e4579da6-9927-4c71-a95b-a76671512b3f.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/e4d750dd-f058-4c21-ac0f-cef0275dd5a7.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/f14b68e7-b98b-438a-947a-bc84327e424d.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/f1f89b71-14d0-474d-923c-ce5b175c21db.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/f4da23e4-ee58-49b3-b47e-45cb29aa1ac9.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/f5ab2a23-af9e-4b52-b065-667e3fba21e6.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/f95d3794-c6f4-4dbf-9ab9-b881633ff765.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/fca3d7f4-cc95-49d3-92e2-a386c5a089d1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/fceaf399-f380-446a-a6d8-3c57651d671c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/ff6be561-816d-49ba-8cb7-94f0f368352c.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/ffa8ffe4-2c55-4ccd-97c5-b621f759b585.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-113d3857ca7c493bab31f9cab968b684.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-28903a8b84594435bf7918184111b0eb.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-6ce8b12e754e4b128606d433d271f303.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-79aedba0196148b0b4d54ec26ec1cb1a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-8a9d1a27f6944591810a1cfb0980bf26.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-bb483777115f400fad270e8b35e2e950.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-c0b6b3025fc147f3b2d88fd0c29797e1.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-ef87fc757efa4d64a6df101e1e4f821a.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-f0ec0e39125846c0ae6ba61297ac595e.html (100%) rename app/{dataviz => project}/archimate-smart-gov/54e87e47-f01c-49fe-af55-2068f4564bd2/views/id-f9e30582684b4fa7988df040a957f347.html (100%) rename app/{dataviz => project}/archimate-smart-gov/css/i18n.css (100%) rename app/{dataviz => project}/archimate-smart-gov/css/i18n/en.css (100%) rename app/{dataviz => project}/archimate-smart-gov/css/model.css (100%) rename app/{dataviz => project}/archimate-smart-gov/elements/empty-element.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/access.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/aggregation.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_collaboration.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_component.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_event.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_function.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_interaction.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_interface.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_process.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/application_service.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/artifact.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/assessment.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/assignment.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/association.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_actor.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_collaboration.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_event.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_function.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_interaction.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_interface.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_object.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_process.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_role.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/business_service.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/canvas_block.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/canvas_connection.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/canvas_diagram.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/canvas_image.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/canvas_sticky.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/capability.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/communication_network.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/composition.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/connection.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/constraint.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/contract.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/course_of_action.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/data_object.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/deliverable.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/device.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/diagram_image.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/distribution_network.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/driver.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/equipment.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/facility.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/flow.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/folder.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/gap.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/goal.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/group.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/grouping.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/implementation_event.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/influence.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/junction.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/location.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/material.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/meaning.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/model.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/node.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/note.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/outcome.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/path.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/plateau.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/principle.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/product.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/realization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/representation.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/requirement.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/resource.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/serving.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/sketch.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/sketch_actor.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/sketch_sticky.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/specialization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/stakeholder.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/style.css (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/system_software.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_collaboration.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_event.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_function.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_interaction.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_interface.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_process.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/technology_service.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/triggering.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/value.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/value_stream.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/view.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/view_ref.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_application_cooperation.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_application_structure.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_application_usage.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_business_process_cooperation.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_capability.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_goal_realization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_implementation_deployment.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_implementation_migration.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_information_structure.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_layered.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_migration.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_motivation.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_organization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_outcome_realization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_physical.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_product.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_project.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_requirements_realization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_resource.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_service_realization.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_stakeholder.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_strategy.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_technology.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_technology_usage.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/vp_value_stream.html (100%) rename app/{dataviz => project}/archimate-smart-gov/hints/workpackage.html (100%) rename app/{dataviz => project}/archimate-smart-gov/index.html (100%) rename app/{dataviz => project}/archimate-smart-gov/js/frame.js (100%) rename app/{dataviz => project}/archimate-smart-gov/js/imageMapResizer.min.js (100%) rename app/{dataviz => project}/archimate-smart-gov/js/model.js (100%) rename app/{dataviz => project}/archimate-smart-gov/js/url-polyfill.min.js (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/alasql/alasql.min.js (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/bootstrap/css/bootstrap-3.3.2.min.css (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/bootstrap/css/bootstrap-theme-3.3.2.min.css (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/bootstrap/css/bootstrap.min.yeti.css (100%) create mode 100644 app/project/archimate-smart-gov/lib/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 app/project/archimate-smart-gov/lib/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 app/project/archimate-smart-gov/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 app/project/archimate-smart-gov/lib/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 app/project/archimate-smart-gov/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename app/{dataviz => project}/archimate-smart-gov/lib/bootstrap/js/bootstrap-3.3.2.min.js (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/jquery-ui-layout/css/layout-default-1.4.4.css (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/jquery-ui-layout/js/jquery.layout-1.4.4.js (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/jquery-ui/css/jquery-ui-1.11.2.min.css (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/jquery-ui/js/jquery-ui-1.11.2.min.js (100%) rename app/{dataviz => project}/archimate-smart-gov/lib/jquery/js/jquery-1.11.2.min.js (100%) rename app/{dataviz => project}/archimate-viewer/archimate/ArchiSurance_V3.archimate (100%) rename app/{dataviz => project}/archimate-viewer/archimate/everything.archimate (100%) rename app/{dataviz => project}/archimate-viewer/asset-manifest.json (100%) rename app/{dataviz => project}/archimate-viewer/favicon-32x32.png (100%) rename app/{dataviz => project}/archimate-viewer/index.html (100%) rename app/{dataviz => project}/archimate-viewer/logo192.png (100%) rename app/{dataviz => project}/archimate-viewer/logo512.png (100%) rename app/{dataviz => project}/archimate-viewer/manifest.json (100%) rename app/{dataviz => project}/archimate-viewer/precache-manifest.85446bd97476a4a2675cfe1500a8e5b7.js (100%) rename app/{dataviz => project}/archimate-viewer/robots.txt (100%) rename app/{dataviz => project}/archimate-viewer/service-worker.js (100%) rename app/{dataviz => project}/archimate-viewer/static/css/2.42c6bb7e.chunk.css (100%) rename app/{dataviz => project}/archimate-viewer/static/css/main.8196904e.chunk.css (100%) rename app/{dataviz => project}/archimate-viewer/static/js/2.8a1908c2.chunk.js (100%) rename app/{dataviz => project}/archimate-viewer/static/js/main.fa5da65d.chunk.js (100%) rename app/{dataviz => project}/archimate-viewer/static/js/runtime-main.89b10739.js (100%) rename app/{dataviz => project}/gui-sparql-data.md (100%) create mode 100644 app/project/loan-application.cmmn rename app/{dataviz => project}/sparql-data-gui/gui-sparql.html (100%) rename app/{dataviz => project}/sparql-data-gui/index.html (100%) rename app/{dataviz => project}/sparql-data-gui/lib/ontodia-custom.min.js (100%) rename app/{dataviz => project}/sparql-data-gui/lib/react-dom.min.js (100%) rename app/{dataviz => project}/sparql-data-gui/lib/react.min.js (100%) rename app/{dataviz => project}/sparql-data-gui/lib/script.js (100%) rename app/{dataviz => project}/sparql-data-gui/lib/style.css (100%) diff --git a/app/dataviz/city-roads/assets/index.c4b0dabc.js b/app/dataviz/city-roads/assets/index.c4b0dabc.js new file mode 100644 index 00000000..f38ae887 --- /dev/null +++ b/app/dataviz/city-roads/assets/index.c4b0dabc.js @@ -0,0 +1,468 @@ +var Xl=Object.defineProperty;var Zl=(e,t,n)=>t in e?Xl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ql=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var en=(e,t,n)=>(Zl(e,typeof t!="symbol"?t+"":t,n),n);var em=Ql((nm,vr)=>{const Jl=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}};Jl();function Ji(e,t){const n=Object.create(null),r=e.split(",");for(let i=0;i!!n[i.toLowerCase()]:i=>!!n[i]}const eu="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",tu=Ji(eu);function fa(e){return!!e||e===""}function je(e){if(ae(e)){const t={};for(let n=0;n{if(n){const r=n.split(ru);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Qt(e){let t="";if(Oe(e))t=e;else if(ae(e))for(let n=0;nOe(e)?e:e==null?"":ae(e)||ze(e)&&(e.toString===pa||!ce(e.toString))?JSON.stringify(e,ca,2):String(e),ca=(e,t)=>t&&t.__v_isRef?ca(e,t.value):un(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i])=>(n[`${r} =>`]=i,n),{})}:da(t)?{[`Set(${t.size})`]:[...t.values()]}:ze(t)&&!ae(t)&&!va(t)?String(t):t,_e={},ln=[],gt=()=>{},ou=()=>!1,su=/^on[^a-z]/,Lr=e=>su.test(e),eo=e=>e.startsWith("onUpdate:"),We=Object.assign,to=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},au=Object.prototype.hasOwnProperty,ge=(e,t)=>au.call(e,t),ae=Array.isArray,un=e=>kr(e)==="[object Map]",da=e=>kr(e)==="[object Set]",ce=e=>typeof e=="function",Oe=e=>typeof e=="string",no=e=>typeof e=="symbol",ze=e=>e!==null&&typeof e=="object",ha=e=>ze(e)&&ce(e.then)&&ce(e.catch),pa=Object.prototype.toString,kr=e=>pa.call(e),lu=e=>kr(e).slice(8,-1),va=e=>kr(e)==="[object Object]",ro=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,lr=Ji(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Rr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},uu=/-(\w)/g,Et=Rr(e=>e.replace(uu,(t,n)=>n?n.toUpperCase():"")),fu=/\B([A-Z])/g,mn=Rr(e=>e.replace(fu,"-$1").toLowerCase()),Br=Rr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ei=Rr(e=>e?`on${Br(e)}`:""),gr=(e,t)=>!Object.is(e,t),ur=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},_i=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Vo;const cu=()=>Vo||(Vo=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let bt;class du{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&bt&&(this.parent=bt,this.index=(bt.scopes||(bt.scopes=[])).push(this)-1)}run(t){if(this.active){const n=bt;try{return bt=this,t()}finally{bt=n}}}on(){bt=this}off(){bt=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},ga=e=>(e.w&Ut)>0,ma=e=>(e.n&Ut)>0,pu=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=r)&&a.push(l)});else switch(n!==void 0&&a.push(s.get(n)),t){case"add":ae(e)?ro(n)&&a.push(s.get("length")):(a.push(s.get(Xt)),un(e)&&a.push(s.get(Ai)));break;case"delete":ae(e)||(a.push(s.get(Xt)),un(e)&&a.push(s.get(Ai)));break;case"set":un(e)&&a.push(s.get(Xt));break}if(a.length===1)a[0]&&Ti(a[0]);else{const l=[];for(const u of a)u&&l.push(...u);Ti(io(l))}}function Ti(e,t){const n=ae(e)?e:[...e];for(const r of n)r.computed&&zo(r);for(const r of n)r.computed||zo(r)}function zo(e,t){(e!==ht||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const gu=Ji("__proto__,__v_isRef,__isVue"),ba=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(no)),mu=so(),yu=so(!1,!0),wu=so(!0),Ho=bu();function bu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=xe(this);for(let o=0,s=this.length;o{e[t]=function(...n){yn();const r=xe(this)[t].apply(this,n);return wn(),r}}),e}function so(e=!1,t=!1){return function(r,i,o){if(i==="__v_isReactive")return!e;if(i==="__v_isReadonly")return e;if(i==="__v_isShallow")return t;if(i==="__v_raw"&&o===(e?t?Du:Aa:t?Ca:Ea).get(r))return r;const s=ae(r);if(!e&&s&&ge(Ho,i))return Reflect.get(Ho,i,o);const a=Reflect.get(r,i,o);return(no(i)?ba.has(i):gu(i))||(e||nt(r,"get",i),t)?a:Ye(a)?s&&ro(i)?a:a.value:ze(a)?e?Ta(a):uo(a):a}}const xu=xa(),_u=xa(!0);function xa(e=!1){return function(n,r,i,o){let s=n[r];if(kn(s)&&Ye(s)&&!Ye(i))return!1;if(!e&&!kn(i)&&(Si(i)||(i=xe(i),s=xe(s)),!ae(n)&&Ye(s)&&!Ye(i)))return s.value=i,!0;const a=ae(n)&&ro(r)?Number(r)e,Ir=e=>Reflect.getPrototypeOf(e);function Wn(e,t,n=!1,r=!1){e=e.__v_raw;const i=xe(e),o=xe(t);n||(t!==o&&nt(i,"get",t),nt(i,"get",o));const{has:s}=Ir(i),a=r?ao:n?ho:co;if(s.call(i,t))return a(e.get(t));if(s.call(i,o))return a(e.get(o));e!==i&&e.get(t)}function qn(e,t=!1){const n=this.__v_raw,r=xe(n),i=xe(e);return t||(e!==i&&nt(r,"has",e),nt(r,"has",i)),e===i?n.has(e):n.has(e)||n.has(i)}function Gn(e,t=!1){return e=e.__v_raw,!t&&nt(xe(e),"iterate",Xt),Reflect.get(e,"size",e)}function $o(e){e=xe(e);const t=xe(this);return Ir(t).has.call(t,e)||(t.add(e),Lt(t,"add",e,e)),this}function jo(e,t){t=xe(t);const n=xe(this),{has:r,get:i}=Ir(n);let o=r.call(n,e);o||(e=xe(e),o=r.call(n,e));const s=i.call(n,e);return n.set(e,t),o?gr(t,s)&&Lt(n,"set",e,t):Lt(n,"add",e,t),this}function Wo(e){const t=xe(this),{has:n,get:r}=Ir(t);let i=n.call(t,e);i||(e=xe(e),i=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return i&&Lt(t,"delete",e,void 0),o}function qo(){const e=xe(this),t=e.size!==0,n=e.clear();return t&&Lt(e,"clear",void 0,void 0),n}function Yn(e,t){return function(r,i){const o=this,s=o.__v_raw,a=xe(s),l=t?ao:e?ho:co;return!e&&nt(a,"iterate",Xt),s.forEach((u,f)=>r.call(i,l(u),l(f),o))}}function Kn(e,t,n){return function(...r){const i=this.__v_raw,o=xe(i),s=un(o),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=i[e](...r),f=n?ao:t?ho:co;return!t&&nt(o,"iterate",l?Ai:Xt),{next(){const{value:d,done:h}=u.next();return h?{value:d,done:h}:{value:a?[f(d[0]),f(d[1])]:f(d),done:h}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:this}}function Mu(){const e={get(o){return Wn(this,o)},get size(){return Gn(this)},has:qn,add:$o,set:jo,delete:Wo,clear:qo,forEach:Yn(!1,!1)},t={get(o){return Wn(this,o,!1,!0)},get size(){return Gn(this)},has:qn,add:$o,set:jo,delete:Wo,clear:qo,forEach:Yn(!1,!0)},n={get(o){return Wn(this,o,!0)},get size(){return Gn(this,!0)},has(o){return qn.call(this,o,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:Yn(!0,!1)},r={get(o){return Wn(this,o,!0,!0)},get size(){return Gn(this,!0)},has(o){return qn.call(this,o,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:Yn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Kn(o,!1,!1),n[o]=Kn(o,!0,!1),t[o]=Kn(o,!1,!0),r[o]=Kn(o,!0,!0)}),[e,n,t,r]}const[Pu,Fu,Lu,ku]=Mu();function lo(e,t){const n=t?e?ku:Lu:e?Fu:Pu;return(r,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(ge(n,i)&&i in r?n:r,i,o)}const Ru={get:lo(!1,!1)},Bu={get:lo(!1,!0)},Iu={get:lo(!0,!1)},Ea=new WeakMap,Ca=new WeakMap,Aa=new WeakMap,Du=new WeakMap;function Ou(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Nu(e){return e.__v_skip||!Object.isExtensible(e)?0:Ou(lu(e))}function uo(e){return kn(e)?e:fo(e,!1,_a,Ru,Ea)}function Vu(e){return fo(e,!1,Su,Bu,Ca)}function Ta(e){return fo(e,!0,Tu,Iu,Aa)}function fo(e,t,n,r,i){if(!ze(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=i.get(e);if(o)return o;const s=Nu(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return i.set(e,a),a}function fn(e){return kn(e)?fn(e.__v_raw):!!(e&&e.__v_isReactive)}function kn(e){return!!(e&&e.__v_isReadonly)}function Si(e){return!!(e&&e.__v_isShallow)}function Sa(e){return fn(e)||kn(e)}function xe(e){const t=e&&e.__v_raw;return t?xe(t):e}function Ma(e){return mr(e,"__v_skip",!0),e}const co=e=>ze(e)?uo(e):e,ho=e=>ze(e)?Ta(e):e;function Uu(e){Nt&&ht&&(e=xe(e),wa(e.dep||(e.dep=io())))}function zu(e,t){e=xe(e),e.dep&&Ti(e.dep)}function Ye(e){return!!(e&&e.__v_isRef===!0)}function Hu(e){return Ye(e)?e.value:e}const $u={get:(e,t,n)=>Hu(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return Ye(i)&&!Ye(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Pa(e){return fn(e)?e:new Proxy(e,$u)}class ju{constructor(t,n,r,i){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new oo(t,()=>{this._dirty||(this._dirty=!0,zu(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=r}get value(){const t=xe(this);return Uu(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Wu(e,t,n=!1){let r,i;const o=ce(e);return o?(r=e,i=gt):(r=e.get,i=e.set),new ju(r,i,o||!i,n)}function Vt(e,t,n,r){let i;try{i=r?e(...r):e()}catch(o){Dr(o,t,n)}return i}function st(e,t,n,r){if(ce(e)){const o=Vt(e,t,n,r);return o&&ha(o)&&o.catch(s=>{Dr(s,t,n)}),o}const i=[];for(let o=0;o>>1;Rn(tt[r])Mt&&tt.splice(t,1)}function Ra(e,t,n,r){ae(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?r+1:r))&&n.push(e),ka()}function Xu(e){Ra(e,En,Sn,rn)}function Zu(e){Ra(e,Bt,Mn,on)}function Or(e,t=null){if(Sn.length){for(Pi=t,En=[...new Set(Sn)],Sn.length=0,rn=0;rnRn(n)-Rn(r)),on=0;one.id==null?1/0:e.id;function Ia(e){Mi=!1,yr=!0,Or(e),tt.sort((n,r)=>Rn(n)-Rn(r));const t=gt;try{for(Mt=0;Mtg.trim())),d&&(i=n.map(_i))}let a,l=r[a=ei(t)]||r[a=ei(Et(t))];!l&&o&&(l=r[a=ei(mn(t))]),l&&st(l,e,6,i);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,st(u,e,6,i)}}function Da(e,t,n=!1){const r=t.emitsCache,i=r.get(e);if(i!==void 0)return i;const o=e.emits;let s={},a=!1;if(!ce(e)){const l=u=>{const f=Da(u,t,!0);f&&(a=!0,We(s,f))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(r.set(e,null),null):(ae(o)?o.forEach(l=>s[l]=null):We(s,o),r.set(e,s),s)}function Nr(e,t){return!e||!Lr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ge(e,t[0].toLowerCase()+t.slice(1))||ge(e,mn(t))||ge(e,t))}let ot=null,Vr=null;function wr(e){const t=ot;return ot=e,Vr=e&&e.type.__scopeId||null,t}function Ju(e){Vr=e}function ef(){Vr=null}function tf(e,t=ot,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&rs(-1);const o=wr(t),s=e(...i);return wr(o),r._d&&rs(1),s};return r._n=!0,r._c=!0,r._d=!0,r}function ti(e){const{type:t,vnode:n,proxy:r,withProxy:i,props:o,propsOptions:[s],slots:a,attrs:l,emit:u,render:f,renderCache:d,data:h,setupState:g,ctx:y,inheritAttrs:w}=e;let b,S;const C=wr(e);try{if(n.shapeFlag&4){const E=i||r;b=xt(f.call(E,E,d,o,g,h,y)),S=l}else{const E=t;b=xt(E.length>1?E(o,{attrs:l,slots:a,emit:u}):E(o,null)),S=t.props?l:nf(l)}}catch(E){Pn.length=0,Dr(E,e,1),b=Se(mt)}let A=b;if(S&&w!==!1){const E=Object.keys(S),{shapeFlag:T}=A;E.length&&T&7&&(s&&E.some(eo)&&(S=rf(S,s)),A=zt(A,S))}return n.dirs&&(A=zt(A),A.dirs=A.dirs?A.dirs.concat(n.dirs):n.dirs),n.transition&&(A.transition=n.transition),b=A,wr(C),b}const nf=e=>{let t;for(const n in e)(n==="class"||n==="style"||Lr(n))&&((t||(t={}))[n]=e[n]);return t},rf=(e,t)=>{const n={};for(const r in e)(!eo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function of(e,t,n){const{props:r,children:i,component:o}=e,{props:s,children:a,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Go(r,s,u):!!s;if(l&8){const f=t.dynamicProps;for(let d=0;de.__isSuspense;function lf(e,t){t&&t.pendingBranch?ae(e)?t.effects.push(...e):t.effects.push(e):Zu(e)}function uf(e,t){if(Ue){let n=Ue.provides;const r=Ue.parent&&Ue.parent.provides;r===n&&(n=Ue.provides=Object.create(r)),n[e]=t}}function ni(e,t,n=!1){const r=Ue||ot;if(r){const i=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(i&&e in i)return i[e];if(arguments.length>1)return n&&ce(t)?t.call(r.proxy):t}}const Yo={};function ri(e,t,n){return Oa(e,t,n)}function Oa(e,t,{immediate:n,deep:r,flush:i,onTrack:o,onTrigger:s}=_e){const a=Ue;let l,u=!1,f=!1;if(Ye(e)?(l=()=>e.value,u=Si(e)):fn(e)?(l=()=>e,r=!0):ae(e)?(f=!0,u=e.some(S=>fn(S)||Si(S)),l=()=>e.map(S=>{if(Ye(S))return S.value;if(fn(S))return Kt(S);if(ce(S))return Vt(S,a,2)})):ce(e)?t?l=()=>Vt(e,a,2):l=()=>{if(!(a&&a.isUnmounted))return d&&d(),st(e,a,3,[h])}:l=gt,t&&r){const S=l;l=()=>Kt(S())}let d,h=S=>{d=b.onStop=()=>{Vt(S,a,4)}};if(Dn)return h=gt,t?n&&st(t,a,3,[l(),f?[]:void 0,h]):l(),gt;let g=f?[]:Yo;const y=()=>{if(!!b.active)if(t){const S=b.run();(r||u||(f?S.some((C,A)=>gr(C,g[A])):gr(S,g)))&&(d&&d(),st(t,a,3,[S,g===Yo?void 0:g,h]),g=S)}else b.run()};y.allowRecurse=!!t;let w;i==="sync"?w=y:i==="post"?w=()=>Xe(y,a&&a.suspense):w=()=>Xu(y);const b=new oo(l,w);return t?n?y():g=b.run():i==="post"?Xe(b.run.bind(b),a&&a.suspense):b.run(),()=>{b.stop(),a&&a.scope&&to(a.scope.effects,b)}}function ff(e,t,n){const r=this.proxy,i=Oe(e)?e.includes(".")?Na(r,e):()=>r[e]:e.bind(r,r);let o;ce(t)?o=t:(o=t.handler,n=t);const s=Ue;cn(this);const a=Oa(i,o.bind(r),n);return s?cn(s):Zt(),a}function Na(e,t){const n=t.split(".");return()=>{let r=e;for(let i=0;i{Kt(n,t)});else if(va(e))for(const n in e)Kt(e[n],t);return e}function cf(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ha(()=>{e.isMounted=!0}),$a(()=>{e.isUnmounting=!0}),e}const it=[Function,Array],df={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:it,onEnter:it,onAfterEnter:it,onEnterCancelled:it,onBeforeLeave:it,onLeave:it,onAfterLeave:it,onLeaveCancelled:it,onBeforeAppear:it,onAppear:it,onAfterAppear:it,onAppearCancelled:it},setup(e,{slots:t}){const n=Zf(),r=cf();let i;return()=>{const o=t.default&&Ua(t.default(),!0);if(!o||!o.length)return;let s=o[0];if(o.length>1){for(const w of o)if(w.type!==mt){s=w;break}}const a=xe(e),{mode:l}=a;if(r.isLeaving)return ii(s);const u=Ko(s);if(!u)return ii(s);const f=Fi(u,a,r,n);Li(u,f);const d=n.subTree,h=d&&Ko(d);let g=!1;const{getTransitionKey:y}=u.type;if(y){const w=y();i===void 0?i=w:w!==i&&(i=w,g=!0)}if(h&&h.type!==mt&&(!Gt(u,h)||g)){const w=Fi(h,a,r,n);if(Li(h,w),l==="out-in")return r.isLeaving=!0,w.afterLeave=()=>{r.isLeaving=!1,n.update()},ii(s);l==="in-out"&&u.type!==mt&&(w.delayLeave=(b,S,C)=>{const A=Va(r,h);A[String(h.key)]=h,b._leaveCb=()=>{S(),b._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=C})}return s}}},hf=df;function Va(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Fi(e,t,n,r){const{appear:i,mode:o,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:d,onLeave:h,onAfterLeave:g,onLeaveCancelled:y,onBeforeAppear:w,onAppear:b,onAfterAppear:S,onAppearCancelled:C}=t,A=String(e.key),E=Va(n,e),T=(P,L)=>{P&&st(P,r,9,L)},m=(P,L)=>{const B=L[1];T(P,L),ae(P)?P.every(R=>R.length<=1)&&B():P.length<=1&&B()},x={mode:o,persisted:s,beforeEnter(P){let L=a;if(!n.isMounted)if(i)L=w||a;else return;P._leaveCb&&P._leaveCb(!0);const B=E[A];B&&Gt(e,B)&&B.el._leaveCb&&B.el._leaveCb(),T(L,[P])},enter(P){let L=l,B=u,R=f;if(!n.isMounted)if(i)L=b||l,B=S||u,R=C||f;else return;let j=!1;const H=P._enterCb=W=>{j||(j=!0,W?T(R,[P]):T(B,[P]),x.delayedLeave&&x.delayedLeave(),P._enterCb=void 0)};L?m(L,[P,H]):H()},leave(P,L){const B=String(e.key);if(P._enterCb&&P._enterCb(!0),n.isUnmounting)return L();T(d,[P]);let R=!1;const j=P._leaveCb=H=>{R||(R=!0,L(),H?T(y,[P]):T(g,[P]),P._leaveCb=void 0,E[B]===e&&delete E[B])};E[B]=e,h?m(h,[P,j]):j()},clone(P){return Fi(P,t,n,r)}};return x}function ii(e){if(Ur(e))return e=zt(e),e.children=null,e}function Ko(e){return Ur(e)?e.children?e.children[0]:void 0:e}function Li(e,t){e.shapeFlag&6&&e.component?Li(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ua(e,t=!1,n){let r=[],i=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader,Ur=e=>e.type.__isKeepAlive;function pf(e,t){za(e,"a",t)}function vf(e,t){za(e,"da",t)}function za(e,t,n=Ue){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(zr(t,r,n),n){let i=n.parent;for(;i&&i.parent;)Ur(i.parent.vnode)&&gf(r,t,n,i),i=i.parent}}function gf(e,t,n,r){const i=zr(t,e,r,!0);ja(()=>{to(r[t],i)},n)}function zr(e,t,n=Ue,r=!1){if(n){const i=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;yn(),cn(n);const a=st(t,n,e,s);return Zt(),wn(),a});return r?i.unshift(o):i.push(o),o}}const kt=e=>(t,n=Ue)=>(!Dn||e==="sp")&&zr(e,t,n),mf=kt("bm"),Ha=kt("m"),yf=kt("bu"),wf=kt("u"),$a=kt("bum"),ja=kt("um"),bf=kt("sp"),xf=kt("rtg"),_f=kt("rtc");function Ef(e,t=Ue){zr("ec",e,t)}function Bn(e,t){const n=ot;if(n===null)return e;const r=$r(n)||n.proxy,i=e.dirs||(e.dirs=[]);for(let o=0;ot(s,a,void 0,o&&o[a]));else{const s=Object.keys(e);i=new Array(s.length);for(let a=0,l=s.length;ae?il(e)?$r(e)||e.proxy:ki(e.parent):null,br=We(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ki(e.parent),$root:e=>ki(e.root),$emit:e=>e.emit,$options:e=>Ya(e),$forceUpdate:e=>e.f||(e.f=()=>La(e.update)),$nextTick:e=>e.n||(e.n=Gu.bind(e.proxy)),$watch:e=>ff.bind(e)}),Tf={get({_:e},t){const{ctx:n,setupState:r,data:i,props:o,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const g=s[t];if(g!==void 0)switch(g){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return o[t]}else{if(r!==_e&&ge(r,t))return s[t]=1,r[t];if(i!==_e&&ge(i,t))return s[t]=2,i[t];if((u=e.propsOptions[0])&&ge(u,t))return s[t]=3,o[t];if(n!==_e&&ge(n,t))return s[t]=4,n[t];Ri&&(s[t]=0)}}const f=br[t];let d,h;if(f)return t==="$attrs"&&nt(e,"get",t),f(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==_e&&ge(n,t))return s[t]=4,n[t];if(h=l.config.globalProperties,ge(h,t))return h[t]},set({_:e},t,n){const{data:r,setupState:i,ctx:o}=e;return i!==_e&&ge(i,t)?(i[t]=n,!0):r!==_e&&ge(r,t)?(r[t]=n,!0):ge(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,propsOptions:o}},s){let a;return!!n[s]||e!==_e&&ge(e,s)||t!==_e&&ge(t,s)||(a=o[0])&&ge(a,s)||ge(r,s)||ge(br,s)||ge(i.config.globalProperties,s)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ge(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Ri=!0;function Sf(e){const t=Ya(e),n=e.proxy,r=e.ctx;Ri=!1,t.beforeCreate&&Zo(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:s,watch:a,provide:l,inject:u,created:f,beforeMount:d,mounted:h,beforeUpdate:g,updated:y,activated:w,deactivated:b,beforeDestroy:S,beforeUnmount:C,destroyed:A,unmounted:E,render:T,renderTracked:m,renderTriggered:x,errorCaptured:P,serverPrefetch:L,expose:B,inheritAttrs:R,components:j,directives:H,filters:W}=t;if(u&&Mf(u,r,null,e.appContext.config.unwrapInjectedRef),s)for(const q in s){const Z=s[q];ce(Z)&&(r[q]=Z.bind(n))}if(i){const q=i.call(n,n);ze(q)&&(e.data=uo(q))}if(Ri=!0,o)for(const q in o){const Z=o[q],z=ce(Z)?Z.bind(n,n):ce(Z.get)?Z.get.bind(n,n):gt,V=!ce(Z)&&ce(Z.set)?Z.set.bind(n):gt,Y=ic({get:z,set:V});Object.defineProperty(r,q,{enumerable:!0,configurable:!0,get:()=>Y.value,set:X=>Y.value=X})}if(a)for(const q in a)Ga(a[q],r,n,q);if(l){const q=ce(l)?l.call(n):l;Reflect.ownKeys(q).forEach(Z=>{uf(Z,q[Z])})}f&&Zo(f,e,"c");function $(q,Z){ae(Z)?Z.forEach(z=>q(z.bind(n))):Z&&q(Z.bind(n))}if($(mf,d),$(Ha,h),$(yf,g),$(wf,y),$(pf,w),$(vf,b),$(Ef,P),$(_f,m),$(xf,x),$($a,C),$(ja,E),$(bf,L),ae(B))if(B.length){const q=e.exposed||(e.exposed={});B.forEach(Z=>{Object.defineProperty(q,Z,{get:()=>n[Z],set:z=>n[Z]=z})})}else e.exposed||(e.exposed={});T&&e.render===gt&&(e.render=T),R!=null&&(e.inheritAttrs=R),j&&(e.components=j),H&&(e.directives=H)}function Mf(e,t,n=gt,r=!1){ae(e)&&(e=Bi(e));for(const i in e){const o=e[i];let s;ze(o)?"default"in o?s=ni(o.from||i,o.default,!0):s=ni(o.from||i):s=ni(o),Ye(s)&&r?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):t[i]=s}}function Zo(e,t,n){st(ae(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ga(e,t,n,r){const i=r.includes(".")?Na(n,r):()=>n[r];if(Oe(e)){const o=t[e];ce(o)&&ri(i,o)}else if(ce(e))ri(i,e.bind(n));else if(ze(e))if(ae(e))e.forEach(o=>Ga(o,t,n,r));else{const o=ce(e.handler)?e.handler.bind(n):t[e.handler];ce(o)&&ri(i,o,e)}}function Ya(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:s}}=e.appContext,a=o.get(t);let l;return a?l=a:!i.length&&!n&&!r?l=t:(l={},i.length&&i.forEach(u=>xr(l,u,s,!0)),xr(l,t,s)),o.set(t,l),l}function xr(e,t,n,r=!1){const{mixins:i,extends:o}=t;o&&xr(e,o,n,!0),i&&i.forEach(s=>xr(e,s,n,!0));for(const s in t)if(!(r&&s==="expose")){const a=Pf[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const Pf={data:Qo,props:qt,emits:qt,methods:qt,computed:qt,beforeCreate:qe,created:qe,beforeMount:qe,mounted:qe,beforeUpdate:qe,updated:qe,beforeDestroy:qe,beforeUnmount:qe,destroyed:qe,unmounted:qe,activated:qe,deactivated:qe,errorCaptured:qe,serverPrefetch:qe,components:qt,directives:qt,watch:Lf,provide:Qo,inject:Ff};function Qo(e,t){return t?e?function(){return We(ce(e)?e.call(this,this):e,ce(t)?t.call(this,this):t)}:t:e}function Ff(e,t){return qt(Bi(e),Bi(t))}function Bi(e){if(ae(e)){const t={};for(let n=0;n0)&&!(s&16)){if(s&8){const f=e.vnode.dynamicProps;for(let d=0;d{l=!0;const[h,g]=Xa(d,t,!0);We(s,h),g&&a.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!l)return r.set(e,ln),ln;if(ae(o))for(let f=0;f-1,g[1]=w<0||y-1||ge(g,"default"))&&a.push(d)}}}const u=[s,a];return r.set(e,u),u}function Jo(e){return e[0]!=="$"}function es(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function ts(e,t){return es(e)===es(t)}function ns(e,t){return ae(t)?t.findIndex(n=>ts(n,e)):ce(t)&&ts(t,e)?0:-1}const Za=e=>e[0]==="_"||e==="$stable",yo=e=>ae(e)?e.map(xt):[xt(e)],Bf=(e,t,n)=>{if(t._n)return t;const r=tf((...i)=>yo(t(...i)),n);return r._c=!1,r},Qa=(e,t,n)=>{const r=e._ctx;for(const i in e){if(Za(i))continue;const o=e[i];if(ce(o))t[i]=Bf(i,o,r);else if(o!=null){const s=yo(o);t[i]=()=>s}}},Ja=(e,t)=>{const n=yo(t);e.slots.default=()=>n},If=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=xe(t),mr(t,"_",n)):Qa(t,e.slots={})}else e.slots={},t&&Ja(e,t);mr(e.slots,Hr,1)},Df=(e,t,n)=>{const{vnode:r,slots:i}=e;let o=!0,s=_e;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:(We(i,t),!n&&a===1&&delete i._):(o=!t.$stable,Qa(t,i)),s=t}else t&&(Ja(e,t),s={default:1});if(o)for(const a in i)!Za(a)&&!(a in s)&&delete i[a]};function el(){return{app:null,config:{isNativeTag:ou,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Of=0;function Nf(e,t){return function(r,i=null){ce(r)||(r=Object.assign({},r)),i!=null&&!ze(i)&&(i=null);const o=el(),s=new Set;let a=!1;const l=o.app={_uid:Of++,_component:r,_props:i,_container:null,_context:o,_instance:null,version:oc,get config(){return o.config},set config(u){},use(u,...f){return s.has(u)||(u&&ce(u.install)?(s.add(u),u.install(l,...f)):ce(u)&&(s.add(u),u(l,...f))),l},mixin(u){return o.mixins.includes(u)||o.mixins.push(u),l},component(u,f){return f?(o.components[u]=f,l):o.components[u]},directive(u,f){return f?(o.directives[u]=f,l):o.directives[u]},mount(u,f,d){if(!a){const h=Se(r,i);return h.appContext=o,f&&t?t(h,u):e(h,u,d),a=!0,l._container=u,u.__vue_app__=l,$r(h.component)||h.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,f){return o.provides[u]=f,l}};return l}}function Di(e,t,n,r,i=!1){if(ae(e)){e.forEach((h,g)=>Di(h,t&&(ae(t)?t[g]:t),n,r,i));return}if(fr(r)&&!i)return;const o=r.shapeFlag&4?$r(r.component)||r.component.proxy:r.el,s=i?null:o,{i:a,r:l}=e,u=t&&t.r,f=a.refs===_e?a.refs={}:a.refs,d=a.setupState;if(u!=null&&u!==l&&(Oe(u)?(f[u]=null,ge(d,u)&&(d[u]=null)):Ye(u)&&(u.value=null)),ce(l))Vt(l,a,12,[s,f]);else{const h=Oe(l),g=Ye(l);if(h||g){const y=()=>{if(e.f){const w=h?f[l]:l.value;i?ae(w)&&to(w,o):ae(w)?w.includes(o)||w.push(o):h?(f[l]=[o],ge(d,l)&&(d[l]=f[l])):(l.value=[o],e.k&&(f[e.k]=l.value))}else h?(f[l]=s,ge(d,l)&&(d[l]=s)):g&&(l.value=s,e.k&&(f[e.k]=s))};s?(y.id=-1,Xe(y,n)):y()}}}const Xe=lf;function Vf(e){return Uf(e)}function Uf(e,t){const n=cu();n.__VUE__=!0;const{insert:r,remove:i,patchProp:o,createElement:s,createText:a,createComment:l,setText:u,setElementText:f,parentNode:d,nextSibling:h,setScopeId:g=gt,cloneNode:y,insertStaticContent:w}=e,b=(c,p,v,_=null,M=null,F=null,O=!1,I=null,U=!!p.dynamicChildren)=>{if(c===p)return;c&&!Gt(c,p)&&(_=de(c),te(c,M,F,!0),c=null),p.patchFlag===-2&&(U=!1,p.dynamicChildren=null);const{type:N,ref:Q,shapeFlag:K}=p;switch(N){case wo:S(c,p,v,_);break;case mt:C(c,p,v,_);break;case oi:c==null&&A(p,v,_,O);break;case Ge:H(c,p,v,_,M,F,O,I,U);break;default:K&1?m(c,p,v,_,M,F,O,I,U):K&6?W(c,p,v,_,M,F,O,I,U):(K&64||K&128)&&N.process(c,p,v,_,M,F,O,I,U,le)}Q!=null&&M&&Di(Q,c&&c.ref,F,p||c,!p)},S=(c,p,v,_)=>{if(c==null)r(p.el=a(p.children),v,_);else{const M=p.el=c.el;p.children!==c.children&&u(M,p.children)}},C=(c,p,v,_)=>{c==null?r(p.el=l(p.children||""),v,_):p.el=c.el},A=(c,p,v,_)=>{[c.el,c.anchor]=w(c.children,p,v,_,c.el,c.anchor)},E=({el:c,anchor:p},v,_)=>{let M;for(;c&&c!==p;)M=h(c),r(c,v,_),c=M;r(p,v,_)},T=({el:c,anchor:p})=>{let v;for(;c&&c!==p;)v=h(c),i(c),c=v;i(p)},m=(c,p,v,_,M,F,O,I,U)=>{O=O||p.type==="svg",c==null?x(p,v,_,M,F,O,I,U):B(c,p,M,F,O,I,U)},x=(c,p,v,_,M,F,O,I)=>{let U,N;const{type:Q,props:K,shapeFlag:ee,transition:ne,patchFlag:he,dirs:we}=c;if(c.el&&y!==void 0&&he===-1)U=c.el=y(c.el);else{if(U=c.el=s(c.type,F,K&&K.is,K),ee&8?f(U,c.children):ee&16&&L(c.children,U,null,_,M,F&&Q!=="foreignObject",O,I),we&&jt(c,null,_,"created"),K){for(const D in K)D!=="value"&&!lr(D)&&o(U,D,null,K[D],F,c.children,_,M,oe);"value"in K&&o(U,"value",null,K.value),(N=K.onVnodeBeforeMount)&&wt(N,_,c)}P(U,c,c.scopeId,O,_)}we&&jt(c,null,_,"beforeMount");const be=(!M||M&&!M.pendingBranch)&&ne&&!ne.persisted;be&&ne.beforeEnter(U),r(U,p,v),((N=K&&K.onVnodeMounted)||be||we)&&Xe(()=>{N&&wt(N,_,c),be&&ne.enter(U),we&&jt(c,null,_,"mounted")},M)},P=(c,p,v,_,M)=>{if(v&&g(c,v),_)for(let F=0;F<_.length;F++)g(c,_[F]);if(M){let F=M.subTree;if(p===F){const O=M.vnode;P(c,O,O.scopeId,O.slotScopeIds,M.parent)}}},L=(c,p,v,_,M,F,O,I,U=0)=>{for(let N=U;N{const I=p.el=c.el;let{patchFlag:U,dynamicChildren:N,dirs:Q}=p;U|=c.patchFlag&16;const K=c.props||_e,ee=p.props||_e;let ne;v&&Wt(v,!1),(ne=ee.onVnodeBeforeUpdate)&&wt(ne,v,p,c),Q&&jt(p,c,v,"beforeUpdate"),v&&Wt(v,!0);const he=M&&p.type!=="foreignObject";if(N?R(c.dynamicChildren,N,I,v,_,he,F):O||z(c,p,I,null,v,_,he,F,!1),U>0){if(U&16)j(I,p,K,ee,v,_,M);else if(U&2&&K.class!==ee.class&&o(I,"class",null,ee.class,M),U&4&&o(I,"style",K.style,ee.style,M),U&8){const we=p.dynamicProps;for(let be=0;be{ne&&wt(ne,v,p,c),Q&&jt(p,c,v,"updated")},_)},R=(c,p,v,_,M,F,O)=>{for(let I=0;I{if(v!==_){for(const I in _){if(lr(I))continue;const U=_[I],N=v[I];U!==N&&I!=="value"&&o(c,I,N,U,O,p.children,M,F,oe)}if(v!==_e)for(const I in v)!lr(I)&&!(I in _)&&o(c,I,v[I],null,O,p.children,M,F,oe);"value"in _&&o(c,"value",v.value,_.value)}},H=(c,p,v,_,M,F,O,I,U)=>{const N=p.el=c?c.el:a(""),Q=p.anchor=c?c.anchor:a("");let{patchFlag:K,dynamicChildren:ee,slotScopeIds:ne}=p;ne&&(I=I?I.concat(ne):ne),c==null?(r(N,v,_),r(Q,v,_),L(p.children,v,Q,M,F,O,I,U)):K>0&&K&64&&ee&&c.dynamicChildren?(R(c.dynamicChildren,ee,v,M,F,O,I),(p.key!=null||M&&p===M.subTree)&&tl(c,p,!0)):z(c,p,v,Q,M,F,O,I,U)},W=(c,p,v,_,M,F,O,I,U)=>{p.slotScopeIds=I,c==null?p.shapeFlag&512?M.ctx.activate(p,v,_,O,U):k(p,v,_,M,F,O,U):$(c,p,U)},k=(c,p,v,_,M,F,O)=>{const I=c.component=Xf(c,_,M);if(Ur(c)&&(I.ctx.renderer=le),Qf(I),I.asyncDep){if(M&&M.registerDep(I,q),!c.el){const U=I.subTree=Se(mt);C(null,U,p,v)}return}q(I,c,p,v,M,F,O)},$=(c,p,v)=>{const _=p.component=c.component;if(of(c,p,v))if(_.asyncDep&&!_.asyncResolved){Z(_,p,v);return}else _.next=p,Ku(_.update),_.update();else p.el=c.el,_.vnode=p},q=(c,p,v,_,M,F,O)=>{const I=()=>{if(c.isMounted){let{next:Q,bu:K,u:ee,parent:ne,vnode:he}=c,we=Q,be;Wt(c,!1),Q?(Q.el=he.el,Z(c,Q,O)):Q=he,K&&ur(K),(be=Q.props&&Q.props.onVnodeBeforeUpdate)&&wt(be,ne,Q,he),Wt(c,!0);const D=ti(c),J=c.subTree;c.subTree=D,b(J,D,d(J.el),de(J),c,M,F),Q.el=D.el,we===null&&sf(c,D.el),ee&&Xe(ee,M),(be=Q.props&&Q.props.onVnodeUpdated)&&Xe(()=>wt(be,ne,Q,he),M)}else{let Q;const{el:K,props:ee}=p,{bm:ne,m:he,parent:we}=c,be=fr(p);if(Wt(c,!1),ne&&ur(ne),!be&&(Q=ee&&ee.onVnodeBeforeMount)&&wt(Q,we,p),Wt(c,!0),K&&Ne){const D=()=>{c.subTree=ti(c),Ne(K,c.subTree,c,M,null)};be?p.type.__asyncLoader().then(()=>!c.isUnmounted&&D()):D()}else{const D=c.subTree=ti(c);b(null,D,v,_,c,M,F),p.el=D.el}if(he&&Xe(he,M),!be&&(Q=ee&&ee.onVnodeMounted)){const D=p;Xe(()=>wt(Q,we,D),M)}(p.shapeFlag&256||we&&fr(we.vnode)&&we.vnode.shapeFlag&256)&&c.a&&Xe(c.a,M),c.isMounted=!0,p=v=_=null}},U=c.effect=new oo(I,()=>La(N),c.scope),N=c.update=()=>U.run();N.id=c.uid,Wt(c,!0),N()},Z=(c,p,v)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,Rf(c,p.props,_,v),Df(c,p.children,v),yn(),Or(void 0,c.update),wn()},z=(c,p,v,_,M,F,O,I,U=!1)=>{const N=c&&c.children,Q=c?c.shapeFlag:0,K=p.children,{patchFlag:ee,shapeFlag:ne}=p;if(ee>0){if(ee&128){Y(N,K,v,_,M,F,O,I,U);return}else if(ee&256){V(N,K,v,_,M,F,O,I,U);return}}ne&8?(Q&16&&oe(N,M,F),K!==N&&f(v,K)):Q&16?ne&16?Y(N,K,v,_,M,F,O,I,U):oe(N,M,F,!0):(Q&8&&f(v,""),ne&16&&L(K,v,_,M,F,O,I,U))},V=(c,p,v,_,M,F,O,I,U)=>{c=c||ln,p=p||ln;const N=c.length,Q=p.length,K=Math.min(N,Q);let ee;for(ee=0;eeQ?oe(c,M,F,!0,!1,K):L(p,v,_,M,F,O,I,U,K)},Y=(c,p,v,_,M,F,O,I,U)=>{let N=0;const Q=p.length;let K=c.length-1,ee=Q-1;for(;N<=K&&N<=ee;){const ne=c[N],he=p[N]=U?It(p[N]):xt(p[N]);if(Gt(ne,he))b(ne,he,v,null,M,F,O,I,U);else break;N++}for(;N<=K&&N<=ee;){const ne=c[K],he=p[ee]=U?It(p[ee]):xt(p[ee]);if(Gt(ne,he))b(ne,he,v,null,M,F,O,I,U);else break;K--,ee--}if(N>K){if(N<=ee){const ne=ee+1,he=neee)for(;N<=K;)te(c[N],M,F,!0),N++;else{const ne=N,he=N,we=new Map;for(N=he;N<=ee;N++){const Re=p[N]=U?It(p[N]):xt(p[N]);Re.key!=null&&we.set(Re.key,N)}let be,D=0;const J=ee-he+1;let Ce=!1,yt=0;const Qe=new Array(J);for(N=0;N=J){te(Re,M,F,!0);continue}let rt;if(Re.key!=null)rt=we.get(Re.key);else for(be=he;be<=ee;be++)if(Qe[be-he]===0&&Gt(Re,p[be])){rt=be;break}rt===void 0?te(Re,M,F,!0):(Qe[rt-he]=N+1,rt>=yt?yt=rt:Ce=!0,b(Re,p[rt],v,null,M,F,O,I,U),D++)}const Ct=Ce?zf(Qe):ln;for(be=Ct.length-1,N=J-1;N>=0;N--){const Re=he+N,rt=p[Re],No=Re+1{const{el:F,type:O,transition:I,children:U,shapeFlag:N}=c;if(N&6){X(c.component.subTree,p,v,_);return}if(N&128){c.suspense.move(p,v,_);return}if(N&64){O.move(c,p,v,le);return}if(O===Ge){r(F,p,v);for(let K=0;KI.enter(F),M);else{const{leave:K,delayLeave:ee,afterLeave:ne}=I,he=()=>r(F,p,v),we=()=>{K(F,()=>{he(),ne&&ne()})};ee?ee(F,he,we):we()}else r(F,p,v)},te=(c,p,v,_=!1,M=!1)=>{const{type:F,props:O,ref:I,children:U,dynamicChildren:N,shapeFlag:Q,patchFlag:K,dirs:ee}=c;if(I!=null&&Di(I,null,v,c,!0),Q&256){p.ctx.deactivate(c);return}const ne=Q&1&&ee,he=!fr(c);let we;if(he&&(we=O&&O.onVnodeBeforeUnmount)&&wt(we,p,c),Q&6)Me(c.component,v,_);else{if(Q&128){c.suspense.unmount(v,_);return}ne&&jt(c,null,p,"beforeUnmount"),Q&64?c.type.remove(c,p,v,M,le,_):N&&(F!==Ge||K>0&&K&64)?oe(N,p,v,!1,!0):(F===Ge&&K&384||!M&&Q&16)&&oe(U,p,v),_&&re(c)}(he&&(we=O&&O.onVnodeUnmounted)||ne)&&Xe(()=>{we&&wt(we,p,c),ne&&jt(c,null,p,"unmounted")},v)},re=c=>{const{type:p,el:v,anchor:_,transition:M}=c;if(p===Ge){ve(v,_);return}if(p===oi){T(c);return}const F=()=>{i(v),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(c.shapeFlag&1&&M&&!M.persisted){const{leave:O,delayLeave:I}=M,U=()=>O(v,F);I?I(c.el,F,U):U()}else F()},ve=(c,p)=>{let v;for(;c!==p;)v=h(c),i(c),c=v;i(p)},Me=(c,p,v)=>{const{bum:_,scope:M,update:F,subTree:O,um:I}=c;_&&ur(_),M.stop(),F&&(F.active=!1,te(O,c,p,v)),I&&Xe(I,p),Xe(()=>{c.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},oe=(c,p,v,_=!1,M=!1,F=0)=>{for(let O=F;Oc.shapeFlag&6?de(c.component.subTree):c.shapeFlag&128?c.suspense.next():h(c.anchor||c.el),ue=(c,p,v)=>{c==null?p._vnode&&te(p._vnode,null,null,!0):b(p._vnode||null,c,p,null,null,null,v),Ba(),p._vnode=c},le={p:b,um:te,m:X,r:re,mt:k,mc:L,pc:z,pbc:R,n:de,o:e};let ke,Ne;return t&&([ke,Ne]=t(le)),{render:ue,hydrate:ke,createApp:Nf(ue,ke)}}function Wt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function tl(e,t,n=!1){const r=e.children,i=t.children;if(ae(r)&&ae(i))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,s=n[o-1];o-- >0;)n[o]=s,s=t[s];return n}const Hf=e=>e.__isTeleport,Ge=Symbol(void 0),wo=Symbol(void 0),mt=Symbol(void 0),oi=Symbol(void 0),Pn=[];let vt=null;function se(e=!1){Pn.push(vt=e?null:[])}function $f(){Pn.pop(),vt=Pn[Pn.length-1]||null}let In=1;function rs(e){In+=e}function nl(e){return e.dynamicChildren=In>0?vt||ln:null,$f(),In>0&&vt&&vt.push(e),e}function fe(e,t,n,r,i,o){return nl(G(e,t,n,r,i,o,!0))}function _r(e,t,n,r,i){return nl(Se(e,t,n,r,i,!0))}function jf(e){return e?e.__v_isVNode===!0:!1}function Gt(e,t){return e.type===t.type&&e.key===t.key}const Hr="__vInternal",rl=({key:e})=>e!=null?e:null,cr=({ref:e,ref_key:t,ref_for:n})=>e!=null?Oe(e)||Ye(e)||ce(e)?{i:ot,r:e,k:t,f:!!n}:e:null;function G(e,t=null,n=null,r=0,i=null,o=e===Ge?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rl(t),ref:t&&cr(t),scopeId:Vr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null};return a?(bo(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=Oe(n)?8:16),In>0&&!s&&vt&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&vt.push(l),l}const Se=Wf;function Wf(e,t=null,n=null,r=0,i=null,o=!1){if((!e||e===Wa)&&(e=mt),jf(e)){const a=zt(e,t,!0);return n&&bo(a,n),In>0&&!o&&vt&&(a.shapeFlag&6?vt[vt.indexOf(e)]=a:vt.push(a)),a.patchFlag|=-2,a}if(rc(e)&&(e=e.__vccOpts),t){t=qf(t);let{class:a,style:l}=t;a&&!Oe(a)&&(t.class=Qt(a)),ze(l)&&(Sa(l)&&!ae(l)&&(l=We({},l)),t.style=je(l))}const s=Oe(e)?1:af(e)?128:Hf(e)?64:ze(e)?4:ce(e)?2:0;return G(e,t,n,r,i,s,o,!0)}function qf(e){return e?Sa(e)||Hr in e?We({},e):e:null}function zt(e,t,n=!1){const{props:r,ref:i,patchFlag:o,children:s}=e,a=t?Gf(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&rl(a),ref:t&&t.ref?n&&i?ae(i)?i.concat(cr(t)):[i,cr(t)]:cr(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ge?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zt(e.ssContent),ssFallback:e.ssFallback&&zt(e.ssFallback),el:e.el,anchor:e.anchor}}function Ie(e=" ",t=0){return Se(wo,null,e,t)}function Te(e="",t=!1){return t?(se(),_r(mt,null,e)):Se(mt,null,e)}function xt(e){return e==null||typeof e=="boolean"?Se(mt):ae(e)?Se(Ge,null,e.slice()):typeof e=="object"?It(e):Se(wo,null,String(e))}function It(e){return e.el===null||e.memo?e:zt(e)}function bo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(ae(t))n=16;else if(typeof t=="object")if(r&65){const i=t.default;i&&(i._c&&(i._d=!1),bo(e,i()),i._c&&(i._d=!0));return}else{n=32;const i=t._;!i&&!(Hr in t)?t._ctx=ot:i===3&&ot&&(ot.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ce(t)?(t={default:t,_ctx:ot},n=32):(t=String(t),r&64?(n=16,t=[Ie(t)]):n=8);e.children=t,e.shapeFlag|=n}function Gf(...e){const t={};for(let n=0;nUe||ot,cn=e=>{Ue=e,e.scope.on()},Zt=()=>{Ue&&Ue.scope.off(),Ue=null};function il(e){return e.vnode.shapeFlag&4}let Dn=!1;function Qf(e,t=!1){Dn=t;const{props:n,children:r}=e.vnode,i=il(e);kf(e,n,i,t),If(e,r);const o=i?Jf(e,t):void 0;return Dn=!1,o}function Jf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ma(new Proxy(e.ctx,Tf));const{setup:r}=n;if(r){const i=e.setupContext=r.length>1?tc(e):null;cn(e),yn();const o=Vt(r,e,0,[e.props,i]);if(wn(),Zt(),ha(o)){if(o.then(Zt,Zt),t)return o.then(s=>{is(e,s,t)}).catch(s=>{Dr(s,e,0)});e.asyncDep=o}else is(e,o,t)}else ol(e,t)}function is(e,t,n){ce(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ze(t)&&(e.setupState=Pa(t)),ol(e,n)}let os;function ol(e,t,n){const r=e.type;if(!e.render){if(!t&&os&&!r.render){const i=r.template;if(i){const{isCustomElement:o,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=We(We({isCustomElement:o,delimiters:a},s),l);r.render=os(i,u)}}e.render=r.render||gt}cn(e),yn(),Sf(e),wn(),Zt()}function ec(e){return new Proxy(e.attrs,{get(t,n){return nt(e,"get","$attrs"),t[n]}})}function tc(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=ec(e))},slots:e.slots,emit:e.emit,expose:t}}function $r(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Pa(Ma(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in br)return br[n](e)}}))}function nc(e,t=!0){return ce(e)?e.displayName||e.name:e.name||t&&e.__name}function rc(e){return ce(e)&&"__vccOpts"in e}const ic=(e,t)=>Wu(e,t,Dn),oc="3.2.37",sc="http://www.w3.org/2000/svg",Yt=typeof document!="undefined"?document:null,ss=Yt&&Yt.createElement("template"),ac={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const i=t?Yt.createElementNS(sc,e):Yt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&i.setAttribute("multiple",r.multiple),i},createText:e=>Yt.createTextNode(e),createComment:e=>Yt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Yt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,r,i,o){const s=n?n.previousSibling:t.lastChild;if(i&&(i===o||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===o||!(i=i.nextSibling)););else{ss.innerHTML=r?`${e}`:e;const a=ss.content;if(r){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function lc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function uc(e,t,n){const r=e.style,i=Oe(n);if(n&&!i){for(const o in n)Oi(r,o,n[o]);if(t&&!Oe(t))for(const o in t)n[o]==null&&Oi(r,o,"")}else{const o=r.display;i?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=o)}}const as=/\s*!important$/;function Oi(e,t,n){if(ae(n))n.forEach(r=>Oi(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=fc(e,t);as.test(n)?e.setProperty(mn(r),n.replace(as,""),"important"):e[r]=n}}const ls=["Webkit","Moz","ms"],si={};function fc(e,t){const n=si[t];if(n)return n;let r=Et(t);if(r!=="filter"&&r in e)return si[t]=r;r=Br(r);for(let i=0;i{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=performance.now.bind(performance));const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Ni=0;const pc=Promise.resolve(),vc=()=>{Ni=0},gc=()=>Ni||(pc.then(vc),Ni=sl());function sn(e,t,n,r){e.addEventListener(t,n,r)}function mc(e,t,n,r){e.removeEventListener(t,n,r)}function yc(e,t,n,r,i=null){const o=e._vei||(e._vei={}),s=o[t];if(r&&s)s.value=r;else{const[a,l]=wc(t);if(r){const u=o[t]=bc(r,i);sn(e,a,u,l)}else s&&(mc(e,a,s,l),o[t]=void 0)}}const fs=/(?:Once|Passive|Capture)$/;function wc(e){let t;if(fs.test(e)){t={};let n;for(;n=e.match(fs);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[mn(e.slice(2)),t]}function bc(e,t){const n=r=>{const i=r.timeStamp||sl();(hc||i>=n.attached-1)&&st(xc(r,n.value),t,5,[r])};return n.value=e,n.attached=gc(),n}function xc(e,t){if(ae(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>i=>!i._stopped&&r&&r(i))}else return t}const cs=/^on[a-z]/,_c=(e,t,n,r,i=!1,o,s,a,l)=>{t==="class"?lc(e,r,i):t==="style"?uc(e,n,r):Lr(t)?eo(t)||yc(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ec(e,t,r,i))?dc(e,t,r,o,s,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),cc(e,t,r,i))};function Ec(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&cs.test(t)&&ce(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||cs.test(t)&&Oe(n)?!1:t in e}const Cc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};hf.props;const ds=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ae(t)?n=>ur(t,n):t};function Ac(e){e.target.composing=!0}function hs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const al={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e._assign=ds(i);const o=r||i.props&&i.props.type==="number";sn(e,t?"change":"input",s=>{if(s.target.composing)return;let a=e.value;n&&(a=a.trim()),o&&(a=_i(a)),e._assign(a)}),n&&sn(e,"change",()=>{e.value=e.value.trim()}),t||(sn(e,"compositionstart",Ac),sn(e,"compositionend",hs),sn(e,"change",hs))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:i}},o){if(e._assign=ds(o),e.composing||document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===t||(i||e.type==="number")&&_i(e.value)===t))return;const s=t==null?"":t;e.value!==s&&(e.value=s)}},Tc=["ctrl","shift","alt","meta"],Sc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Tc.some(n=>e[`${n}Key`]&&!t.includes(n))},_t=(e,t)=>(n,...r)=>{for(let i=0;i{bn(e,!1)}):bn(e,t))},beforeUnmount(e,{value:t}){bn(e,t)}};function bn(e,t){e.style.display=t?e._vod:"none"}const Pc=We({patchProp:_c},ac);let ps;function Fc(){return ps||(ps=Vf(Pc))}const vs=(...e)=>{const t=Fc().createApp(...e),{mount:n}=t;return t.mount=r=>{const i=Lc(r);if(!i)return;const o=t._component;!ce(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.innerHTML="";const s=n(i,!1,i instanceof SVGElement);return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),s},t};function Lc(e){return Oe(e)?document.querySelector(e):e}const Xn=new Map,zn=[],Vi=zn.map,kc=zn.some,Rc=zn.hasOwnProperty,Bc=/^((?:@[^/@]+\/)?[^/@]+)(?:@([^/]+))?(?:\/(.*))?$/,Ic=/^\d+\.\d+\.\d+(-[\w-.+]+)?$/,gs=/(?:\.[^/]*|\/)$/;class dn extends Error{constructor(t){super(t)}}dn.prototype.name=dn.name;function ms(e){const t=Bc.exec(e);return t&&{name:t[1],version:t[2],path:t[3]}}function Dc(e="https://cdn.jsdelivr.net/npm/",t=["unpkg","jsdelivr","browser","main"]){if(!/\/$/.test(e))throw new Error("origin lacks trailing slash");function n(i){for(const o of t){let s=i[o];if(typeof s=="string")return s.startsWith("./")&&(s=s.slice(2)),gs.test(s)?s:`${s}.js`}}function r(i){const o=`${e}${i.name}${i.version?`@${i.version}`:""}/package.json`;let s=Xn.get(o);return s||Xn.set(o,s=fetch(o).then(a=>{if(!a.ok)throw new dn("unable to load package.json");return a.redirected&&!Xn.has(a.url)&&Xn.set(a.url,s),a.json()})),s}return async function(o,s){if(o.startsWith(e)&&(o=o.substring(e.length)),/^(\w+:)|\/\//i.test(o))return o;if(/^[.]{0,2}\//i.test(o))return new URL(o,s==null?location:s).href;if(!o.length||/^[\s._]/.test(o)||/\s$/.test(o))throw new dn("illegal name");const a=ms(o);if(!a)return`${e}${o}`;if(!a.version&&s!=null&&s.startsWith(e)){const u=await r(ms(s.substring(e.length)));a.version=u.dependencies&&u.dependencies[a.name]||u.peerDependencies&&u.peerDependencies[a.name]}if(a.path&&!gs.test(a.path)&&(a.path+=".js"),a.path&&a.version&&Ic.test(a.version))return`${e}${a.name}@${a.version}/${a.path}`;const l=await r(a);return`${e}${l.name}@${l.version}/${a.path||n(l)||"index.js"}`}}var Oc=ll(Dc());function ll(e){const t=new Map,n=i(null);function r(a){if(typeof a!="string")return a;let l=t.get(a);return l||t.set(a,l=new Promise((u,f)=>{const d=document.createElement("script");d.onload=()=>{try{u(zn.pop()(i(a)))}catch{f(new dn("invalid module"))}d.remove()},d.onerror=()=>{f(new dn("unable to load module")),d.remove()},d.async=!0,d.src=a,window.define=ul,document.head.appendChild(d)})),l}function i(a){return l=>Promise.resolve(e(l,a)).then(r)}function o(a){return ll((l,u)=>l in a&&(l=a[l],u=null,typeof l!="string")?l:e(l,u))}function s(a){return arguments.length>1?Promise.all(Vi.call(arguments,n)).then(Nc):n(a)}return s.alias=o,s.resolve=e,s}function Nc(e){const t={};for(const n of e)for(const r in n)Rc.call(n,r)&&(n[r]==null?Object.defineProperty(t,r,{get:Vc(n,r)}):t[r]=n[r]);return t}function Vc(e,t){return()=>e[t]}function Uc(e){return e=e+"",e==="exports"||e==="module"}function ul(e,t,n){const r=arguments.length;r<2?(n=e,t=[]):r<3&&(n=t,t=typeof e=="string"?[]:e),zn.push(kc.call(t,Uc)?i=>{const o={},s={exports:o};return Promise.all(Vi.call(t,a=>(a=a+"",a==="exports"?o:a==="module"?s:i(a)))).then(a=>(n.apply(null,a),s.exports))}:i=>Promise.all(Vi.call(t,i)).then(o=>typeof n=="function"?n.apply(null,o):n))}ul.amd={};var jr=function(t){Hc(t);var n=zc(t);return t.on=n.on,t.off=n.off,t.fire=n.fire,t};function zc(e){var t=Object.create(null);return{on:function(n,r,i){if(typeof r!="function")throw new Error("callback is expected to be a function");var o=t[n];return o||(o=t[n]=[]),o.push({callback:r,ctx:i}),e},off:function(n,r){var i=typeof n=="undefined";if(i)return t=Object.create(null),e;if(t[n]){var o=typeof r!="function";if(o)delete t[n];else for(var s=t[n],a=0;a1&&(i=Array.prototype.splice.call(arguments,1));for(var o=0;o0?(b=Math.sqrt(w+1)*2,e[3]=.25*b,e[0]=(d-g)/b,e[1]=(h-l)/b,e[2]=(a-u)/b):s>f&&s>y?(b=Math.sqrt(1+s-f-y)*2,e[3]=(d-g)/b,e[0]=.25*b,e[1]=(a+u)/b,e[2]=(h+l)/b):f>y?(b=Math.sqrt(1+f-s-y)*2,e[3]=(h-l)/b,e[0]=(a+u)/b,e[1]=.25*b,e[2]=(d+g)/b):(b=Math.sqrt(1+y-s-f)*2,e[3]=(a-u)/b,e[0]=(h+l)/b,e[1]=(d+g)/b,e[2]=.25*b),e}function td(e,t,n,r,i){var o=1/Math.tan(t/2),s;return e[0]=o/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0?(s=1/(r-i),e[10]=(i+r)*s,e[14]=2*i*r*s):(e[10]=-1,e[14]=-2*r),e}var nd=td;function _o(e,t,n,r){var i=t[0],o=t[1],s=t[2],a=r[0],l=r[1],u=r[2],f=i-n[0],d=o-n[1],h=s-n[2],g=f*f+d*d+h*h;g>0&&(g=1/Math.sqrt(g),f*=g,d*=g,h*=g);var y=l*h-u*d,w=u*f-a*h,b=a*d-l*f;return g=y*y+w*w+b*b,g>0&&(g=1/Math.sqrt(g),y*=g,w*=g,b*=g),e[0]=y,e[1]=w,e[2]=b,e[3]=0,e[4]=d*b-h*w,e[5]=h*y-f*b,e[6]=f*w-d*y,e[7]=0,e[8]=f,e[9]=d,e[10]=h,e[11]=0,e[12]=i,e[13]=o,e[14]=s,e[15]=1,e}var rd=Ht;function cl(){var e=new Ke(3);return Ke!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function id(e){var t=new Ke(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function od(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function ys(e,t,n){var r=new Ke(3);return r[0]=e,r[1]=t,r[2]=n,r}function Er(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function sd(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function ad(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Eo(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function Wr(e,t){var n=t[0],r=t[1],i=t[2],o=n*n+r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e}function Ui(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function ai(e,t,n){var r=t[0],i=t[1],o=t[2],s=n[0],a=n[1],l=n[2];return e[0]=i*l-o*a,e[1]=o*s-r*l,e[2]=r*a-i*s,e}function hn(e,t,n){var r=t[0],i=t[1],o=t[2],s=n[3]*r+n[7]*i+n[11]*o+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*o+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*o+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*o+n[14])/s,e}function Cr(e,t,n){var r=n[0],i=n[1],o=n[2],s=n[3],a=t[0],l=t[1],u=t[2],f=i*u-o*l,d=o*a-r*u,h=r*l-i*a,g=i*h-o*d,y=o*f-r*h,w=r*d-i*f,b=s*2;return f*=b,d*=b,h*=b,g*=2,y*=2,w*=2,e[0]=a+f+g,e[1]=l+d+y,e[2]=u+h+w,e}var Fn=ad,ld=od;(function(){var e=cl();return function(t,n,r,i,o,s){var a,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,a=r;a0&&(s=1/Math.sqrt(s)),e[0]=n*s,e[1]=r*s,e[2]=i*s,e[3]=o*s,e}function dl(e,t,n){var r=t[0],i=t[1],o=t[2],s=t[3];return e[0]=n[0]*r+n[4]*i+n[8]*o+n[12]*s,e[1]=n[1]*r+n[5]*i+n[9]*o+n[13]*s,e[2]=n[2]*r+n[6]*i+n[10]*o+n[14]*s,e[3]=n[3]*r+n[7]*i+n[11]*o+n[15]*s,e}(function(){var e=ud();return function(t,n,r,i,o,s){var a,l;for(n||(n=4),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,a=r;afl?(h=Math.acos(g),y=Math.sin(h),w=Math.sin((1-r)*h)/y,b=Math.sin(r*h)/y):(w=1-r,b=r),e[0]=w*i+b*l,e[1]=w*o+b*u,e[2]=w*s+b*f,e[3]=w*a+b*d,e}function pd(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var i=0;t[4]>t[0]&&(i=1),t[8]>t[i*3+i]&&(i=2);var o=(i+1)%3,s=(i+2)%3;r=Math.sqrt(t[i*3+i]-t[o*3+o]-t[s*3+s]+1),e[i]=.5*r,r=.5/r,e[3]=(t[o*3+s]-t[s*3+o])*r,e[o]=(t[o*3+i]+t[i*3+o])*r,e[s]=(t[s*3+i]+t[i*3+s])*r}return e}var bs=fd,hl=cd,Ar=hd,pl=dd;(function(){var e=cl(),t=ys(1,0,0),n=ys(0,1,0);return function(r,i,o){var s=Ui(i,o);return s<-.999999?(ai(e,t,i),ld(e)<1e-6&&ai(e,n,i),Wr(e,e),zi(r,e,Math.PI),r):s>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(ai(e,i,o),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+s,pl(r,r))}})();(function(){var e=ws(),t=ws();return function(n,r,i,o,s,a){return dr(e,r,s,a),dr(t,i,o,a),dr(n,e,t,2*a*(1-a)),n}})();(function(){var e=jc();return function(t,n,r,i){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=i[0],e[4]=i[1],e[7]=i[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],pl(t,pd(t,e))}})();var Ae=function(){this.children=[],this.model=Ft(),this.worldModel=Ft(),this.modelViewProjection=Ft(),this.worldTransformNeedsUpdate=!0,this.modelViewProjectionNeedsUpdate=!0,this.type="Element",this.scene=null,this.parent=null};Ae.prototype.appendChild=function(t,n){n===void 0&&(n=!1),t.parent=this,n?this.children.unshift(t):this.children.push(t),t.bindScene&&t.bindScene(this.scene),this.scene&&this.scene.renderFrame()};Ae.prototype.insertChildAfter=function(t,n){t.parent=this;var r=this.children.indexOf(n);if(r<0)throw new Error("Could not find element to insert after");this.children.splice(r+1,0,t),t.bindScene&&t.bindScene(this.scene),this.scene&&this.scene.renderFrame()};Ae.prototype.bindScene=function(t){this.scene=t,this.worldTransformNeedsUpdate=!0,this.modelViewProjectionNeedsUpdate=!0};Ae.prototype.traverse=function(t,n){t(this);for(var r=0;r-1&&(this.children.splice(n,1),t.bindScene(null)),this.scene&&this.scene.renderFrame()};Ae.prototype.updateWorldTransform=function(t){t===void 0&&(t=!1),(this.worldTransformNeedsUpdate||t)&&(this.parent?Ht(this.worldModel,this.parent.worldModel,this.model):Wc(this.worldModel,this.model),this.modelViewProjectionNeedsUpdate=!0,this.worldTransformNeedsUpdate=!1,t=!0);for(var n=t,r=this.children,i=0;i1)){var f=Date.now()-r;if(!(f>xs.maxSingleTouchTime)){var d=u.changedTouches[0],h=d.pageX-i.x,g=d.pageY-i.y;h*h+g*g0?n=s:t=s;while(Math.abs(o)>_d&&++a=xd?Td(l,g,t,r):y===0?g:Ad(l,u,u+Zn,t,r)}return function(u){return u===0?0:u===1?1:Tr(a(u),n,i)}},_s={ease:xn(.25,.1,.25,1),easeIn:xn(.42,0,1,1),easeOut:xn(0,0,.58,1),easeInOut:xn(.42,0,.58,1),linear:xn(0,0,1,1)},Co=Fd,Md=wl,Pd=wl();function Fd(e,t,n){var r=Object.create(null),i=Object.create(null);n=n||{};var o=typeof n.easing=="function"?n.easing:_s[n.easing];o||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),o=_s.ease);var s=typeof n.step=="function"?n.step:Es,a=typeof n.done=="function"?n.done:Es,l=Ld(n.scheduler),u=Object.keys(t);u.forEach(function(S){r[S]=e[S],i[S]=t[S]-e[S]});var f=typeof n.duration=="number"?n.duration:400,d=Math.max(1,f*.06),h,g=0;return h=l.next(w),{cancel:y};function y(){l.cancel(h),h=0}function w(){var S=o(g/d);g+=1,b(S),g<=d?(h=l.next(w),s(e)):(h=0,setTimeout(function(){a(e)},0))}function b(S){u.forEach(function(C){e[C]=i[C]*S+r[C]})}}function Es(){}function Ld(e){if(!e){var t=typeof window!="undefined"&&window.requestAnimationFrame;return t?kd():Rd()}if(typeof e.next!="function")throw new Error("Scheduler is supposed to have next(cb) function");if(typeof e.cancel!="function")throw new Error("Scheduler is supposed to have cancel(handle) function");return e}function kd(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function Rd(){return{next:function(e){return setTimeout(e,1e3/60)},cancel:function(e){return clearTimeout(e)}}}function wl(){var e=new Set,t=new Set,n=0;return{next:i,cancel:i,clearAll:r};function r(){e.clear(),t.clear(),cancelAnimationFrame(n),n=0}function i(a){t.add(a),o()}function o(){n||(n=requestAnimationFrame(s))}function s(){n=0;var a=t;t=e,e=a,e.forEach(function(l){l()}),e.clear()}}Co.makeAggregateRaf=Md;Co.sharedScheduler=Pd;function Cs(e,t,n){typeof n!="object"&&(n={});var r=.001,i=typeof n.minVelocity=="number"?n.minVelocity:r,o=typeof n.amplitude=="number"?n.amplitude:.01,s=typeof n.cancelAnimationFrame=="function"?n.cancelAnimationFrame:Bd(),a=typeof n.requestAnimationFrame=="function"?n.requestAnimationFrame:Id(),l,u,f=342,d,h,g,y,w,b,S,C;return{start:m,setAmplitude:A,getAmplitude:E,stop:P,impulse:L,cancel:T};function A(R){o=R}function E(){return o}function T(){s(d),s(C)}function m(){l=e(),g=w=h=y=b=0,u=new Date,s(d),s(C),d=a(x)}function x(){var R=Date.now(),j=R-u;u=R;var H=e(),W=H.x-l.x,k=H.y-l.y,$=(H.z||0)-l.z;l=H;var q=1e3/(1+j);h=.8*W*q+.2*h,y=.8*k*q+.2*y,b=.8*$*q+.2*b,d=a(x)}function P(){!d||(s(d),d=0,s(C),C=0,L(h,y,b))}function L(R,j,H){u=Date.now(),(R<-i||R>i)&&(g=o*R),(j<-i||j>i)&&(w=o*j),(H<-i||H>i)&&(S=o*H),C=a(B)}function B(){var R=Date.now()-u,j=!1,H=0,W=0,k=0,$=Math.exp(-R/f);if(g&&(H=g*$,H>r||H<-r?j=!0:H=g=0),w&&(W=w*$,W>r||W<-r?j=!0:W=w=0),S&&(k=S*$,k>r||k<-r?j=!0:k=S=0),j){var q=e();t(q.x+H,q.y+W,q.z+k),C=a(B)}}}function Bd(){return typeof cancelAnimationFrame=="function"?cancelAnimationFrame:clearTimeout}function Id(){return typeof requestAnimationFrame=="function"?requestAnimationFrame:function(e){return setTimeout(e,16)}}var bl=function(t){this.x=t.clientX,this.y=t.clientY,this.lastX=this.x,this.lastY=this.y,this.id=t.identifier,this.createdAt=Date.now()};bl.prototype.move=function(t){this.lastX=this.x,this.lastY=this.y,this.x=t.clientX,this.y=t.clientY};var qr=0,Dd=1,Od=2,Nd=3,Gr=function(t){this.allowRotation=t,this.state=qr,this.canRotate=!1,this.canScale=!1,this.canIncline=!1,this.first=void 0,this.second=void 0,this.stateChanged=!1};Gr.prototype.reset=function(){this.state=qr,this.canRotate=!1,this.canScale=!1,this.canIncline=!1,this.first=void 0,this.second=void 0};Gr.prototype.isUnknown=function(){return this.state===qr};Gr.prototype.track=function(t,n){if(this.stateChanged=!1,this.state===qr){if(!(this.first&&this.second)){this.first={id:t.id,x:t.x,y:t.y},this.second={id:n.id,x:n.x,y:n.y};return}var r=this.first,i=this.second;if(t.id===i.id&&n.id===r.id){var o=r;r=i,i=o}var s=r.y-i.y,a=r.x-i.x,l=t.y-n.y,u=t.x-n.x,f=Math.abs(Math.hypot(s,a)-Math.hypot(l,u)),d=Math.atan2(s,a),h=Math.abs(d-Math.atan2(l,u));d=Math.abs(d)*180/Math.PI;var g=60,y=d42&&(this.canIncline=!0)}this.canIncline?(this.canRotate=!1,this.canScale=!1,this.canIncline=!0,this.state=Nd):h>.1&&this.allowRotation?(this.canRotate=!0,this.canScale=!0,this.canIncline=!1,this.state=Od):f>15&&(this.canRotate=!1,this.canScale=!0,this.canIncline=!1,this.state=Dd),this.stateChanged=!0}};function Vd(e,t){var n=!1,r=new Map,i=t.allowRotation,o=t.allowPinchRotation,s=t.panAnimation,a=t.rotateAnimation,l=new Gr(o&&i),u,f=Date.now(),d=f;return g(),{dispose:h};function h(){e.removeEventListener("touchstart",y,{passive:!1}),C()}function g(){e.addEventListener("touchstart",y,{passive:!1})}function y(A){n||(S(),n=!0),s.cancel(),a.cancel(),A.touches.length===1&&s.start();for(var E=0;E1&&l.isUnknown();(T!==0||m!==0)&&!ve&&(t.panByAbsoluteOffset(T,m),R=!0),R&&t.redraw()}function b(A){var E=Date.now(),T=E-f;f=E;for(var m=A.changedTouches,x=0;x350){var L=A.changedTouches[0],B=Math.abs(L.clientX-u.clientX),R=Math.abs(L.clientY-u.clientY);Math.hypot(B,R)<30&&t.zoomToClientCoordinates(u.clientX,u.clientY,.5,!0)}u=A.changedTouches[0]}}function S(){document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("touchend",b,{passive:!1}),document.addEventListener("touchcancel ",b,{passive:!1})}function C(){document.removeEventListener("touchmove",w),document.removeEventListener("touchend",b),document.removeEventListener("touchcancel ",b)}}function As(e,t,n){var r=e*Math.cos(t),i=e*Math.sin(t)*Math.cos(n),o=e*Math.sin(t)*Math.sin(n);return[i,o,r]}function Je(e,t,n){return en&&(e=n),e}function Dt(e,t){return e===void 0?t:e}function dt(e,t,n){return Math.abs(e)0?100:1,S=y(-w.deltaY*b);t.zoomToClientCoordinates(w.clientX,w.clientY,S),w.preventDefault()}function y(w){return Math.sign(w)*Math.min(.25,Math.abs(w/128))}}function Ao(e,t){if(typeof e=="string"){var n=document.querySelector(e);if(!n)throw new Error("Cannot resolve input target element: "+e);return n}return e||t}var xl=function(t){this.drawContext=t.getDrawContext(),this.updated=!1};function _l(e){var t=e.getDrawContext(),n=t.view,r=Math.PI*2,i=Math.PI*1.618,o=new xl(e),s=e.getOptions()||{},a=s.allowRotation===void 0?!0:!!s.allowRotation,l=s.allowPinchRotation===void 0?a:!!s.allowPinchRotation,u=Dt(s.minPhi,-1/0),f=Dt(s.maxPhi,1/0),d=Je(-Math.PI/2,u,f),h=Dt(s.minTheta,0),g=Dt(s.maxTheta,Math.PI),y=Je(0,h,g),w=Dt(s.minZoom,-1/0),b=Dt(s.maxZoom,1/0),S=Je(1,w,b),C=n.center,A=n.position,E=Cs(Y,re),T=Cs(X,te,{minVelocity:1}),m=[0,0,1],x={dispose:H,setViewBox:j,panByAbsoluteOffset:q,slideCenterUpDown:V,rotateByAngle:k,rotateByAbsoluteOffset:$,zoomCenterByScaleFactor:ve,zoomToClientCoordinates:Z,redraw:Me,allowRotation:a,allowPinchRotation:l,rotateAnimation:T,panAnimation:E},P=Ao(s.inputTarget,t.canvas),L=Ud(P,x),B=Vd(P,x),R=Hd(P,x);return Me(),x;function j(){return A=n.position,S=Math.hypot(A[2]),C[0]=A[0],C[1]=A[1],C[2]=0,y=Je(0,h,g),d=Je(-Math.PI/2,u,f),Me(),x}function H(){T.cancel(),E.cancel(),B.dispose(),L.dispose(),R.dispose()}function W(oe,de){var ue=e.getSceneCoordinate(oe,de),le=Fn(ue,ue,A);Wr(le,le);var ke=Ui(m,le);if(Math.abs(ke)>1e-7){var Ne=Ui(Fn([0,0,0],C,A),m)/ke;return Eo([0,0,0],A,le,Ne)}}function k(oe,de){d=Je(d+oe,u,f),y=Je(y+de,h,g)}function $(oe,de){if(!!a){var ue=t.width/t.height;d-=r*oe/t.width,y-=i*de/t.height*ue,y=Je(y,h,g),d=Je(d,u,f)}}function q(oe,de){var ue=t.width/t.height,le=2*S*Math.tan(t.fov/2),ke=ue*le*oe/(t.width/t.pixelRatio),Ne=le*de/(t.height/t.pixelRatio);z(ke,-Ne)}function Z(oe,de,ue,le){var ke=W(oe,de);if(!!ke){var Ne=ke[0]-C[0],c=ke[1]-C[1];if(le){var p={r:S,x:C[0],y:C[1]},v={r:Je(S*(1-ue),w,b),x:p.x+Ne*ue,y:p.y+c*ue};Co(p,v,{step:function(M){S=M.r,C[0]=M.x,C[1]=M.y,Me()}})}else ve(ue,Ne,c),Me()}}function z(oe,de){var ue=Math.cos(d),le=Math.sin(d);C[0]+=ue*de+le*oe,C[1]+=le*de-ue*oe}function V(oe){C[2]+=oe*S*.001}function Y(){return{x:C[0],y:C[1],z:C[2]}}function X(){return{x:d,y,z:0}}function te(oe,de){y=Je(de,h,g),d=Je(oe,u,f),Me()}function re(oe,de,ue){Er(C,oe,de,ue),Me()}function ve(oe,de,ue){var le=Je(S*(1-oe),w,b);le!==S&&(S=le,C[0]+=de*oe,C[1]+=ue*oe)}function Me(){var oe=As(S,y,d),de=Math.hypot(S,1),ue=y-Math.acos(S/de),le=As(de,ue,d);if(Fn(le,le,oe),Er(A,oe[0],oe[1],oe[2]),sd(A,A,C),_o(n.cameraWorld,A,C,le),xo(n.orientation,n.cameraWorld),n.update(),o.updated=!1,e.fire("transform",o),o.updated){Me();return}e.getRoot().scheduleMVPUpdate(),e.renderFrame()}}$c(Float64Array);function Hi(e,t){t===void 0&&(t={});var n,r,i=t.devicePixelRatio||window.devicePixelRatio,o=t.wglContextOptions,s=e.getContext(t.version===2?"webgl2":"webgl",o)||e.getContext("experimental-webgl",o);s.enable(s.BLEND),s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),s.clearColor(0,0,0,1),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT);var a=0,l=new Ae,u=!1,f=!1,d=Ao(t.inputTarget,e),h,g=new $t,y=Ft(),w=Ft(),b=t.fov===void 0?Math.PI*45/180:t.fov,S=t.near===void 0?.01:t.near,C=t.far===void 0?1/0:t.far,A={width:window.innerWidth,height:window.innerHeight,pixelRatio:i,canvas:e,projection:y,inverseProjection:w,view:g,fov:b};X();var E=jr({appendChild:ke,getSceneCoordinate:ve,getClientCoordinate:Me,getTransform:$,getRoot:H,getGL:j,removeChild:Ne,setViewBox:oe,setClearColor:q,getClearColor:Z,clear:le,dispose:V,renderFrame:de,getPixelRatio:P,setPixelRatio:R,getCameraController:k,setCameraController:W,getDrawContext:L,getOptions:B}),T=E.on;E.on=c,l.bindScene(E);var m=(t.controls||_l)(E),x;return z(),de(),E;function P(){return i}function L(){return A}function B(){return t}function R(p){i=p,A.pixelRatio=i,X()}function j(){return s}function H(){return l}function W(p){return m&&m.dispose(),m=p(E,A),m}function k(){return m}function $(){return l.model}function q(p,v,_,M){s.clearColor(p,v,_,M)}function Z(){return s.getParameter(s.COLOR_CLEAR_VALUE)}function z(){d.addEventListener("mousemove",re),x=vd(d,te),window.addEventListener("resize",Y,!0)}function V(){d.removeEventListener("mousemove",re),x&&x(),window.removeEventListener("resize",Y,!0),m.dispose(),l.dispose(),a&&(cancelAnimationFrame(a),a=0)}function Y(){X()}function X(){t.size?(n=e.width=t.size.width,r=e.height=t.size.height):(n=e.width=e.offsetWidth*i,r=e.height=e.offsetHeight*i),h=e.getBoundingClientRect(),s.viewport(0,0,n,r),A.width=n,A.height=r,l.worldTransformNeedsUpdate=!0,nd(y,b,n/r,S,C),Hn(w,y),de()}function te(p){if(!!u){var v=ve(p.clientX,p.clientY);!v||E.fire("click",{originalEvent:p,x:v[0],y:v[1],z:v[2]})}}function re(p){if(!!f){var v=ve(p.clientX,p.clientY);!v||E.fire("mousemove",{originalEvent:p,x:v[0],y:v[1],z:v[2]})}}function ve(p,v){p-=h.left,v-=h.top;var _=E.getPixelRatio(),M=_*p/n*2-1,F=(1-_*v/r)*2-1,O=[0,0,0],I=hn(O,[M,F,0],w);hn(I,I,g.cameraWorld),Fn(I,I,g.position),Wr(I,I);var U=0,N=(U-g.position[2])/I[2];return I[2]>0,Eo(I,g.position,I,N),I}function Me(p,v,_){_===void 0&&(_=0);var M=Ht(Ft(),y,g.matrix);Ht(M,M,l.model);var F=dl([0,0,0,0],[p,v,_,1],M),O=E.getPixelRatio(),I=n*(F[0]/F[3]+1)*.5/O,U=r*(1-(F[1]/F[3]+1)*.5)/O;return{x:I,y:U}}function oe(p){var v=A.pixelRatio,_=v*Math.max((p.top-p.bottom)/2,(p.right-p.left)/2),M=A.view,F=M.position,O=M.orientation;F[0]=(p.left+p.right)/2,F[1]=(p.top+p.bottom)/2,F[2]=_/Math.tan(A.fov/2),hl(O,0,0,0,1),A.view.update(),m.setViewBox&&m.setViewBox(p)}function de(p){if(p===void 0&&(p=!1),p)return ue();a||(a=requestAnimationFrame(ue))}function ue(){s.clear(s.COLOR_BUFFER_BIT),l.updateWorldTransform(),l.draw(s,A),a=0}function le(){s.clear(s.COLOR_BUFFER_BIT)}function ke(p,v){v===void 0&&(v=!1),l.appendChild(p,v),E.fire("append-child",p)}function Ne(p){l.removeChild(p),E.fire("remove-child",p)}function c(p,v,_){return p==="click"&&(u=!0),p==="mousemove"&&(f=!0),T(p,v,_)}}var $e={compile:$d,link:jd,getLocations:Wd,getAttributes:El,getUniforms:Cl,initBuffer:qd};function $d(e,t,n){var r=e.createShader(t);if(!r)throw new Error("Failed to create a shared "+n);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r)||"Failed to compile shader "+n);return r}function jd(e,t,n){var r=e.createProgram();if(!r)throw new Error("Failed to link a program");if(e.attachShader(r,t),e.attachShader(r,n),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))throw new Error(e.getProgramInfoLog(r)||"Failed to link a program");return r}function Wd(e,t){return{attributes:El(e,t),uniforms:Cl(e,t)}}function El(e,t){for(var n=Object.create(null),r=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES),i=0;i= 0.5) {discard;} + gl_FragColor = vColor; + } + `,n=` + uniform vec4 uColor; + uniform mat4 projectionMatrix; + uniform mat4 uModel; + uniform mat4 uView; + + attribute float aPointSize; + attribute vec3 aPosition; + attribute vec3 aPoint; + `+(e?"attribute vec4 aColor;":"")+` + + varying vec4 vColor; + varying vec3 vPosition; + + void main() { + vPosition = aPoint; + gl_Position = projectionMatrix * uView * uModel * vec4( aPosition + aPoint * aPointSize, 1.0 ); + vColor = `+(e?"aColor.abgr":"uColor")+`; + } +`;return{fragmentShaderCode:t,vertexShaderCode:n}}var To=function(t,n,r,i){i===void 0&&(i=1),this.r=t,this.g=n,this.b=r,this.a=i===void 0?1:i},So=function(t,n,r){this.offset=n,this._points=t,r!==void 0&&(this.data=r)};So.prototype.update=function(t){var n=this.offset,r=this._points.positions,i=this._points.is3D;r[n]=t.x,n++,r[n]=t.y,n++,i&&(r[n]=t.z||0,n++);var o=t.size||this._points.size||1;o!==void 0&&(r[n]=o),this.setColor(t.color)};So.prototype.setColor=function(t){if(!(!this._points.colors||t===void 0)){var n=this.offset+(this._points.is3D?4:3);this._points.colors[n]=t}};var Kd=function(e){function t(n,r){if(n===void 0)throw new Error("Point capacity should be defined");e.call(this),this.is3D=!r||r.is3D===void 0||r.is3D,this.allowColors=!r||r.allowColors===void 0||r.allowColors,this.itemsPerPoint=3,this.is3D&&(this.itemsPerPoint+=1),this.allowColors&&(this.itemsPerPoint+=1),this.capacity=n,this.count=0,this.color=new To(1,1,1,1),this._program=null,this.buffer=new ArrayBuffer(n*this.itemsPerPoint*4),this.positions=new Float32Array(this.buffer),this.colors=this.allowColors?new Uint32Array(this.buffer):null}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.draw=function(r,i){this._program||(this._program=Gd(r,this)),this._program.draw(i)},t.prototype.dispose=function(){this._program&&(this._program=null)},t.prototype.add=function(r,i){if(!r)throw new Error("Point is required");this.count>=this.capacity&&this._extendArray();var o=this.count*this.itemsPerPoint,s=new So(this,o,i);return s.update(r),this.count+=1,s},t.prototype._extendArray=function(){var r=new ArrayBuffer(this.buffer.byteLength*2),i=new Float32Array(r);this.positions&&i.set(this.positions),this.buffer=r,this.positions=i,this.allowColors&&(this.colors=new Uint32Array(r)),this.capacity*=2},t}(Ae),ui=Yr();function $i(e,t){var n=!!t.allowColors,r=[n,e],i=ui.get(r);if(!i){var o=Xd(n),s=o.frag,a=o.vert,l=$e.compile(e,e.VERTEX_SHADER,a),u=$e.compile(e,e.FRAGMENT_SHADER,s);i=$e.link(e,l,u),ui.set(r,i)}var f=$e.getLocations(e,i),d=e.createBuffer(),h=t.is3D?3:2,g=(h+1)*4,y=h*4,w={draw:S,dispose:b};return w;function b(){e.deleteBuffer(d),e.deleteProgram(i),ui.remove(r)}function S(C){if(t.count!==0){var A=t.buffer;e.useProgram(i),e.uniformMatrix4fv(f.uniforms.uModel,!1,t.worldModel),e.uniformMatrix4fv(f.uniforms.projectionMatrix,!1,C.projection),e.uniformMatrix4fv(f.uniforms.uView,!1,C.view.matrix);var E=t.color;e.uniform4f(f.uniforms.uColor,E.r,E.g,E.b,E.a),e.bindBuffer(e.ARRAY_BUFFER,d),t.isDirtyBuffer&&(e.bufferData(e.ARRAY_BUFFER,A,e.STATIC_DRAW),t.isDirtyBuffer=!1),e.enableVertexAttribArray(f.attributes.aPosition),n?(e.vertexAttribPointer(f.attributes.aPosition,h,e.FLOAT,!1,g,0),e.enableVertexAttribArray(f.attributes.aColor),e.vertexAttribPointer(f.attributes.aColor,4,e.UNSIGNED_BYTE,!0,g,y)):e.vertexAttribPointer(f.attributes.aPosition,h,e.FLOAT,!1,4*h,0),e.drawArrays(e.LINES,0,t.count*2)}}}function Xd(e){return{vert:`attribute vec3 aPosition; + varying vec4 vColor; + `+(e?"attribute vec4 aColor;":"")+` + uniform vec4 uColor; + uniform mat4 projectionMatrix; + uniform mat4 uModel; + uniform mat4 uView; + +void main() { + gl_Position = projectionMatrix * uView * uModel * vec4(aPosition, 1.0); + vColor = `+(e?"aColor.abgr":"uColor")+`; +}`,frag:`precision mediump float; + varying vec4 vColor; + void main() { + gl_FragColor = vColor; + }`}}var fi=Yr();function Zd(e,t){var n=Number.isFinite(t.width)&&t.width>0&&t.width!==1,r;if(n){if(r=e.getExtension("ANGLE_instanced_arrays"),!r)return console.error("ANGLE_instanced_arrays is not supported, thick lines are not possible"),$i(e,t)}else return $i(e,t);var i=!!t.allowColors,o=[i,e],s=fi.get(o);if(!s){var a=Qd(i),l=a.frag,u=a.vert,f=$e.compile(e,e.VERTEX_SHADER,u),d=$e.compile(e,e.FRAGMENT_SHADER,l);s=$e.link(e,f,d),fi.set(o,s)}var h=$e.getLocations(e,s),g=e.createBuffer(),y=t.is3D?3:2,w=i?2*(y+1)*4:2*y*4,b=e.createBuffer(),S=new Float32Array([-.5,0,-.5,1,.5,1,-.5,0,.5,1,.5,0]),C={isThickWire:!0,draw:E,dispose:A};return C;function A(){g&&e.deleteBuffer(g),b&&e.deleteBuffer(b),h&&(e.disableVertexAttribArray(h.attributes.aFrom),e.disableVertexAttribArray(h.attributes.aFromColor),e.disableVertexAttribArray(h.attributes.aTo),e.disableVertexAttribArray(h.attributes.aToColor),e.disableVertexAttribArray(h.attributes.aPosition)),e.deleteProgram(s),fi.remove(o)}function E(T){if(t.count!==0){var m=t.buffer;e.useProgram(s),e.uniformMatrix4fv(h.uniforms.uModel,!1,t.worldModel),e.uniformMatrix4fv(h.uniforms.projectionMatrix,!1,T.projection),e.uniformMatrix4fv(h.uniforms.uView,!1,T.view.matrix),e.uniform3fv(h.uniforms.uOrigin,T.view.position),e.uniform1f(h.uniforms.uWidth,t.width),e.uniform2f(h.uniforms.uResolution,T.width,T.height);var x=t.color;e.uniform4f(h.uniforms.uColor,x.r,x.g,x.b,x.a),e.bindBuffer(e.ARRAY_BUFFER,b),e.bufferData(e.ARRAY_BUFFER,S,e.STATIC_DRAW),e.enableVertexAttribArray(h.attributes.aPosition),e.vertexAttribPointer(h.attributes.aPosition,2,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,g),e.bufferData(e.ARRAY_BUFFER,m,e.DYNAMIC_DRAW),e.enableVertexAttribArray(h.attributes.aFrom),e.vertexAttribPointer(h.attributes.aFrom,y,e.FLOAT,!1,w,0),i?(e.enableVertexAttribArray(h.attributes.aFromColor),e.vertexAttribPointer(h.attributes.aFromColor,4,e.UNSIGNED_BYTE,!0,w,y*4),e.enableVertexAttribArray(h.attributes.aTo),e.vertexAttribPointer(h.attributes.aTo,y,e.FLOAT,!1,w,(y+1)*4),e.enableVertexAttribArray(h.attributes.aToColor),e.vertexAttribPointer(h.attributes.aToColor,4,e.UNSIGNED_BYTE,!0,w,(2*y+1)*4)):(e.enableVertexAttribArray(h.attributes.aTo),e.vertexAttribPointer(h.attributes.aTo,y,e.FLOAT,!1,w,y*4)),r.vertexAttribDivisorANGLE(h.attributes.aPosition,0),r.vertexAttribDivisorANGLE(h.attributes.aTo,1),r.vertexAttribDivisorANGLE(h.attributes.aFrom,1),r.vertexAttribDivisorANGLE(h.attributes.aFromColor,1),r.vertexAttribDivisorANGLE(h.attributes.aToColor,1),r.drawArraysInstancedANGLE(e.TRIANGLES,0,6,t.count),r.vertexAttribDivisorANGLE(h.attributes.aFrom,0),r.vertexAttribDivisorANGLE(h.attributes.aTo,0),r.vertexAttribDivisorANGLE(h.attributes.aFromColor,0),r.vertexAttribDivisorANGLE(h.attributes.aToColor,0)}}}function Qd(e){return{vert:`attribute vec3 aPosition, aFrom, aTo; + varying vec4 vColor; + `+(e?"attribute vec4 aFromColor, aToColor;":"")+` + uniform vec4 uColor; + uniform mat4 projectionMatrix; + uniform mat4 uModel; + uniform mat4 uView; + uniform float uWidth; + uniform vec2 uResolution; + + void main() { + // let's get the model point to clip space: + vec4 clip0 = projectionMatrix * uView * uModel * vec4(aFrom, 1.0); + vec4 clip1 = projectionMatrix * uView * uModel * vec4(aTo, 1.0); + + // And from the clip space move to the screen pixels + // (as we set width of the lines in pixels) + vec2 screen0 = uResolution * (0.5 * clip0.xy/clip0.w + 0.5); + vec2 screen1 = uResolution * (0.5 * clip1.xy/clip1.w + 0.5); + + // this is direction along the x axis + vec2 xBasis = normalize(screen1 - screen0); + // But since we set the width, we get the direction along the Y: + vec2 yBasis = vec2(-xBasis.y, xBasis.x); + + // Offset the original points: + vec2 pt0 = screen0 + uWidth * aPosition.x * yBasis; + vec2 pt1 = screen1 + uWidth * aPosition.x * yBasis; + + // and interpolate along the Y of the instanced geometry + // (remember, Y changes from 0 to 1): + vec2 pt = mix(pt0, pt1, aPosition.y); + vec4 clip = mix(clip0, clip1, aPosition.y); + + // Finally move back to the clip space: + gl_Position = vec4(clip.w * (2.0 * pt/uResolution - 1.0), clip.z, clip.w); + vColor = `+(e?"mix(aFromColor.abgr, aToColor.abgr, aPosition.y)":"uColor")+`; + }`,frag:`precision mediump float; + varying vec4 vColor; + void main() { + gl_FragColor = vColor; + }`}}var Mo=function(t,n){this.offset=n,this._wire=t,this.update=t.is3D?this.update3D:this.update2D};Mo.prototype.update2D=function(t,n){this._wire.isDirtyBuffer=!0;var r=this._wire.positions,i=this.offset;r[i+0]=t.x,r[i+1]=t.y,i+=2;var o=this._wire.allowColors;o&&(t.color!==void 0&&(this._wire.colors[i]=t.color),i+=1),r[i+0]=n.x,r[i+1]=n.y,o&&n.color!==void 0&&(this._wire.colors[i+2]=n.color)};Mo.prototype.update3D=function(t,n){this._wire.isDirtyBuffer=!0;var r=this._wire.positions,i=this.offset;r[i+0]=t.x,r[i+1]=t.y,r[i+2]=t.z||0,i+=3;var o=this._wire.allowColors;o&&(t.color!==void 0?this._wire.colors[i]=t.color:this._wire.colors[i]=Ts(this._wire.color),i+=1),r[i+0]=n.x,r[i+1]=n.y,r[i+2]=n.z||0,o&&(n.color!==void 0?this._wire.colors[i+3]=n.color:this._wire.colors[i+3]=Ts(this._wire.color))};function Ts(e){var t=Math.round(e.r*255),n=Math.round(e.g*255),r=Math.round(e.b*255),i=Math.round(e.a*255);return t<<24|n<<16|r<<8|i}function Jd(e,t,n){n===void 0&&(n=.5);var r=Ss(e),i=Ss(t);return[r[0]*n+(1-n)*i[0],r[1]*n+(1-n)*i[1],r[2]*n+(1-n)*i[2],r[3]*n+(1-n)*i[3]]}function Ss(e){return[e>>24&255/255,e>>16&255/255,e>>8&255/255,e&255/255]}function ji(e){var t=ci(e[0]),n=ci(e[1]),r=ci(e[2]);return"#"+t+n+r}function ci(e){var t=Math.floor(e*255).toString(16);return t.length===1?"0"+t:t}var Ln=function(e){function t(n,r){e.call(this);var i=4;this.allowColors=!r||r.allowColors===void 0||r.allowColors,this.is3D=!r||r.is3D===void 0||r.is3D,this.itemsPerLine=4,this.is3D&&(this.itemsPerLine+=2),this.allowColors&&(this.itemsPerLine+=2),this.capacity=n,this.count=0,this.color=new To(1,1,1,1),this.type="WireCollection",this._program=null,this.buffer=new ArrayBuffer(n*this.itemsPerLine*i),this.positions=new Float32Array(this.buffer),this.width=r&&r.width||1,this.allowColors?this.colors=new Uint32Array(this.buffer):this.colors=null,this.isDirtyBuffer=!0}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.draw=function(r,i){this._program||(this._program=Ms(this.width)?Zd(r,this):$i(r,this)),this._program.draw(i)},t.prototype.setLineWidth=function(r){if(r!==this.width){var i=Ms(r);if(this.width=r,!(!this._program||!this.scene)){if(i&&this._program.isThickWire){this.scene.renderFrame();return}if(this.parent){var o=this.parent;o.removeChild(this),this.dispose(),o.appendChild(this)}}}},t.prototype.add=function(r){if(!r)throw new Error("Line is required");this.count>=this.capacity&&this._extendArray();var i=this.count*this.itemsPerLine,o=new Mo(this,i);return o.update(r.from,r.to),this.count+=1,o},t.prototype.getLineColor=function(r,i){return this.allowColors&&r&&r.color&&i&&i.color?Jd(r.color,i.color):[this.color.r,this.color.g,this.color.b,this.color.a]},t.prototype.forEachLine=function(r){var i=this,o=i.positions,s=i.count,a=i.itemsPerLine,l=s*a;if(this.is3D)for(var u=0;u0}var di=Yr();function eh(e,t){var n=t.allowColors,r=t.is3D;n=!!n;var i=[n,e],o=di.get(i),s=2+(n?1:0)+(r?1:0),a=t.buffer;if(!o){var l=th(n),u=l.lineFSSrc,f=l.lineVSSrc,d=$e.compile(e,e.VERTEX_SHADER,f),h=$e.compile(e,e.FRAGMENT_SHADER,u);o=$e.link(e,d,h),di.set(i,o)}var g=$e.getLocations(e,o),y=r?3:2,w=(y+1)*4,b=y*4,S=e.createBuffer(),C={draw:E,dispose:A};return C;function A(){e.deleteBuffer(S),e.deleteProgram(o),di.remove(i)}function E(T,m){if(a.length!==0){e.useProgram(o),e.uniformMatrix4fv(g.uniforms.uModel,!1,T.worldModel),e.uniformMatrix4fv(g.uniforms.projectionMatrix,!1,m.projection),e.uniformMatrix4fv(g.uniforms.uView,!1,m.view.matrix),e.uniform3fv(g.uniforms.uOrigin,m.view.position);var x=T.color,P=T.nextElementIndex,L=T.madeFullCircle;if(e.uniform4f(g.uniforms.uColor,x.r,x.g,x.b,x.a),e.bindBuffer(e.ARRAY_BUFFER,S),e.enableVertexAttribArray(g.attributes.aPosition),e.bufferData(e.ARRAY_BUFFER,a,e.DYNAMIC_DRAW),n?(e.vertexAttribPointer(g.attributes.aPosition,y,e.FLOAT,!1,w,0),e.enableVertexAttribArray(g.attributes.aColor),e.vertexAttribPointer(g.attributes.aColor,4,e.UNSIGNED_BYTE,!0,w,b)):e.vertexAttribPointer(g.attributes.aPosition,y,e.FLOAT,!1,0,0),L){var B=a.byteLength/4/s-P;e.drawArrays(e.LINE_STRIP,P,B),P>1&&e.drawArrays(e.LINE_STRIP,0,P-1)}else e.drawArrays(e.LINE_STRIP,1,P-1)}}}function th(e){var t=`precision mediump float; +varying vec4 vColor; +void main() { + gl_FragColor = vColor; +} +`,n=`attribute vec3 aPosition; + varying vec4 vColor; + `+(e?"attribute vec4 aColor;":"")+` + uniform vec4 uColor; + uniform mat4 projectionMatrix; + uniform mat4 uModel; + uniform mat4 uView; + void main() { + gl_Position = projectionMatrix * uView * uModel * vec4(aPosition, 1.0); + vColor = `+(e?"aColor.abgr":"uColor")+`; + }`;return{lineVSSrc:n,lineFSSrc:t}}var nh=function(e){function t(n,r){e.call(this);var i=4;this.drawCount=0,this.madeFullCircle=!1,this.allowColors=!r||r.allowColors===void 0||r.allowColors,this.is3D=!r||r.is3D===void 0||r.is3D,this.itemsPerLine=2,this.allowColors&&(this.itemsPerLine+=1),this.is3D&&(this.itemsPerLine+=1),this.capacity=n,this.nextElementIndex=1,this._program=null,this.color=new To(1,1,1,1),this.buffer=new ArrayBuffer((n+1)*this.itemsPerLine*i),this.positions=new Float32Array(this.buffer),this.allowColors?this.colors=new Uint32Array(this.buffer):this.colors=null}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.draw=function(r,i){this._program||(this._program=eh(r,this)),this._program.draw(this,i)},t.prototype.add=function(r){var i=this.nextElementIndex*this.itemsPerLine,o=this.positions;if(o[i]=r.x,i+=1,o[i]=r.y,i+=1,this.is3D&&(o[i]=r.z||0,i+=1),this.colors&&(this.colors[i]=r.color===void 0?4294967295:r.color),this.nextElementIndex+=1,this.drawCount+=1,this.nextElementIndex>this.capacity){this.nextElementIndex=1;var s=0;o[s]=r.x,s+=1,o[s]=r.y,s+=1,this.is3D&&(o[s]=r.z||0,s+=1),this.colors&&(this.colors[s]=this.colors[i]),this.madeFullCircle=!0}},t.prototype.dispose=function(){this._program&&(this._program.dispose(),this._program=null)},t}(Ae);function Al(e){try{return window.WebGLRenderingContext?(e||(e=document.createElement("canvas")),!!(e.getContext("webgl")||e.getContext("experimental-webgl"))):!1}catch{return!1}}var Ps=rh;function rh(e){if(e=e||{},"uniqueLinkId"in e&&(console.warn("ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n",` +`,`Note: there is also change in default behavior: From now on each graph +is considered to be not a multigraph by default (each edge is unique).`),e.multigraph=e.uniqueLinkId),e.multigraph===void 0&&(e.multigraph=!1),typeof Map!="function")throw new Error("ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph");var t=new Map,n=[],r={},i=0,o=e.multigraph?E:A,s=[],a=k,l=k,u=k,f=k,d={addNode:w,addLink:C,removeLink:P,removeNode:S,getNode:b,getNodeCount:T,getLinkCount:m,getLinksCount:m,getNodesCount:T,getLinks:x,forEachNode:Z,forEachLinkedNode:j,forEachLink:R,beginUpdate:u,endUpdate:f,clear:B,hasLink:L,hasNode:b,getLink:L};return jr(d),h(),d;function h(){var z=d.on;d.on=V;function V(){return d.beginUpdate=u=$,d.endUpdate=f=q,a=g,l=y,d.on=z,z.apply(d,arguments)}}function g(z,V){s.push({link:z,changeType:V})}function y(z,V){s.push({node:z,changeType:V})}function w(z,V){if(z===void 0)throw new Error("Invalid node identifier");u();var Y=b(z);return Y?(Y.data=V,l(Y,"update")):(Y=new ih(z,V),l(Y,"add")),t.set(z,Y),f(),Y}function b(z){return t.get(z)}function S(z){var V=b(z);if(!V)return!1;u();var Y=V.links;if(Y){V.links=null;for(var X=0;X=0&&Y.links.splice(V,1)),X&&(V=hi(z,X.links),V>=0&&X.links.splice(V,1)),a(z,"remove"),f(),!0}function L(z,V){var Y=b(z),X;if(!Y||!Y.links)return null;for(X=0;X0&&(d.fire("changed",s),s.length=0)}function Z(z){if(typeof z!="function")throw new Error("Function is expected to iterate over graph nodes. You passed "+z);for(var V=t.values(),Y=V.next();!Y.done;){if(z(Y.value))return!0;Y=V.next()}}}function hi(e,t){if(!t)return-1;if(t.indexOf)return t.indexOf(e);var n=t.length,r;for(r=0;r'),t.open&&e.write(t.open()),e.write(` + + +`),e.background&&e.write('')}function lh(e,t){t.close&&e.write(t.close()),e.write("")}function uh(e,t,n){if(!!e.scene){var r=n.beforeWrite,i=n.round,o=Ps(),s=new Map,a=e.multiColorSegment,l=ch(e,t,i);e.forEachLine(function(f,d){var h=l(f.x,f.y,f.z),g=l(d.x,d.y,d.z);if(!(h.isBehind||g.isBehind)&&ph(h,g,t.width,t.height)){var y=ji(e.getLineColor(f,d)),w=h.x+"|"+h.y,b=g.x+"|"+g.y,S=o;a&&(S=s.get(y),S||(S=Ps(),s.set(y,S))),S.getNode(w)||S.addNode(w,h),S.getNode(b)||S.addNode(b,g),S.hasLink(w,b)||S.addLink(w,b,{stroke:y})}});var u=[];a?s.forEach(function(f,d){u.push([f,d])}):u.push([o,ji(e.getLineColor())]),u.forEach(function(f){var d=f[0],h=f[1];if(d.getLinksCount()===0)return;var g=e.width===void 0?1:e.width,y=g/e.scene.getPixelRatio(),w='fill="none" stroke-width="'+y+'" stroke="'+h+'"',b=e.id?'":"";t.write(b);var S=fh(d),C=null,A=null;S.forEach(function(T){var m=T.from,x=T.to;if(m!==C)if(x===C){var P=m;m=x,x=P}else E(),A=[];A&&A.push(m,x),C=x}),E(),t.write("");function E(){if(!!A){var T=A.map(function(x){var P=d.getNode(x);if(P)return P.data;throw new Error("Node is found in the path construction, but missing in the graph")});if(!(r&&!r(T))){var m="M"+T[0].x+" "+T[0].y+" L"+T.slice(1).map(function(x){return x.x+" "+x.y}).join(",");t.write('')}}}})}}function fh(e){var t=new Set,n=[],r=[];return e.forEachNode(function(o){t.has(o.id)||(r.push({to:o.id}),i())}),n;function i(){for(var o=function(){var s=r.pop();s.to&&s.from&&n.push({from:s.from,to:s.to}),!t.has(s.to)&&(t.add(s.to),e.forEachLinkedNode(s.to,function(a){t.has(a.id)||r.push({from:s.to,to:a.id})},!1))};r.length;)o()}}function ch(e,t,n){var r=t.width,i=t.height,o=t.projection,s=t.view,a=Ht(Ft(),o,s.matrix);Ht(a,a,e.worldModel);var l=hh(n);return function(u,f,d){var h=dl([0,0,0,0],[u,f,d||0,1],a),g=l(r*(h[0]/h[3]+1)*.5),y=l(i*(1-(h[1]/h[3]+1)*.5));return{x:g,y,isBehind:h[3]<=0}}}function dh(e){return e}function hh(e){return e===void 0?dh:e===!0||e===0?Math.round:function(t){return Math.round(t*e)/e}}function ph(e,t,n,r){return Qn(e,t,{x:0,y:0},{x:0,y:1})&&Qn(e,t,{x:0,y:0},{x:1,y:0})&&Qn(e,t,{x:0,y:r},{x:0,y:-1})&&Qn(e,t,{x:n,y:0},{x:-1,y:0})}function Qn(e,t,n,r){var i=ks(e,n,r),o=ks(t,n,r);if(i<=0&&o<=0)return!1;if(i>0&&o>0)return!0;var s=i/(i-o),a=e.x+s*(t.x-e.x),l=e.y+s*(t.y-e.y);return i<=0?(e.x=a,e.y=l):(t.x=a,t.y=l),!0}function ks(e,t,n){return(e.x-t.x)*n.x+(e.y-t.y)*n.y}var Jn=.5*Math.PI/180,Rs=[0,0,-1];function vh(e,t,n,r){n||(n=Function.prototype),e.addEventListener("touchstart",b),e.addEventListener("touchend",S);var i="deviceorientationabsolute";window.addEventListener("orientationchange",g);var o=!0,s=[0,0,0,1],a=[0,0,0,1],l=[0,0,0,1];g();var u={isEnabled:!1,isAbsolute:!0,useCurrentOrientation:d,dispose:w,enable:f};return u;function f(C){u.isEnabled=C,u.isEnabled?window.DeviceOrientationEvent!==void 0&&window.DeviceOrientationEvent.requestPermission!==void 0?DeviceOrientationEvent.requestPermission().then(function(A){A==="granted"?(i="deviceorientation",window.addEventListener(i,h)):u.isEnabled=!1,r&&r.fire("device-orientation",u.isEnabled)}).catch(function(A){u.isEnabled=!1,r&&r.fire("device-orientation",u.isEnabled)}):window.addEventListener(i,h):(b(),r&&r.fire("device-orientation",u.isEnabled))}function d(){o=!0}function h(C){var A=C.alpha,E=C.beta,T=C.gamma;if(C.absolute&&A===null&&E===null&&T===null){window.removeEventListener("deviceorientationabsolute",h),window.addEventListener("deviceorientation",h),i="deviceorientation",u.isAbsolute=!1;return}if(y(A,E,T),o){o=!1;var m=Cr([0,0,0],Rs,a),x=Cr([0,0,0],Rs,t),P=m[0]*x[0]+m[1]*x[1],L=Math.sqrt(m[0]*m[0]+m[1]*m[1]),B=Math.sqrt(x[0]*x[0]+x[1]*x[1]),R=Math.acos(P/(L*B))/2,j=Math.sign(m[0]*x[1]-m[1]*x[0]);s[2]=j*Math.sin(R),s[3]=Math.cos(R)}Ar(a,a,l),Ar(t,s,a),n()}function g(){var C=window.orientation||0,A=-C*Jn;l[2]=Math.sin(A),l[3]=Math.cos(A)}function y(C,A,E){var T=A?A*Jn:0,m=E?E*Jn:0,x=C?C*Jn:0,P=Math.cos(T),L=Math.cos(m),B=Math.cos(x),R=Math.sin(T),j=Math.sin(m),H=Math.sin(x);a[0]=R*L*B-P*j*H,a[1]=P*j*B+R*L*H,a[2]=P*L*H+R*j*B,a[3]=P*L*B-R*j*H}function w(){e.removeEventListener("touchstart",b),e.removeEventListener("touchend",S),window.removeEventListener("deviceorientationabsolute",h),window.removeEventListener("deviceorientation",h),window.removeEventListener("orientationchange",g)}function b(C){o||(o=!0,C&&C.preventDefault(),window.removeEventListener(i,h))}function S(C){C.touches.length||(o=!0,u.isEnabled&&(window.removeEventListener(i,h),window.addEventListener(i,h)))}}var Bs=[0,0,-1],ie={MOVE_FORWARD:1,MOVE_BACKWARD:2,MOVE_LEFT:3,MOVE_RIGHT:4,MOVE_UP:5,MOVE_DOWN:6,TURN_LEFT:7,TURN_RIGHT:8,TURN_UP:9,TURN_DOWN:10};function gh(e){var t=e.getDrawContext(),n=t.view,r=n.position,i=n.center,o=e.getOptions()||{},s=[0,0,1],a=Math.PI,l=Math.PI*1.618,u=Dt(o.captureMouse,!1),f,d,h=[0,0,0,1],g=0,y=[0,0,0,1],w=[0,0,0,1],b=[0,0,0],S=0,C=0,A=0,E=Ao(o.inputTarget,t.canvas);E.style.outline="none",E.getAttribute("tabindex")||E.setAttribute("tabindex","0"),E.addEventListener("keydown",re),E.addEventListener("keyup",ve),E.addEventListener("mousedown",Me),E.addEventListener("touchmove",le),E.addEventListener("touchstart",oe),E.addEventListener("wheel",de),document.addEventListener("pointerlockchange",c,!1);var T=new xl(e),m=0,x=0,P=0,L=0,B=0,R=0,j=0,H=0,W=0,k=0,$=0,q={};q[ie.MOVE_FORWARD]=!1,q[ie.MOVE_BACKWARD]=!1,q[ie.MOVE_LEFT]=!1,q[ie.MOVE_RIGHT]=!1,q[ie.MOVE_UP]=!1,q[ie.MOVE_DOWN]=!1,q[ie.TURN_LEFT]=!1,q[ie.TURN_RIGHT]=!1,q[ie.TURN_UP]=!1,q[ie.TURN_DOWN]=!1;var Z=.01,z=3,V=.01,Y={dispose:be,handleCommand:I,setViewBox:N,getUpVector:ee,lookAt:K,enableMouseCapture:_,enableDeviceOrientation:M,isDeviceOrientationEnabled:F,setRotationSpeed:function(J){return a=J,Y},setMoveSpeed:function(J){return Z=J,Y},setScrollSpeed:function(J){return z=J,Y},setFlySpeed:function(J){return V=J,Y},setSpeed:function(J){return Z=J,V=J,Y},getRotationSpeed:function(){return a},getMoveSpeed:function(){return Z},getScrollSpeed:function(){return z},getFlySpeed:function(){return V},getKeymap:function(){return X},getMouseCapture:function(){return u}},X={87:ie.MOVE_FORWARD,65:ie.MOVE_LEFT,83:ie.MOVE_BACKWARD,68:ie.MOVE_RIGHT,81:ie.TURN_LEFT,37:ie.TURN_LEFT,69:ie.TURN_RIGHT,39:ie.TURN_RIGHT,38:ie.TURN_UP,40:ie.TURN_DOWN,16:ie.MOVE_DOWN,32:ie.MOVE_UP};jr(Y);var te=vh(E,n.orientation,ne,Y);return Dt(o.useDeviceOrientation,!0)&&te.enable(!0),Y;function re(D){O(D,1)}function ve(D){O(D,0)}function Me(D){D.which===1&&(document.pointerLockElement?document.exitPointerLock():u?E.requestPointerLock():(E.focus(),document.addEventListener("mousemove",ke),document.addEventListener("mouseup",Ne),f=D.clientX,d=D.clientY,D.preventDefault()))}function oe(D){D.touches.length===1&&(f=D.touches[0].clientX,d=D.touches[0].clientY)}function de(D){D.preventDefault();var J=D.deltaMode>0?100:1,Ce=z*ue(-D.deltaY*J),yt=+new Date,Qe=D.clientX,Ct=D.clientY;if(document.pointerLockElement&&(Qe=t.width/(t.pixelRatio*2),Ct=t.height/(t.pixelRatio*2)),document.pointerLockElement||yt-S>200||Math.hypot(Qe-C,Ct-A)>20){var Re=[0,0,-1];Re[0]=(Qe*t.pixelRatio/t.width-.5)*2,Re[1]=(1-Ct*t.pixelRatio/t.height-.5)*2,hn(Re,Re,rd([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t.view.cameraWorld,t.inverseProjection)),b=Fn([0,0,0],Re,n.position),Wr(b,b);var rt=id(i);y=bs(n.orientation),K(r,Re),w=bs(n.orientation),K(r,rt),C=Qe,A=Ct,g=0,S=yt}g<1&&(dr(h,y,w,g),hl(n.orientation,h[0],h[1],h[2],h[3]),g+=.01),r[0]+=Z*Ce*b[0],r[1]+=Z*Ce*b[1],r[2]+=Z*Ce*b[2],ne(),D.preventDefault()}function ue(D){return Math.sign(D)*Math.min(.25,Math.abs(D/128))}function le(D){if(D.touches.length===1){var J=D.touches[0].clientY-d,Ce=D.touches[0].clientX-f;v(-Ce,J),f=D.touches[0].clientX,d=D.touches[0].clientY,D.preventDefault()}}function ke(D){var J=D.clientY-d,Ce=D.clientX-f;v(-Ce,J),f=D.clientX,d=D.clientY,D.preventDefault()}function Ne(D){document.removeEventListener("mousemove",ke),document.removeEventListener("mouseup",Ne)}function c(D){document.pointerLockElement?document.addEventListener("mousemove",p,!1):(document.removeEventListener("mousemove",p,!1),H=0,k=0),Y.fire("pointer-locked",document.pointerLockElement)}function p(D){v(D.movementX,-D.movementY)}function v(D,J){var Ce=a*D/t.width,yt=l*J/t.height;he(Ce,yt),ne()}function _(D){return u=D,Y.fire("mouse-capture",D),Y}function M(D){te.enable(D)}function F(){return te.isEnabled}function O(D,J){if(mh(D)){L=0;return}var Ce=X[D.which];Ce&&I(Ce,J)}function I(D,J){switch(D){case ie.MOVE_FORWARD:P=J;break;case ie.MOVE_BACKWARD:P=-J;break;case ie.MOVE_LEFT:x=J;break;case ie.MOVE_RIGHT:x=-J;break;case ie.MOVE_UP:L=J;break;case ie.MOVE_DOWN:L=-J;break;case ie.TURN_LEFT:W=-J;break;case ie.TURN_RIGHT:W=J;break;case ie.TURN_UP:$=J;break;case ie.TURN_DOWN:$=-J;break;default:throw new Error("Unknown command "+D)}U()}function U(){m||(m=requestAnimationFrame(Q))}function N(D){var J=e.getPixelRatio(),Ce=J*Math.max((D.top-D.bottom)/2,(D.right-D.left)/2),yt=(D.left+D.right)/2,Qe=(D.top+D.bottom)/2,Ct=Ce/Math.tan(t.fov/2);return K([yt,Qe,Ct],[yt,Qe,0]),Y}function Q(){m=0;var D=.9,J=!1;B=dt(B*D+x,.5,0),R=dt(R*D+P,.5,0),j=dt(j*D+L,.5,0),H=dt(H*D+W/2,Math.PI/360,0),k=dt(k*D+$/6,Math.PI/360,0),(B||R)&&(we(B*Z,R*Z),J=!0),j&&(r[2]+=j*V,J=!0),(k||H)&&(he(H*.01,k*.01),J=!0),J&&(ne(),U()),q[ie.MOVE_LEFT]=B>0,q[ie.MOVE_RIGHT]=B<0,q[ie.MOVE_FORWARD]=R>0,q[ie.MOVE_BACKWARD]=R<0,q[ie.MOVE_UP]=j>0,q[ie.MOVE_DOWN]=j<0,q[ie.TURN_LEFT]=H<0,q[ie.TURN_RIGHT]=H>0,Y.fire("move",q)}function K(D,J){return Er(r,D[0],D[1],D[2]),Er(i,J[0],J[1],J[2]),_o(n.cameraWorld,r,i,s),xo(n.orientation,n.cameraWorld),Hn(n.matrix,n.cameraWorld),ne(),Y}function ee(){return s}function ne(){if(n.update(),hn(i,Bs,n.cameraWorld),T.updated=!1,e.fire("transform",T),T.updated){ne();return}e.getRoot().scheduleMVPUpdate(),e.renderFrame()}function he(D,J){D&&(Ar(n.orientation,zi([0,0,0,0],Bs,D),n.orientation),te.useCurrentOrientation()),J&&Ar(n.orientation,n.orientation,zi([0,0,0,0],[1,0,0],J))}function we(D,J){var Ce=Cr([0,0,0],[-D,0,-J],n.orientation);r[0]+=Ce[0],r[1]+=Ce[1]}function be(){cancelAnimationFrame(m),m=0,E.removeEventListener("keydown",re),E.removeEventListener("keyup",ve),E.removeEventListener("mousedown",Me),E.removeEventListener("touchmove",le),E.removeEventListener("touchstart",oe),E.removeEventListener("wheel",de),document.removeEventListener("mousemove",p,!1),document.removeEventListener("pointerlockchange",c,!1),document.removeEventListener("mousemove",ke),document.removeEventListener("mouseup",Ne),te.dispose()}}function mh(e){return e.altKey||e.ctrlKey||e.metaKey}function yh(e,t){var n="navigation-controls",r=document.createElement("div");r.classList.add(n),r.innerHTML=wh();var i=document.createElement("style");i.appendChild(document.createTextNode(xh(n))),document.querySelector("head").appendChild(i),e.appendChild(r);var o=Array.from(r.querySelectorAll("a.navigation-btn")),s=o.map(f),a=r.querySelector("#capture-mouse");t.getMouseCapture()&&(a.checked=!0),a.addEventListener("change",d);var l=r.querySelector("#device-orientation");return l&&(l.checked=t.isDeviceOrientationEnabled(),l.addEventListener("change",g)),t.on("move",w),t.on("mouse-capture",h),t.on("device-orientation",y),t.on("pointer-locked",u),{dispose:S};function u(C){var A=r.querySelector(".cross");A&&(A.style.display=C?"block":"none")}function f(C){var A=b(C);return _h(C,function(E){t.handleCommand(A,E?1:0)})}function d(C){t.enableMouseCapture(a.checked)}function h(C){a.checked=C}function g(){t.enableDeviceOrientation(l.checked)}function y(C){l&&(l.checked=C)}function w(C){o.forEach(function(A){C[b(A)]?A.classList.add("down"):A.classList.remove("down")})}function b(C){return Number.parseInt(C.getAttribute("data-command"),10)}function S(){t.off("move",w),t.off("mouse-capture",h),t.off("device-orientation",y),t.off("pointer-locked",u),s.forEach(function(C){return C()}),r.parentElement&&r.parentElement.removeChild(r),i.parentElement&&i.parentElement.removeChild(i)}}function wh(){return` + + + +
+ + +
+ `+bh()+` +
+
+`}function bh(){return window.DeviceOrientationEvent&&"ontouchstart"in window?`
+ + +
`:""}function xh(e){var t="."+e;return` +`+t+` { + position: fixed; + bottom: 8px; + left: 8px; + font-family: 'Avenir', Helvetica, Arial, sans-serif +} +`+t+` * { + box-sizing: border-box; +} +`+t+` label { + color: white; +} +`+t+` .nav-key-legend { + text-align: center; + font-size: 14px; +} +`+t+` .navigation-row { + display: flex; +} +`+t+` .item { + width: 42px; + height: 42px; + margin: 2px; +} +`+t+` .navigation-btn { + background: rgba(0,0,0,0.2); + box-shadow: 0 2px 4px #000, 0 -1px 0 rgb(0 0 0 / 5%); + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + text-decoration: none; + display: flex; + width: 42px; + flex-direction: column; + color: #cecece; +} +`+t+` .navigation-btn.down { + background: rgba(250,250,250,.2); +} +`+t+` .padded { + margin-left: 10px; +} +`+t+` .navigation-btn.secondary { + width: 42px; + height: 42px; + transform: scale(0.70); +} + +`+t+` .navigation-btn.secondary svg { + padding: 4px; +} +`+t+` .navigation-btn.secondary .nav-key-legend { + color: #aaa; +} +`+t+` .navigation-btn.secondary.left { + transform-origin: right bottom; +} +`+t+` .navigation-btn.secondary.right { + transform-origin: left bottom; +} +`+t+` .navigation-btn.wide { + width: 75px; +} +`+t+` .navigation-btn svg { + fill: white; + padding-top: 4px; +} +`+t+` .cursor-legend { + margin-top: 8px; + display: none; +} + +`+t+` .cross { + position: fixed; + pointer-events: none; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 68px; + color: white; + display: none; +} +@media (pointer: fine) { + `+t+` .cursor-legend { + display: block; + } +}`}function _h(e,t,n){n===void 0&&(n=15);var r;return e.addEventListener("mousedown",o),e.addEventListener("touchstart",o),e.addEventListener("keydown",l),e.addEventListener("keyup",u),i;function i(){e.removeEventListener("mousedown",o),e.removeEventListener("touchstart",o),e.removeEventListener("keydown",l),e.removeEventListener("keyup",u),document.removeEventListener("mouseup",a),document.removeEventListener("touchend",f),document.removeEventListener("touchcancel",f),clearTimeout(r)}function o(h){h.preventDefault(),document.addEventListener("mouseup",a),document.addEventListener("touchend",f),document.addEventListener("touchcancel",f),s()}function s(){t(1),r=setTimeout(s,n)}function a(){d()}function l(h){h.which===13&&(t(1),h.preventDefault())}function u(h){h.which===13&&(t(0),h.preventDefault())}function f(){d()}function d(){clearTimeout(r),document.removeEventListener("mouseup",a),document.removeEventListener("touchend",f),document.removeEventListener("touchcancel",f),t(0)}}function Eh(e,t){t===void 0&&(t={}),e.getCameraController();var n={redraw:Function.prototype,dispose:Function.prototype},r=t.lineColor||196194594,i=t.maxAlpha||255,o=u(r),s=f(t.cursorColor||4294967295);return e.on("transform",l),{dispose:a,update:l};function a(){e.off("transform",l),o.dispose(),s.dispose()}function l(){o.redraw(),s.redraw()}function u(d){if(t.showGrid===!1)return n;var h=32*2,g=new Ln(2*(h+1),{width:2.5,is3D:!0,allowColors:!0});g.svgInvisible=!0;var y=new Ln(2*(h+1),{width:1.5,is3D:!0,allowColors:!0});y.svgInvisible=!0;var w=e.getDrawContext(),b=w.view.center;return A(),e.appendChild(y),e.appendChild(g),{redraw:A,dispose:S};function S(){e.removeChild(y),e.removeChild(g)}function C(T){return 1-(T-Math.floor(T))}function A(){var T=e.getDrawContext().view.position,m=T[0]-b[0],x=T[1]-b[1],P=T[2]-b[2],L=Math.sqrt(m*m+x*x+P*P),B=L*Math.tan(w.fov/2),R=Math.log10(B),j=Math.pow(10,Math.floor(R)),H=C(R),W=Math.round(H*i),k=Math.floor(b[0]/j)*j-Math.floor(h*j/2),$=Math.floor(b[1]/j)*j-Math.floor(h*j/2),q=k+j*h,Z=$+j*h;E(y,k,$,q,Z,j,W),E(g,k,$,q,Z,j*10,i-W)}function E(T,m,x,P,L,B,R){T.model[14]=b[2],T.worldTransformNeedsUpdate=!0,T.count=0;for(var j=d&4294967040|R,H=Math.ceil(x/B)*B,W=H;W<=L;W+=B)T.add({from:{x:m,y:W,color:j},to:{x:P,y:W,color:j}});for(var k=Math.ceil(m/B)*B,$=k;$<=P;$+=B)T.add({from:{x:$,y:x,color:j},to:{x:$,y:L,color:j}})}}function f(d){if(t.showCursor===!1)return n;var h=360,g=e.getDrawContext().view.center,y=e.getDrawContext().view.position,w=new Ln(h+1,{width:3,is3D:!0,allowColors:!0});w.svgInvisible=!0;for(var b,S=[],C=0;C<=h;++C)S.push(w.add({from:{x:0,y:0,color:d},to:{x:C,y:C,color:d}}));return e.appendChild(w),E(),{redraw:E,dispose:A};function A(){e.removeChild(w)}function E(){var T=y[0]-g[0],m=y[1]-g[1],x=y[2]-g[2],P=Math.sqrt(T*T+m*m+x*x);P*=.025;for(var L=0;L<=h+1;++L){var B=L/h*2*Math.PI;if(L===0){b={x:P*Math.cos(B),y:P*Math.sin(B),color:d};continue}var R={x:P*Math.cos(B),y:P*Math.sin(B),color:d};S[L-1].update(b,R),b=R}w.model[12]=g[0],w.model[13]=g[1],w.model[14]=g[2],w.worldTransformNeedsUpdate=!0}}}var Ch={mat4:"uniformMatrix4fv",mat3:"uniformMatrix3fv",mat2:"uniformMatrix2fv",vec4:"uniform4fv",vec3:"uniform3fv",vec2:"uniform2fv",float:"uniform1f",bool:"uniform1i"},Po=function(t,n){var r=Ch[n];if(!r)throw new Error("Function name for uniform is required");this.name=t,this.functionName=r,this.location=this.name+"UniformLocation"};Po.prototype.getInitBlockForDraw=function(){return"let "+this.location+" = gl.getUniformLocation(program, '"+this.name+"');"};Po.prototype.getDraw=function(){return this.functionName.indexOf("Matrix")>-1?"gl."+this.functionName+"("+this.location+", false, uniforms."+this.name+");":"gl."+this.functionName+"("+this.location+", uniforms."+this.name+");"};var pn=function(t,n){n===void 0&&(n=0),this.name=t,this.offset=n,this.variableName=t+"Texture",this.ready=this.variableName+"Ready",this.location=this.name+"UniformLocation",this.isTexture=!0};pn.prototype.getInitBlockForDraw=function(){return` + let `+this.location+" = gl.getUniformLocation(program, '"+this.name+`'); + let `+this.variableName+` = gl.createTexture(); + let `+this.ready+` = false; +`};pn.prototype.getTextureInitCanvasBlock=function(){return` + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); + gl.bindTexture(gl.TEXTURE_2D, `+this.variableName+`); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureCanvas); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + `+this.ready+" = true"};pn.prototype.getDraw=function(){return` + gl.activeTexture(gl.TEXTURE`+this.offset+`); + gl.bindTexture(gl.TEXTURE_2D, `+this.variableName+`); + gl.uniform1i(`+this.location+", "+this.offset+`); +`};var lt=function(){this.type="gl.FLOAT",this.debug=!1,this.bufferViewType="Float32Array",this.count=1,this.name=void 0,this.bytePerElement=4};lt.prototype.setName=function(t){this.name=t};lt.prototype.getInitBlockForBuffer=function(t){this.ensureNameIsSet();var n=t?"let ":"";return""+n+this.name+"Array = new "+this.bufferViewType+"(buffer);"};lt.prototype.getInitBlockForDraw=function(){this.ensureNameIsSet();var t=this,n=t.name;return"let "+n+"AttributeLocation = gl.getAttribLocation(program, '"+n+"');"};lt.prototype.getAddBlock=function(t,n){throw new Error("Concrete types have to implement this")};lt.prototype.getMoveBlock=function(t,n){throw new Error("Concrete type have to implement `getMoveBlock`")};lt.prototype.getGetBlock=function(t){throw new Error("Concrete types have to implement `getGetBlock`")};lt.prototype.getDivisor=function(t){this.ensureNameIsSet();var n=this.name+"AttributeLocation";return"if ("+n+" > -1) gle.vertexAttribDivisorANGLE("+n+", "+t+");"};lt.prototype.getDraw=function(t,n){this.ensureNameIsSet();var r=this.name+"AttributeLocation";return` + gl.enableVertexAttribArray(`+r+`); + gl.vertexAttribPointer(`+r+", "+this.count+", "+this.type+", false, "+t+", "+n+");"};lt.prototype.ensureNameIsSet=function(){if(!this.name)throw new Error("You have to call setName() before using attributes")};var hr=function(e){function t(n){e.call(this),this.count=n}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.getAddBlock=function(r,i){i===void 0&&(i=` +`);var o=this.name,s=o+"Array",a=[];this.debug&&a.push("if (item."+o+` === undefined) throw new Error('Attribute "`+o+`" is missing'); +`);for(var l=0;l glBuffer = newBuffer,"])}function h(T,m){m.addToInit(["let glBuffer = gl.createBuffer();","if (!glBuffer) throw new Error('failed to create a WebGL buffer');",""]),m.addToAPI(["getGLBuffer: () => glBuffer,"])}function g(T,m){var x=T.uniforms,P=[];if(x.forEach(function(R){R instanceof pn&&P.push(R)}),!!P.length){m.addToAPI("setTextureCanvas: setTextureCanvas,");var L=P.map(function(R){return` + case '`+R.name+`': { + `+R.getTextureInitCanvasBlock()+` + return; + } + `});m.addToImplementation(` + function setTextureCanvas(textureName, textureCanvas) { + switch(textureName) { + `+L.join(` + `)+` + } + throw new Error('Unknown texture name: ' + textureName); + } +`);var B=P.map(function(R){return"case '"+R.name+"': return "+R.variableName+";"});m.addToAPI("getTextureByName: getTextureByName,"),m.addToImplementation(` + function getTextureByName(textureName) { + switch(textureName) { + `+B.join(` + `)+` + } + throw new Error('Unknown texture name: ' + textureName); + } +`)}}function y(T,m){var x=T.attributes,P=T.instanced,L=T.uniforms,B=T.bytePerVertex;T.itemPerVertex;var R=e.sourceBuffer&&e.sourceBuffer.getCode();R?(m.addToInit(R.bufferInit),m.addBufferInit(R.bufferInit)):x.forEach(function($){var q=" "+$.getInitBlockForDraw();m.addToInit(q),m.addBufferInit(q)});var j=[];L.forEach(function($){m.addToInit(" "+$.getInitBlockForDraw()),$ instanceof pn&&j.push($)}),P.length&&(m.addToInit(` let gle = gl.getExtension('ANGLE_instanced_arrays'); + if (!gle) { + // Not sure if this is going to be an error, given instancing is widely supported. But + // If you get this error please ping me so that we can find a fallback solution + throw new Error('Instanced collection requires instancing support. Please ping @anvaka so that we can add fallback'); + } +`),P.forEach(function($){m.addToInit(" "+$.getInitBlock())}));var H=[];if(R)H=R.attributesDrawBlock;else{var W=0;x.forEach(function($){H.push($.getDraw(B,W)),W+=$.count*$.bytePerElement})}m.setAttributesDrawBlock(H),m.addToImplementation(k()),m.addToAPI(["draw: draw,"]);function k(){var $=L.map(function(re){return re.getDraw()}),q=[],Z=[],z=[];P.forEach(function(re){q.push(re.getDraw()),Z.push(re.getDivisor(0)),z.push(re.getDivisor(0))});var V=[];return P.length?(x.forEach(function(re){Z.push(re.getDivisor(1)),z.push(re.getDivisor(0))}),V.push(Z.join(` + `)),V.push("gle.drawArraysInstancedANGLE(gl.TRIANGLES, 0, 6, count)"),V.push(z.join(` + `))):V.push("gl.drawArrays(gl.TRIANGLES, 0, count)"),` + function draw(uniforms, from, to) { + `+X()+` + `+te()+` + `+o(T)+` + + gl.useProgram(program); + `+$.join(` + `)+` + `+q.join(` + `)+` + + gl.bindBuffer(gl.ARRAY_BUFFER, glBuffer); + `+Y()+` + + `+H.join(` + `)+` + `+V.join(` + `)+` + + `+s(T)+` + }`;function Y(){return e.sourceBuffer?"":` if (isDirty) { + gl.bufferData(gl.ARRAY_BUFFER, buffer, gl.DYNAMIC_DRAW); + isDirty = false; + }`}function X(){return"if (count === 0) return;"}function te(){return j.length===0?"":j.map(function(re){return"if (!"+re.ready+") return;"}).join(` + `)}}}function w(T,m){m.addToInit([" var count = 0;"]),m.addToAPI(["setCount: (newCount) => count = newCount,","getCount: () => count,"])}function b(T,m){var x=T.attributes,P=T.bytePerVertex,L=T.itemPerVertex;m.addToInit(["var bytePerVertex = "+P+";","var itemPerVertex = "+L+";","var capacity = "+(e.capacity||1)*P+";","var buffer = new ArrayBuffer(capacity);","","var isDirty = true;","var dirtyOffset = 0;"]),x.forEach(function(R){m.addToInit(R.getInitBlockForBuffer(!0))}),m.addToAPI(["add: add,","get: get,","update: update,","remove: remove,","getBuffer: getBuffer,","appendBuffer: appendBuffer,"]),m.addToImplementation(B());function B(){var R=[],j=[],H=[],W=[],k=0;return x.forEach($),` + function add(item) { + if (count * bytePerVertex >= capacity) { + extend(); + } + + var index = count * itemPerVertex; + + `+R.join("")+` + + isDirty = true; + return count++; + } + + function update(index, item) { + `+S()+` + index *= itemPerVertex; + `+R.join(` + `)+` + isDirty = true; + } + + function remove(index) { + `+C()+` + isDirty = true; + count -= 1; + if (count <= 0) { + count = 0; + return count; // last element removed + } + // move last element to take this element's position + var from = count * itemPerVertex; + var to = index * itemPerVertex; + for (var i = 0; i < itemPerVertex; ++i) { + `+H.join(` +`)+` + } + + return count; + } + + function get(index) { + index *= itemPerVertex; + return { + `+j.join(`, + `)+` + }; + } + + function extend() { + var oldBuffer = buffer; + capacity *= 2; + buffer = new ArrayBuffer(capacity); + // Copy old buffer to the new buffer + new Uint8Array(buffer).set(new Uint8Array(oldBuffer)); + // And re-assign views: + `+W.join(` + `)+` + } + + function getBuffer() { + return buffer.slice(0, count * bytePerVertex); + } + + function appendBuffer(uint8Collection, byteOffset) { + var requiredCapacity = byteOffset + uint8Collection.byteLength; + if (requiredCapacity > capacity) { + // extend the buffer to fulfill the request: + let oldBuffer = buffer; + buffer = new ArrayBuffer(requiredCapacity); + new Uint8Array(buffer).set(new Uint8Array(oldBuffer)); + capacity = requiredCapacity; + } + + var view = new Uint8Array(buffer); + view.set(uint8Collection, byteOffset); + count = Math.floor(requiredCapacity / bytePerVertex); + + `+W.join(` + `)+` + + isDirty = true; + } +`;function $(q){var Z=q.getInitBlockForBuffer(!1);Z&&W.push(Z);var z=q.getAddBlock(k,` + `);R.push(z.code),H.push(q.getMoveBlock(k,` + `)),j.push(q.getGetBlock(k)),k=z.offset}}}function S(){return e.debug?` + if (!Number.isFinite(index)) throw new Error('update() requires integer value for "index", got: ' + index); + if (index < 0 || index >= count) throw new Error('update(' + index + ') is outside of [0..' + count + ') range'); +`:""}function C(){return e.debug?` + if (!Number.isFinite(index)) throw new Error('remove() requires integer value for "index", got: ' + index); + if (index < 0 || index >= count) throw new Error('remove(' + index + ') is outside of [0..' + count + ') range'); +`:""}function A(T,m){var x=E(t.VERTEX_SHADER,T),P=E(t.FRAGMENT_SHADER,m),L=t.createProgram();if(!L)throw new Error("Failed to link a program");if(t.attachShader(L,x),t.attachShader(L,P),t.linkProgram(L),!t.getProgramParameter(L,t.LINK_STATUS))throw new Error(t.getProgramInfoLog(L)||"Failed to link a program");return L}function E(T,m){var x=t.createShader(T);if(!x)throw new Error("Failed to create a shared "+m);if(t.shaderSource(x,m),t.compileShader(x),!t.getShaderParameter(x,t.COMPILE_STATUS))throw console.error(t.getShaderInfoLog(x)),new Error(t.getShaderInfoLog(x)||"Failed to compile shader "+m);return x}}function Ds(){return""}var Sh=function(e){function t(){e.call(this),this.type="gl.UNSIGNED_BYTE",this.bufferViewType="Uint32Array"}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.getAddBlock=function(r){var i=this.name+"Array",o="";return this.debug&&(o="if (item."+this.name+` === undefined) throw new Error('Attribute "`+this.name+`" is missing'); +`),o+=i+"[index + "+r+"] = item."+this.name+";",{code:o,offset:r+this.count}},t.prototype.getMoveBlock=function(r,i){i===void 0&&(i=` +`);var o=this.name,s=o+"Array",a="";return a+=s+"[to + "+r+"] = "+s+"[from + "+r+"];"+i,a},t.prototype.getGetBlock=function(r){return this.name+": "+this.name+"Array[index + "+r+"]"},t.prototype.getDraw=function(r,i){var o=this.name+"AttributeLocation";return` + if (`+o+` > -1) { + gl.enableVertexAttribArray(`+o+`); + gl.vertexAttribPointer(`+o+", 4, "+this.type+", true, "+r+", "+i+`); + }`},t}(lt),$n=function(t){this.bufferValues=t,this.typeDef=void 0};$n.prototype.setTypeDefinition=function(t){this.typeDef=t};$n.prototype.getInitBlock=function(){var t=this.typeDef,n=t.name;return` + const `+n+`InstancedBuffer = gl.createBuffer(); + if (!`+n+`InstancedBuffer) throw new Error('failed to create a WebGL buffer'); + const `+n+"InstancedBufferValues = new Float32Array(["+this.bufferValues.join(",")+`]); + let `+n+"AttributeLocation = gl.getAttribLocation(program, '"+n+`'); +`};$n.prototype.getDivisor=function(t){return this.typeDef.getDivisor(t)};$n.prototype.getDraw=function(){var t=this,n=t.typeDef,r=n.name;return` + gl.bindBuffer(gl.ARRAY_BUFFER, `+r+`InstancedBuffer); + gl.bufferData(gl.ARRAY_BUFFER, `+r+`InstancedBufferValues, gl.STATIC_DRAW); + + gl.enableVertexAttribArray(`+r+`AttributeLocation); + gl.vertexAttribPointer(`+r+"AttributeLocation, "+n.count+`, gl.FLOAT, false, 0, 0); +`};var Pl=function(e){function t(n){e.call(this),this.program=n,this.uniforms=void 0}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.getBuffer=function(){return this.program.getBuffer()},t.prototype.appendBuffer=function(r,i){this.program.appendBuffer(r,i),this.scene&&this.scene.renderFrame()},t.prototype.add=function(r){return this.program.add(r)},t.prototype.update=function(r,i){this.program.update(r,i)},t.prototype.remove=function(r){return this.program.remove(r)},t.prototype.get=function(r){return this.program.get(r)},t.prototype.draw=function(r,i){this.uniforms||(this.uniforms={projectionMatrix:i.projection,model:this.worldModel,view:i.view.matrix,modelViewProjection:this.modelViewProjection}),this.program.draw(this.uniforms)},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.program&&this.program.dispose()},t}(Ae);function me(e){return Math.abs(e)<1e-10?0:e}var Mh=function(e){function t(n){var r=Ml({gl:n,vertex:` + uniform mat4 modelViewProjection; + attribute vec3 point; + + void main() { + gl_Position = modelViewProjection * vec4(point, 1.0); + }`,fragment:` + precision highp float; + void main() { + gl_FragColor = vec4(0., 0., 0., 0.); + }`,preDrawHook:function(){return`gl.disable(gl.BLEND); + gl.enable(gl.DEPTH_TEST); + gl.depthFunc(gl.LEQUAL);`},postDrawHook:function(){return"gl.enable(gl.BLEND); gl.disable(gl.DEPTH_TEST);"}});e.call(this,r),this.domElementToPoints=new Map,this.uiIDToUI=new Map}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.appendFromDomElement=function(r){var i=this,o=Number.parseFloat(r.el.style.width),s=Number.parseFloat(r.el.style.height),a=[[-o/2,-s/2,0],[o/2,-s/2,0],[o/2,s/2,0],[o/2,s/2,0],[-o/2,s/2,0],[-o/2,-s/2,0]];r.updateWorldTransform();var l=a.map(function(u){var f=hn([0,0,0],u,r.worldModel),d={original:u,point:f,uiId:-1};return d.uiId=i.add(d),i.uiIDToUI.set(d.uiId,d),d});this.domElementToPoints.set(r,l),r.on("update-transform",this.updateDOMElementTransform,this),r.on("disposed",this.disposeDomElement,this)},t.prototype.disposeDomElement=function(r){var i=this,o=this.domElementToPoints.get(r);if(!o)throw new Error("Unknown dom element requested to be disposed");o.forEach(function(s){var a=s.uiId,l=i.remove(a),u=i.uiIDToUI.get(l);if(!u)throw new Error("Cannot find moved vertex ui");i.uiIDToUI.delete(l),l!==a&&(u.uiId=a,i.uiIDToUI.set(a,u))}),r.off("update-transform",this.updateDOMElementTransform),r.off("disposed",this.disposeDomElement),this.domElementToPoints.delete(r)},t.prototype.updateDOMElementTransform=function(r){var i=this,o=this.domElementToPoints.get(r);if(!o)throw new Error("Unknown dom element requested transform update");o.forEach(function(s){hn(s.point,s.original,r.worldModel),i.update(s.uiId,s)})},t.prototype.clear=function(){this.program.setCount(0)},t}(Pl),Fl=function(e){function t(n){e.call(this),this.container=document.createElement("div"),this.container.style.overflow="hidden",this.camera=document.createElement("div"),this.camera.style.transformStyle="preserve-3d",this.camera.style.pointerEvents="none",this.camera.style.position="relative",this.container.appendChild(this.camera),this.container.style.pointerEvents="none",this.bound=!1,this.lastCameraTransform="",this.seeThrough=n&&typeof n.seeThrough!="undefined"?n.seeThrough:!1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.bindScene=function(r){if(r){var i=r.getDrawContext(),o=i.canvas.parentElement;if(!o)throw new Error("Scene does not have a parent element");this.seeThrough?o.insertBefore(this.container,i.canvas):o.append(this.container),this.bound=!0}else this.container.parentElement&&this.container.parentElement.removeChild(this.container),this.bound=!1,this.seeThroughQuads&&this.seeThroughQuads.parent&&this.seeThroughQuads.parent.removeChild(this.seeThroughQuads);e.prototype.bindScene.call(this,r)},t.prototype.acceptDomChild=function(r){if(this.camera.appendChild(r.el),!!this.seeThrough){if(!this.scene)throw new Error("Scene should be available at this point!");this.seeThroughQuads||(this.seeThroughQuads=new Mh(this.scene.getGL()),this.scene.appendChild(this.seeThroughQuads)),this.seeThroughQuads.appendFromDomElement(r)}},t.prototype.draw=function(r,i){!this.bound||(this._updateCameraTransforms(i),e.prototype.draw.call(this,r,i))},t.prototype._updateCameraTransforms=function(r){var i=r.projection[5]*r.height/(2*r.pixelRatio),o=r.width/r.pixelRatio,s=r.height/r.pixelRatio,a="translateZ("+i+"px)"+Ph(r.view.matrix)+"translate("+o/2+"px,"+s/2+"px)";this.lastCameraTransform!=a&&(this.lastCameraTransform=a,this.camera.style.transform=this.lastCameraTransform,this.camera.style.width=o+"px",this.camera.style.height=s+"px",this.container.style.width=o+"px",this.container.style.height=s+"px",this.container.style.perspective=i+"px")},t}(Ae);function Ph(e){return"matrix3d("+me(e[0])+","+me(-e[1])+","+me(e[2])+","+me(e[3])+","+me(e[4])+","+me(-e[5])+","+me(e[6])+","+me(e[7])+","+me(e[8])+","+me(-e[9])+","+me(e[10])+","+me(e[11])+","+me(e[12])+","+me(-e[13])+","+me(e[14])+","+me(e[15])+")"}var Fh=function(e){function t(n){e.call(this),this.lastTransform="",this.el=document.createElement("div");var r=this.el.style;if(r.position="absolute",r.pointerEvents="initial",n){var i=this.el.style;Object.keys(n).forEach(function(o){i[o]=n[o]})}jr(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.updateWorldTransform=function(r){var i=e.prototype.updateWorldTransform.call(this,r);return i&&this.fire("update-transform",this),i},t.prototype.bindScene=function(r){if(r){var i=Ll(this);if(!i)throw new Error("DomElement should be part of DomContainer hierarchy");i.acceptDomChild(this)}else this.el.parentNode&&(this.el.parentNode.removeChild(this.el),this.fire("disposed",this));e.prototype.bindScene.call(this,r)},t.prototype.draw=function(){var r=Lh(this.worldModel);r!==this.lastTransform&&(this.el.style.transform=r,this.lastTransform=r)},t.prototype.dispose=function(){this.el.parentNode&&this.el.parentNode.removeChild(this.el)},t}(Ae);function Lh(e){var t="matrix3d("+me(e[0])+","+me(e[1])+","+me(e[2])+","+me(e[3])+","+me(-e[4])+","+me(-e[5])+","+me(-e[6])+","+me(-e[7])+","+me(e[8])+","+me(e[9])+","+me(e[10])+","+me(e[11])+","+me(e[12])+","+me(e[13])+","+me(e[14])+","+me(e[15])+")";return"translate(-50%,-50%)"+t}function Ll(e){return e instanceof Fl?e:e.parent&&Ll(e.parent)}var kh=Object.freeze(Object.defineProperty({__proto__:null,ColorAttribute:Sh,DomContainer:Fl,DomElement:Fh,Element:Ae,FloatAttribute:hr,GLCollection:Pl,InstancedAttribute:$n,LineStripCollection:nh,NumberAttribute:Sl,PointCollection:Kd,WireCollection:Ln,createFPSControlsUI:yh,createGuide:Eh,createScene:Hi,defineProgram:Ml,fpsControls:gh,isWebGLEnabled:Al,mapControls:_l,scene:Hi,toSVG:Tl,utils:$e},Symbol.toStringTag,{value:"Module"})),ut=(e,t)=>{const n=e.__vccOpts||e;for(const[r,i]of t)n[r]=i;return n};const Rh={},Bh={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",width:"12",height:"12",fill:"black",class:"loader"},Ih=G("path",{opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"},null,-1),Dh=G("path",{d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"},[G("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"0.8s",repeatCount:"indefinite"})],-1),Oh=[Ih,Dh];function Nh(e,t){return se(),fe("svg",Bh,Oh)}var kl=ut(Rh,[["render",Nh]]),Fo=function(t){Uh(t);var n=Vh(t);return t.on=n.on,t.off=n.off,t.fire=n.fire,t};function Vh(e){var t=Object.create(null);return{on:function(n,r,i){if(typeof r!="function")throw new Error("callback is expected to be a function");var o=t[n];return o||(o=t[n]=[]),o.push({callback:r,ctx:i}),e},off:function(n,r){var i=typeof n=="undefined";if(i)return t=Object.create(null),e;if(t[n]){var o=typeof r!="function";if(o)delete t[n];else for(var s=t[n],a=0;a1&&(i=Array.prototype.splice.call(arguments,1));for(var o=0;o{n.setRequestHeader(h,t.headers[h])}),t.method==="POST"?n.send(t.body):n.send(null);function l(h){h.lengthComputable?r.notify({loaded:h.loaded,total:h.total,percent:h.loaded/h.total,lengthComputable:!0}):r.notify({loaded:h.loaded,lengthComputable:!1})}function u(){if(r.offCancel(i),!r.isCancelled){if(n.status!==200){a({statusError:n.status,message:`Unexpected status code ${n.status} when calling ${e}`});return}var h=n.response;t.responseType==="json"&&typeof h=="string"&&(h=JSON.parse(h)),setTimeout(()=>s(h),0)}}function f(){a(`Failed to download ${e}`)}function d(){a({cancelled:!0,message:`Cancelled download of ${e}`})}}}let vi=["https://overpass.kumi.systems/api/interpreter","https://overpass-api.de/api/interpreter","https://overpass.openstreetmap.ru/cgi/interpreter"];function zh(e,t){t=t||new Kr;const n={method:"POST",responseType:"json",progress:t,headers:{"Content-type":"application/x-www-form-urlencoded; charset=UTF-8"},body:"data="+encodeURIComponent(e)};let r=0;return i(vi[r]);function i(s){return Xr(s,n).catch(o)}function o(s){if(s.cancelled||r>=vi.length-1)throw s;return s.statusError&&t.notify({loaded:-1}),r+=1,i(vi[r])}}class Hh{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}growBy(t){this.minX-=t,this.minY-=t,this.maxX+=t,this.maxY+=t}get left(){return this.minX}get top(){return this.minY}get right(){return this.maxX}get bottom(){return this.maxY}get width(){return this.maxX-this.minX}get height(){return this.maxY-this.minY}get cx(){return(this.minX+this.maxX)/2}get cy(){return(this.minY+this.maxY)/2}addPoint(t,n){if(t===void 0)throw new Error("Point is not defined");let r=t,i=n;i===void 0&&(r=t.x,i=t.y),rthis.maxX&&(this.maxX=r),ithis.maxY&&(this.maxY=i)}addRect(t){if(!t)throw new Error("rect is not defined");this.addPoint(t.left,t.top),this.addPoint(t.right,t.top),this.addPoint(t.left,t.bottom),this.addPoint(t.right,t.bottom)}merge(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.maxY>this.maxY&&(this.maxY=t.maxY)}}class $h{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let r=0;for(let i=0;i0){for(s=t[--n];n>0&&(r=s,i=t[--n],s=r+i,o=i-(s-r),!o););n>0&&(o<0&&t[n-1]<0||o>0&&t[n-1]>0)&&(i=o*2,r=s+i,i==r-s&&(s=r))}return s}}function*jh(e){for(const t of e)yield*t}function Rl(e){return Array.from(jh(e))}var Ee=1e-6,Wh=1e-12,pe=Math.PI,Ze=pe/2,Os=pe/4,at=pe*2,et=180/pe,Be=pe/180,Le=Math.abs,Bl=Math.atan,On=Math.atan2,Pe=Math.cos,qh=Math.exp,Gh=Math.log,Fe=Math.sin,Yh=Math.sign||function(e){return e>0?1:e<0?-1:0},Zr=Math.sqrt,Kh=Math.tan;function Xh(e){return e>1?0:e<-1?pe:Math.acos(e)}function Nn(e){return e>1?Ze:e<-1?-Ze:Math.asin(e)}function An(){}function Sr(e,t){e&&Vs.hasOwnProperty(e.type)&&Vs[e.type](e,t)}var Ns={Feature:function(e,t){Sr(e.geometry,t)},FeatureCollection:function(e,t){for(var n=e.features,r=-1,i=n.length;++rpe?e+Math.round(-e/at)*at:e,t]}Ki.invert=Ki;function Il(e,t,n){return(e%=at)?t||n?Yi(Hs(e),$s(t,n)):Hs(e):t||n?$s(t,n):Ki}function zs(e){return function(t,n){return t+=e,[t>pe?t-at:t<-pe?t+at:t,n]}}function Hs(e){var t=zs(e);return t.invert=zs(-e),t}function $s(e,t){var n=Pe(e),r=Fe(e),i=Pe(t),o=Fe(t);function s(a,l){var u=Pe(l),f=Pe(a)*u,d=Fe(a)*u,h=Fe(l),g=h*n+f*r;return[On(d*i-g*o,f*n-h*r),Nn(g*i+d*o)]}return s.invert=function(a,l){var u=Pe(l),f=Pe(a)*u,d=Fe(a)*u,h=Fe(l),g=h*i-d*o;return[On(d*i+h*o,f*n+g*r),Nn(g*n-f*r)]},s}function Qh(e){e=Il(e[0]*Be,e[1]*Be,e.length>2?e[2]*Be:0);function t(n){return n=e(n[0]*Be,n[1]*Be),n[0]*=et,n[1]*=et,n}return t.invert=function(n){return n=e.invert(n[0]*Be,n[1]*Be),n[0]*=et,n[1]*=et,n},t}function Jh(e,t,n,r,i,o){if(!!n){var s=Pe(t),a=Fe(t),l=r*n;i==null?(i=t+r*at,o=t-l/2):(i=js(s,i),o=js(s,o),(r>0?io)&&(i+=r*at));for(var u,f=i;r>0?f>o:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function pr(e,t){return Le(e[0]-t[0])=0;--a)i.point((d=f[a])[0],d[1]);else r(h.x,h.p.x,-1,i);h=h.p}h=h.o,f=h.z,g=!g}while(!h.v);i.lineEnd()}}}function Ws(e){if(!!(t=e.length)){for(var t,n=0,r=e[0],i;++n=0?1:-1,B=L*P,R=B>pe,j=b*m;if(l.add(On(j*L*Fe(B),S*x+j*Pe(B))),s+=R?P+L*at:P,R^y>=n^E>=n){var H=Mr(vn(g),vn(A));Gi(H);var W=Mr(o,H);Gi(W);var k=(R^P>=0?-1:1)*Nn(W[2]);(r>k||r===k&&(H[0]||H[1]))&&(a+=R^P>=0?1:-1)}}return(s<-Ee||s0){for(l||(i.polygonStart(),l=!0),i.lineStart(),m=0;m1&&E&2&&T.push(T.pop().concat(T.shift())),f.push(T.filter(tp))}}return h}}function tp(e){return e.length>1}function np(e,t){return((e=e.x)[0]<0?e[1]-Ze-Ee:Ze-e[1])-((t=t.x)[0]<0?t[1]-Ze-Ee:Ze-t[1])}var qs=Nl(function(){return!0},rp,op,[-pe,-Ze]);function rp(e){var t=NaN,n=NaN,r=NaN,i;return{lineStart:function(){e.lineStart(),i=1},point:function(o,s){var a=o>0?pe:-pe,l=Le(o-t);Le(l-pe)0?Ze:-Ze),e.point(r,n),e.lineEnd(),e.lineStart(),e.point(a,n),e.point(o,n),i=0):r!==a&&l>=pe&&(Le(t-r)Ee?Bl((Fe(t)*(o=Pe(r))*Fe(n)-Fe(r)*(i=Pe(t))*Fe(e))/(i*o*s)):(t+r)/2}function op(e,t,n,r){var i;if(e==null)i=n*Ze,r.point(-pe,i),r.point(0,i),r.point(pe,i),r.point(pe,0),r.point(pe,-i),r.point(0,-i),r.point(-pe,-i),r.point(-pe,0),r.point(-pe,i);else if(Le(e[0]-t[0])>Ee){var o=e[0]0,i=Le(t)>Ee;function o(f,d,h,g){Jh(g,e,n,h,f,d)}function s(f,d){return Pe(f)*Pe(d)>t}function a(f){var d,h,g,y,w;return{lineStart:function(){y=g=!1,w=1},point:function(b,S){var C=[b,S],A,E=s(b,S),T=r?E?0:u(b,S):E?u(b+(b<0?pe:-pe),S):0;if(!d&&(y=g=E)&&f.lineStart(),E!==g&&(A=l(d,C),(!A||pr(d,A)||pr(C,A))&&(C[2]=1)),E!==g)w=0,E?(f.lineStart(),A=l(C,d),f.point(A[0],A[1])):(A=l(d,C),f.point(A[0],A[1],2),f.lineEnd()),d=A;else if(i&&d&&r^E){var m;!(T&h)&&(m=l(C,d,!0))&&(w=0,r?(f.lineStart(),f.point(m[0][0],m[0][1]),f.point(m[1][0],m[1][1]),f.lineEnd()):(f.point(m[1][0],m[1][1]),f.lineEnd(),f.lineStart(),f.point(m[0][0],m[0][1],3)))}E&&(!d||!pr(d,C))&&f.point(C[0],C[1]),d=C,g=E,h=T},lineEnd:function(){g&&f.lineEnd(),d=null},clean:function(){return w|(y&&g)<<1}}}function l(f,d,h){var g=vn(f),y=vn(d),w=[1,0,0],b=Mr(g,y),S=er(b,b),C=b[0],A=S-C*C;if(!A)return!h&&f;var E=t*S/A,T=-t*C/A,m=Mr(w,b),x=tr(w,E),P=tr(b,T);gi(x,P);var L=m,B=er(x,L),R=er(L,L),j=B*B-R*(er(x,x)-1);if(!(j<0)){var H=Zr(j),W=tr(L,(-B-H)/R);if(gi(W,x),W=qi(W),!h)return W;var k=f[0],$=d[0],q=f[1],Z=d[1],z;$0^W[1]<(Le(W[0]-k)pe^(k<=W[0]&&W[0]<=$)){var te=tr(L,(-B+H)/R);return gi(te,x),[W,qi(te)]}}}function u(f,d){var h=r?e:pe-e,g=0;return f<-h?g|=1:f>h&&(g|=2),d<-h?g|=4:d>h&&(g|=8),g}return Nl(s,a,o,r?[0,-e]:[-pe,e-pe])}function ap(e,t,n,r,i,o){var s=e[0],a=e[1],l=t[0],u=t[1],f=0,d=1,h=l-s,g=u-a,y;if(y=n-s,!(!h&&y>0)){if(y/=h,h<0){if(y0){if(y>d)return;y>f&&(f=y)}if(y=i-s,!(!h&&y<0)){if(y/=h,h<0){if(y>d)return;y>f&&(f=y)}else if(h>0){if(y0)){if(y/=g,g<0){if(y0){if(y>d)return;y>f&&(f=y)}if(y=o-a,!(!g&&y<0)){if(y/=g,g<0){if(y>d)return;y>f&&(f=y)}else if(g>0){if(y0&&(e[0]=s+f*h,e[1]=a+f*g),d<1&&(t[0]=s+d*h,t[1]=a+d*g),!0}}}}}var Tn=1e9,rr=-Tn;function lp(e,t,n,r){function i(u,f){return e<=u&&u<=n&&t<=f&&f<=r}function o(u,f,d,h){var g=0,y=0;if(u==null||(g=s(u,d))!==(y=s(f,d))||l(u,f)<0^d>0)do h.point(g===0||g===3?e:n,g>1?r:t);while((g=(g+d+4)%4)!==y);else h.point(f[0],f[1])}function s(u,f){return Le(u[0]-e)0?0:3:Le(u[0]-n)0?2:1:Le(u[1]-t)0?1:0:f>0?3:2}function a(u,f){return l(u.x,f.x)}function l(u,f){var d=s(u,1),h=s(f,1);return d!==h?d-h:d===0?f[1]-u[1]:d===1?u[0]-f[0]:d===2?u[1]-f[1]:f[0]-u[0]}return function(u){var f=u,d=Dl(),h,g,y,w,b,S,C,A,E,T,m,x={point:P,lineStart:j,lineEnd:H,polygonStart:B,polygonEnd:R};function P(k,$){i(k,$)&&f.point(k,$)}function L(){for(var k=0,$=0,q=g.length;$r&&(re-X)*(r-te)>(ve-te)*(e-X)&&++k:ve<=r&&(re-X)*(r-te)<(ve-te)*(e-X)&&--k;return k}function B(){f=d,h=[],g=[],m=!0}function R(){var k=L(),$=m&&k,q=(h=Rl(h)).length;($||q)&&(u.polygonStart(),$&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),q&&Ol(h,a,k,o,u),u.polygonEnd()),f=u,h=g=y=null}function j(){x.point=W,g&&g.push(y=[]),T=!0,E=!1,C=A=NaN}function H(){h&&(W(w,b),S&&E&&d.rejoin(),h.push(d.result())),x.point=P,E&&f.lineEnd()}function W(k,$){var q=i(k,$);if(g&&y.push([k,$]),T)w=k,b=$,S=q,T=!1,q&&(f.lineStart(),f.point(k,$));else if(q&&E)f.point(k,$);else{var Z=[C=Math.max(rr,Math.min(Tn,C)),A=Math.max(rr,Math.min(Tn,A))],z=[k=Math.max(rr,Math.min(Tn,k)),$=Math.max(rr,Math.min(Tn,$))];ap(Z,z,e,t,n,r)?(E||(f.lineStart(),f.point(Z[0],Z[1])),f.point(z[0],z[1]),q||f.lineEnd(),m=!1):q&&(f.lineStart(),f.point(k,$),m=!1)}C=k,A=$,E=q}return x}}var Gs=e=>e,gn=1/0,Pr=gn,Vn=-gn,Fr=Vn,up={point:fp,lineStart:An,lineEnd:An,polygonStart:An,polygonEnd:An,result:function(){var e=[[gn,Pr],[Vn,Fr]];return Vn=Fr=-(Pr=gn=1/0),e}};function fp(e,t){eVn&&(Vn=e),tFr&&(Fr=t)}var Ys=up;function Lo(e){return function(t){var n=new Xi;for(var r in e)n[r]=e[r];return n.stream=t,n}}function Xi(){}Xi.prototype={constructor:Xi,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function ko(e,t,n){var r=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),r!=null&&e.clipExtent(null),Zh(n,e.stream(Ys)),t(Ys.result()),r!=null&&e.clipExtent(r),e}function Vl(e,t,n){return ko(e,function(r){var i=t[1][0]-t[0][0],o=t[1][1]-t[0][1],s=Math.min(i/(r[1][0]-r[0][0]),o/(r[1][1]-r[0][1])),a=+t[0][0]+(i-s*(r[1][0]+r[0][0]))/2,l=+t[0][1]+(o-s*(r[1][1]+r[0][1]))/2;e.scale(150*s).translate([a,l])},n)}function cp(e,t,n){return Vl(e,[[0,0],t],n)}function dp(e,t,n){return ko(e,function(r){var i=+t,o=i/(r[1][0]-r[0][0]),s=(i-o*(r[1][0]+r[0][0]))/2,a=-o*r[0][1];e.scale(150*o).translate([s,a])},n)}function hp(e,t,n){return ko(e,function(r){var i=+t,o=i/(r[1][1]-r[0][1]),s=-o*r[0][0],a=(i-o*(r[1][1]+r[0][1]))/2;e.scale(150*o).translate([s,a])},n)}var Ks=16,pp=Pe(30*Be);function Xs(e,t){return+t?gp(e,t):vp(e)}function vp(e){return Lo({point:function(t,n){t=e(t,n),this.stream.point(t[0],t[1])}})}function gp(e,t){function n(r,i,o,s,a,l,u,f,d,h,g,y,w,b){var S=u-r,C=f-i,A=S*S+C*C;if(A>4*t&&w--){var E=s+h,T=a+g,m=l+y,x=Zr(E*E+T*T+m*m),P=Nn(m/=x),L=Le(Le(m)-1)t||Le((S*H+C*W)/A-.5)>.3||s*h+a*g+l*y2?k[2]%360*Be:0,H()):[a*et,l*et,u*et]},R.angle=function(k){return arguments.length?(d=k%360*Be,H()):d*et},R.reflectX=function(k){return arguments.length?(h=k?-1:1,H()):h<0},R.reflectY=function(k){return arguments.length?(g=k?-1:1,H()):g<0},R.precision=function(k){return arguments.length?(m=Xs(x,T=k*k),W()):Zr(T)},R.fitExtent=function(k,$){return Vl(R,k,$)},R.fitSize=function(k,$){return cp(R,k,$)},R.fitWidth=function(k,$){return dp(R,k,$)},R.fitHeight=function(k,$){return hp(R,k,$)};function H(){var k=Zs(n,0,0,h,g,d).apply(null,t(o,s)),$=Zs(n,r-k[0],i-k[1],h,g,d);return f=Il(a,l,u),x=Yi(t,$),P=Yi(f,x),m=Xs(x,T),W()}function W(){return L=B=null,R}return function(){return t=e.apply(this,arguments),R.invert=t.invert&&j,H()}}function Ro(e,t){return[e,Gh(Kh((Ze+t)/2))]}Ro.invert=function(e,t){return[e,2*Bl(qh(t))-Ze]};function _p(){return Ep(Ro).scale(961/at)}function Ep(e){var t=bp(e),n=t.center,r=t.scale,i=t.translate,o=t.clipExtent,s=null,a,l,u;t.scale=function(d){return arguments.length?(r(d),f()):r()},t.translate=function(d){return arguments.length?(i(d),f()):i()},t.center=function(d){return arguments.length?(n(d),f()):n()},t.clipExtent=function(d){return arguments.length?(d==null?s=a=l=u=null:(s=+d[0][0],a=+d[0][1],l=+d[1][0],u=+d[1][1]),f()):s==null?null:[[s,a],[l,u]]};function f(){var d=pe*r(),h=t(Qh(t.rotate()).invert([0,0]));return o(s==null?[[h[0]-d,h[1]-d],[h[0]+d,h[1]+d]]:e===Ro?[[Math.max(h[0]-d,s),a],[Math.min(h[0]+d,l),u]]:[[s,Math.max(h[1]-d,a)],[l,Math.min(h[1]+d,u)]])}return f()}class Un{constructor(){this.elements=[],this.bounds=new Hh,this.nodes=new Map,this.wayPointCount=0,this.id=0,this.name="",this.isArea=!0,this.projector=void 0}setName(t){this.name=t}setId(t){this.id=t}setIsArea(t){this.isArea=t}setBBox(t){this.bboxString=t}hasRoads(){return this.wayPointCount>0}setProjector(t){this.projector=t}static fromPBF(t){if(t.version!==1)throw new Error("Unknown version "+t.version);let n=[];t.nodes.forEach(i=>{i.type="node",n.push(i)}),t.ways.forEach(i=>{i.type="way",n.push(i)});const r=Un.fromOSMResponse(n);return r.setName(t.name),r.setId(t.id),r}static fromOSMResponse(t){let n=new Un,r=n.nodes,i=n.bounds,o=0;return t.forEach(s=>{s.type==="node"?(r.set(s.id,s),i.addPoint(s.lon,s.lat)):s.type==="way"&&(o+=s.nodes.length)}),n.elements=t,n.wayPointCount=o,n}getProjectedRect(){let t=this.bounds,n=this.getProjector(),r=n({lon:t.left,lat:t.bottom}),i=n({lon:t.right,lat:t.top}),o=r.x,s=r.y,a=i.y,l=i.x;return{left:o,top:s,right:l,bottom:a,width:l-o,height:Math.abs(a-s)}}forEachElement(t){this.elements.forEach(t)}forEachWay(t,n,r){let i=this.nodes,o=this.getProjector();this.elements.forEach(s=>{if(s.type!=="way")return;let a=s.nodes,l=i.get(a[0]);if(!l)return;let u=o(l);n&&n(s);for(let f=1;f(Qs.set(e,r),r))}function Cp(e){return e.map(n=>{let r,i;return n.osm_type==="relation"?r=n.osm_id+36e8:n.osm_type==="way"&&(r=n.osm_id+24e8),n.boundingbox&&(i=[Number.parseFloat(n.boundingbox[0]),Number.parseFloat(n.boundingbox[2]),Number.parseFloat(n.boundingbox[1]),Number.parseFloat(n.boundingbox[3])]),{areaId:r,bbox:i,lat:n.lat,lon:n.lon,osmId:n.osm_id,osmType:n.osm_type,name:n.display_name,type:n.type}})}const Oo=class{static runFromOptions(t,n){return t.getQueryTemplate().then(r=>new Oo(r,n).run())}constructor(t,n){this.queryBounds=t.bounds,this.queryString=t.queryString,this.progress=n,this.promise=null}run(){if(this.promise)return this.promise;let t=Sp(this.queryString);return this.promise=Ap(t).then(n=>zh(n,this.progress)).then(n=>{let r=Un.fromOSMResponse(n.elements);return r.queryBounds=this.queryBounds,r}),this.promise}};let ct=Oo;en(ct,"All","way"),en(ct,"Building","way[building]"),en(ct,"Road","way[highway]"),en(ct,"RoadBasic",'way[highway~"^(motorway|primary|secondary|tertiary)|residential"]'),en(ct,"RoadStrict",'way[highway~"^(((motorway|trunk|primary|secondary|tertiary)(_link)?)|unclassified|residential|living_street|pedestrian|service|track)$"][area!=yes]');function Ap(e){let t=0;return r().then(n);function n(){return e.map(i=>{if(typeof i=="string")return i;if(i.geoType==="Area")return`area(${i.areaId})`;if(i.geoType==="Coords")return i.lat+","+i.lon;if(i.geoType==="Id")return`${i.osmType}(${i.osmId})`;if(i.geoType==="Bbox")return i.bbox.join(",")}).join("")}function r(){if(t>=e.length)return Promise.resolve();let i=e[t];return t+=1,typeof i=="string"?r():Bo(i.name).then(Tp).then(o=>{if(!o)throw new Error("No areas found for request "+i.name);Object.assign(i,o)}).then(Mp(1e3)).then(r)}}function Tp(e){if(e.length>0)return e[0]}function Sp(e){let t=/{{geocode(.+?):(.+?)}}/,n,r=[];for(;n=e.match(t);)r.push(e.substr(0,n.index)),r.push({geoType:n[1],name:n[2]}),e=e.substr(n.index+n[0].length);return r.push(e),r}function Mp(e){return function(t){return new Promise(n=>{setTimeout(()=>n(t),e)})}}var Pp=function(e){Lp(e);var t=Fp(e);return e.on=t.on,e.off=t.off,e.fire=t.fire,e};function Fp(e){var t=Object.create(null);return{on:function(n,r,i){if(typeof r!="function")throw new Error("callback is expected to be a function");var o=t[n];return o||(o=t[n]=[]),o.push({callback:r,ctx:i}),e},off:function(n,r){var i=typeof n=="undefined";if(i)return t=Object.create(null),e;if(t[n]){var o=typeof r!="function";if(o)delete t[n];else for(var s=t[n],a=0;a1&&(i=Array.prototype.splice.call(arguments,1));for(var o=0;o=0,M=!p&&_&&(c==="hex"||c==="hex6"||c==="hex3"||c==="hex4"||c==="hex8"||c==="name");return M?c==="name"&&this._a===0?this.toName():this.toRgbString():(c==="rgb"&&(v=this.toRgbString()),c==="prgb"&&(v=this.toPercentageRgbString()),(c==="hex"||c==="hex6")&&(v=this.toHexString()),c==="hex3"&&(v=this.toHexString(!0)),c==="hex4"&&(v=this.toHex8String(!0)),c==="hex8"&&(v=this.toHex8String()),c==="name"&&(v=this.toName()),c==="hsl"&&(v=this.toHslString()),c==="hsv"&&(v=this.toHsvString()),v||this.toHexString())},clone:function(){return u(this.toString())},_applyModification:function(c,p){var v=c.apply(null,[this].concat([].slice.call(p)));return this._r=v._r,this._g=v._g,this._b=v._b,this.setAlpha(v._a),this},lighten:function(){return this._applyModification(m,arguments)},brighten:function(){return this._applyModification(x,arguments)},darken:function(){return this._applyModification(P,arguments)},desaturate:function(){return this._applyModification(A,arguments)},saturate:function(){return this._applyModification(E,arguments)},greyscale:function(){return this._applyModification(T,arguments)},spin:function(){return this._applyModification(L,arguments)},_applyCombination:function(c,p){return c.apply(null,[this].concat([].slice.call(p)))},analogous:function(){return this._applyCombination(W,arguments)},complement:function(){return this._applyCombination(B,arguments)},monochromatic:function(){return this._applyCombination(k,arguments)},splitcomplement:function(){return this._applyCombination(H,arguments)},triad:function(){return this._applyCombination(R,arguments)},tetrad:function(){return this._applyCombination(j,arguments)}},u.fromRatio=function(c,p){if(typeof c=="object"){var v={};for(var _ in c)c.hasOwnProperty(_)&&(_==="a"?v[_]=c[_]:v[_]=Me(c[_]));c=v}return u(c,p)};function f(c){var p={r:0,g:0,b:0},v=1,_=null,M=null,F=null,O=!1,I=!1;return typeof c=="string"&&(c=ke(c)),typeof c=="object"&&(le(c.r)&&le(c.g)&&le(c.b)?(p=d(c.r,c.g,c.b),O=!0,I=String(c.r).substr(-1)==="%"?"prgb":"rgb"):le(c.h)&&le(c.s)&&le(c.v)?(_=Me(c.s),M=Me(c.v),p=w(c.h,_,M),O=!0,I="hsv"):le(c.h)&&le(c.s)&&le(c.l)&&(_=Me(c.s),F=Me(c.l),p=g(c.h,_,F),O=!0,I="hsl"),c.hasOwnProperty("a")&&(v=c.a)),v=z(v),{ok:O,format:c.format||I,r:s(255,a(p.r,0)),g:s(255,a(p.g,0)),b:s(255,a(p.b,0)),a:v}}function d(c,p,v){return{r:V(c,255)*255,g:V(p,255)*255,b:V(v,255)*255}}function h(c,p,v){c=V(c,255),p=V(p,255),v=V(v,255);var _=a(c,p,v),M=s(c,p,v),F,O,I=(_+M)/2;if(_==M)F=O=0;else{var U=_-M;switch(O=I>.5?U/(2-_-M):U/(_+M),_){case c:F=(p-v)/U+(p1&&(K-=1),K<1/6?N+(Q-N)*6*K:K<1/2?Q:K<2/3?N+(Q-N)*(2/3-K)*6:N}if(p===0)_=M=F=v;else{var I=v<.5?v*(1+p):v+p-v*p,U=2*v-I;_=O(U,I,c+1/3),M=O(U,I,c),F=O(U,I,c-1/3)}return{r:_*255,g:M*255,b:F*255}}function y(c,p,v){c=V(c,255),p=V(p,255),v=V(v,255);var _=a(c,p,v),M=s(c,p,v),F,O,I=_,U=_-M;if(O=_===0?0:U/_,_==M)F=0;else{switch(_){case c:F=(p-v)/U+(p>1)+720)%360;--p;)_.h=(_.h+M)%360,F.push(u(_));return F}function k(c,p){p=p||6;for(var v=u(c).toHsv(),_=v.h,M=v.s,F=v.v,O=[],I=1/p;p--;)O.push(u({h:_,s:M,v:F})),F=(F+I)%1;return O}u.mix=function(c,p,v){v=v===0?0:v||50;var _=u(c).toRgb(),M=u(p).toRgb(),F=v/100,O={r:(M.r-_.r)*F+_.r,g:(M.g-_.g)*F+_.g,b:(M.b-_.b)*F+_.b,a:(M.a-_.a)*F+_.a};return u(O)},u.readability=function(c,p){var v=u(c),_=u(p);return(t.max(v.getLuminance(),_.getLuminance())+.05)/(t.min(v.getLuminance(),_.getLuminance())+.05)},u.isReadable=function(c,p,v){var _=u.readability(c,p),M,F;switch(F=!1,M=Ne(v),M.level+M.size){case"AAsmall":case"AAAlarge":F=_>=4.5;break;case"AAlarge":F=_>=3;break;case"AAAsmall":F=_>=7;break}return F},u.mostReadable=function(c,p,v){var _=null,M=0,F,O,I,U;v=v||{},O=v.includeFallbackColors,I=v.level,U=v.size;for(var N=0;NM&&(M=F,_=u(p[N]));return u.isReadable(c,_,{level:I,size:U})||!O?_:(v.includeFallbackColors=!1,u.mostReadable(c,["#fff","#000"],v))};var $=u.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},q=u.hexNames=Z($);function Z(c){var p={};for(var v in c)c.hasOwnProperty(v)&&(p[c[v]]=v);return p}function z(c){return c=parseFloat(c),(isNaN(c)||c<0||c>1)&&(c=1),c}function V(c,p){te(c)&&(c="100%");var v=re(c);return c=s(p,a(0,parseFloat(c))),v&&(c=parseInt(c*p,10)/100),t.abs(c-p)<1e-6?1:c%p/parseFloat(p)}function Y(c){return s(1,a(0,c))}function X(c){return parseInt(c,16)}function te(c){return typeof c=="string"&&c.indexOf(".")!=-1&&parseFloat(c)===1}function re(c){return typeof c=="string"&&c.indexOf("%")!=-1}function ve(c){return c.length==1?"0"+c:""+c}function Me(c){return c<=1&&(c=c*100+"%"),c}function oe(c){return t.round(parseFloat(c)*255).toString(16)}function de(c){return X(c)/255}var ue=function(){var c="[-\\+]?\\d+%?",p="[-\\+]?\\d*\\.\\d+%?",v="(?:"+p+")|(?:"+c+")",_="[\\s|\\(]+("+v+")[,|\\s]+("+v+")[,|\\s]+("+v+")\\s*\\)?",M="[\\s|\\(]+("+v+")[,|\\s]+("+v+")[,|\\s]+("+v+")[,|\\s]+("+v+")\\s*\\)?";return{CSS_UNIT:new RegExp(v),rgb:new RegExp("rgb"+_),rgba:new RegExp("rgba"+M),hsl:new RegExp("hsl"+_),hsla:new RegExp("hsla"+M),hsv:new RegExp("hsv"+_),hsva:new RegExp("hsva"+M),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function le(c){return!!ue.CSS_UNIT.exec(c)}function ke(c){c=c.replace(n,"").replace(r,"").toLowerCase();var p=!1;if($[c])c=$[c],p=!0;else if(c=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var v;return(v=ue.rgb.exec(c))?{r:v[1],g:v[2],b:v[3]}:(v=ue.rgba.exec(c))?{r:v[1],g:v[2],b:v[3],a:v[4]}:(v=ue.hsl.exec(c))?{h:v[1],s:v[2],l:v[3]}:(v=ue.hsla.exec(c))?{h:v[1],s:v[2],l:v[3],a:v[4]}:(v=ue.hsv.exec(c))?{h:v[1],s:v[2],v:v[3]}:(v=ue.hsva.exec(c))?{h:v[1],s:v[2],v:v[3],a:v[4]}:(v=ue.hex8.exec(c))?{r:X(v[1]),g:X(v[2]),b:X(v[3]),a:de(v[4]),format:p?"name":"hex8"}:(v=ue.hex6.exec(c))?{r:X(v[1]),g:X(v[2]),b:X(v[3]),format:p?"name":"hex"}:(v=ue.hex4.exec(c))?{r:X(v[1]+""+v[1]),g:X(v[2]+""+v[2]),b:X(v[3]+""+v[3]),a:de(v[4]+""+v[4]),format:p?"name":"hex8"}:(v=ue.hex3.exec(c))?{r:X(v[1]+""+v[1]),g:X(v[2]+""+v[2]),b:X(v[3]+""+v[3]),format:p?"name":"hex"}:!1}function Ne(c){var p,v;return c=c||{level:"AA",size:"small"},p=(c.level||"AA").toUpperCase(),v=(c.size||"small").toLowerCase(),p!=="AA"&&p!=="AAA"&&(p="AA"),v!=="small"&&v!=="large"&&(v="small"),{level:p,size:v}}e.exports?e.exports=u:window.tinycolor=u})(Math)})(zl);var He=zl.exports,Pt={areaServer:"https://city-roads.s3-us-west-2.amazonaws.com/nov-02-2020",getDefaultLineColor(){return He("rgba(26, 26, 26, 0.8)")},getLabelColor(){return He("#161616")},getBackgroundColor(){return He("#F7F2E8")}};class Qr{static parse(t,n,r){let i=new Qr;if(typeof r=="string"&&(i.place=r),n&&(i.wayFilter=n),!r)return i;Object.assign(i,r);let o=Xp(t,r.layer);if(o){i.projector=o.getGridProjector();let s=o.getQueryBounds();s&&!i.place&&!i.areaId&&!i.bbox&&(i.place=s.place,i.areaId=s.areaId,i.bbox=s.bbox)}return r.projector&&(i.projector=projector),i}constructor(t){this.place=void 0,this.projector=void 0,this.wayFilter=void 0,this.timeout=900,this.maxHeapByteSize=1073741824,this.outputMethod="skel",Object.assign(this,t)}getQueryTemplate(){if(this.raw)return Promise.resolve({queryString:this.raw});if(!this.wayFilter)throw new Error("Way filter is required");return this.getBounds().then(t=>{let n;if(t.areaId)n=`[timeout:${this.timeout}][maxsize:${this.maxHeapByteSize}][out:json]; +area(${t.areaId}); +(._; )->.area; +(${this.wayFilter}(area.area); node(w);); +out ${this.outputMethod};`;else if(t.bbox){let r=Zp(t.bbox);n=`[timeout:${this.timeout}][maxsize:${this.maxHeapByteSize}][bbox:${r}][out:json]; +(${this.wayFilter}; node(w);); +out ${this.outputMethod};`}return{bounds:t,queryString:n}})}getBounds(){if(this.place)return Bo(this.place).then(t=>t&&t[0]);if(this.areaId)return Promise.resolve({areaId:this.areaId});if(this.bbox)return Promise.resolve({bbox:this.bbox});throw new Error("Please specify bounding area for the query (place|areaId|bbox)")}}function Xp(e,t){if(t!==void 0)return typeof t=="number"?e.queryLayerAll()[t]:typeof t=="string"?e.queryLayer(t):t}function Zp(e){return e&&e.join(",")}var Do={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */Do.read=function(e,t,n,r,i){var o,s,a=i*8-r-1,l=(1<>1,f=-7,d=n?i-1:0,h=n?-1:1,g=e[t+d];for(d+=h,o=g&(1<<-f)-1,g>>=-f,f+=a;f>0;o=o*256+e[t+d],d+=h,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=r;f>0;s=s*256+e[t+d],d+=h,f-=8);if(o===0)o=1-u;else{if(o===l)return s?NaN:(g?-1:1)*(1/0);s=s+Math.pow(2,r),o=o-u}return(g?-1:1)*s*Math.pow(2,o-r)};Do.write=function(e,t,n,r,i,o){var s,a,l,u=o*8-i-1,f=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,g=r?0:o-1,y=r?1:-1,w=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),s+d>=1?t+=h/l:t+=h*Math.pow(2,1-d),t*l>=2&&(s++,l/=2),s+d>=f?(a=0,s=f):s+d>=1?(a=(t*l-1)*Math.pow(2,i),s=s+d):(a=t*Math.pow(2,d-1)*Math.pow(2,i),s=0));i>=8;e[n+g]=a&255,g+=y,a/=256,i-=8);for(s=s<0;e[n+g]=s&255,g+=y,s/=256,u-=8);e[n+g-y]|=w*128};var Qp=ye,sr=Do;function ye(e){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(e)?e:new Uint8Array(e||0),this.pos=0,this.type=0,this.length=this.buf.length}ye.Varint=0;ye.Fixed64=1;ye.Bytes=2;ye.Fixed32=5;var Zi=(1<<16)*(1<<16),Js=1/Zi,Jp=12,Hl=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");ye.prototype={destroy:function(){this.buf=null},readFields:function(e,t,n){for(n=n||this.length;this.pos>3,o=this.pos;this.type=r&7,e(i,t,this),this.pos===o&&this.skip(r)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=ar(this.buf,this.pos);return this.pos+=4,e},readSFixed32:function(){var e=ta(this.buf,this.pos);return this.pos+=4,e},readFixed64:function(){var e=ar(this.buf,this.pos)+ar(this.buf,this.pos+4)*Zi;return this.pos+=8,e},readSFixed64:function(){var e=ar(this.buf,this.pos)+ta(this.buf,this.pos+4)*Zi;return this.pos+=8,e},readFloat:function(){var e=sr.read(this.buf,this.pos,!0,23,4);return this.pos+=4,e},readDouble:function(){var e=sr.read(this.buf,this.pos,!0,52,8);return this.pos+=8,e},readVarint:function(e){var t=this.buf,n,r;return r=t[this.pos++],n=r&127,r<128||(r=t[this.pos++],n|=(r&127)<<7,r<128)||(r=t[this.pos++],n|=(r&127)<<14,r<128)||(r=t[this.pos++],n|=(r&127)<<21,r<128)?n:(r=t[this.pos],n|=(r&15)<<28,ev(n,e,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var e=this.readVarint();return e%2===1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=Jp&&Hl?pv(this.buf,t,e):hv(this.buf,t,e)},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t},readPackedVarint:function(e,t){if(this.type!==ye.Bytes)return e.push(this.readVarint(t));var n=At(this);for(e=e||[];this.pos127;);else if(t===ye.Bytes)this.pos=this.readVarint()+this.pos;else if(t===ye.Fixed32)this.pos+=4;else if(t===ye.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+t)},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t268435455||e<0){tv(e,this);return}this.realloc(4),this.buf[this.pos++]=e&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=(e>>>=7)&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=(e>>>=7)&127|(e>127?128:0),!(e<=127)&&(this.buf[this.pos++]=e>>>7&127)))},writeSVarint:function(e){this.writeVarint(e<0?-e*2-1:e*2)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e),this.realloc(e.length*4),this.pos++;var t=this.pos;this.pos=vv(this.buf,e,this.pos);var n=this.pos-t;n>=128&&ea(t,n,this),this.pos=t-1,this.writeVarint(n),this.pos+=n},writeFloat:function(e){this.realloc(4),sr.write(this.buf,e,this.pos,!0,23,4),this.pos+=4},writeDouble:function(e){this.realloc(8),sr.write(this.buf,e,this.pos,!0,52,8),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var n=0;n=128&&ea(n,r,this),this.pos=n-1,this.writeVarint(r),this.pos+=r},writeMessage:function(e,t,n){this.writeTag(e,ye.Bytes),this.writeRawMessage(t,n)},writePackedVarint:function(e,t){t.length&&this.writeMessage(e,iv,t)},writePackedSVarint:function(e,t){t.length&&this.writeMessage(e,ov,t)},writePackedBoolean:function(e,t){t.length&&this.writeMessage(e,lv,t)},writePackedFloat:function(e,t){t.length&&this.writeMessage(e,sv,t)},writePackedDouble:function(e,t){t.length&&this.writeMessage(e,av,t)},writePackedFixed32:function(e,t){t.length&&this.writeMessage(e,uv,t)},writePackedSFixed32:function(e,t){t.length&&this.writeMessage(e,fv,t)},writePackedFixed64:function(e,t){t.length&&this.writeMessage(e,cv,t)},writePackedSFixed64:function(e,t){t.length&&this.writeMessage(e,dv,t)},writeBytesField:function(e,t){this.writeTag(e,ye.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,ye.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,ye.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,ye.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,ye.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,ye.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,ye.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,ye.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,ye.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,ye.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}};function ev(e,t,n){var r=n.buf,i,o;if(o=r[n.pos++],i=(o&112)>>4,o<128||(o=r[n.pos++],i|=(o&127)<<3,o<128)||(o=r[n.pos++],i|=(o&127)<<10,o<128)||(o=r[n.pos++],i|=(o&127)<<17,o<128)||(o=r[n.pos++],i|=(o&127)<<24,o<128)||(o=r[n.pos++],i|=(o&1)<<31,o<128))return tn(e,i,t);throw new Error("Expected varint not more than 10 bytes")}function At(e){return e.type===ye.Bytes?e.readVarint()+e.pos:e.pos+1}function tn(e,t,n){return n?t*4294967296+(e>>>0):(t>>>0)*4294967296+(e>>>0)}function tv(e,t){var n,r;if(e>=0?(n=e%4294967296|0,r=e/4294967296|0):(n=~(-e%4294967296),r=~(-e/4294967296),n^4294967295?n=n+1|0:(n=0,r=r+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");t.realloc(10),nv(n,r,t),rv(r,t)}function nv(e,t,n){n.buf[n.pos++]=e&127|128,e>>>=7,n.buf[n.pos++]=e&127|128,e>>>=7,n.buf[n.pos++]=e&127|128,e>>>=7,n.buf[n.pos++]=e&127|128,e>>>=7,n.buf[n.pos]=e&127}function rv(e,t){var n=(e&7)<<4;t.buf[t.pos++]|=n|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=e&127)))))}function ea(e,t,n){var r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(Math.LN2*7));n.realloc(r);for(var i=n.pos-1;i>=e;i--)n.buf[i+r]=n.buf[i]}function iv(e,t){for(var n=0;n>>8,e[n+2]=t>>>16,e[n+3]=t>>>24}function ta(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+(e[t+3]<<24)}function hv(e,t,n){for(var r="",i=t;i239?4:o>223?3:o>191?2:1;if(i+a>n)break;var l,u,f;a===1?o<128&&(s=o):a===2?(l=e[i+1],(l&192)===128&&(s=(o&31)<<6|l&63,s<=127&&(s=null))):a===3?(l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(s=(o&15)<<12|(l&63)<<6|u&63,(s<=2047||s>=55296&&s<=57343)&&(s=null))):a===4&&(l=e[i+1],u=e[i+2],f=e[i+3],(l&192)===128&&(u&192)===128&&(f&192)===128&&(s=(o&15)<<18|(l&63)<<12|(u&63)<<6|f&63,(s<=65535||s>=1114112)&&(s=null))),s===null?(s=65533,a=1):s>65535&&(s-=65536,r+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),r+=String.fromCharCode(s),i+=a}return r}function pv(e,t,n){return Hl.decode(e.subarray(t,n))}function vv(e,t,n){for(var r=0,i,o;r55295&&i<57344)if(o)if(i<56320){e[n++]=239,e[n++]=191,e[n++]=189,o=i;continue}else i=o-55296<<10|i-56320|65536,o=null;else{i>56319||r+1===t.length?(e[n++]=239,e[n++]=191,e[n++]=189):o=i;continue}else o&&(e[n++]=239,e[n++]=191,e[n++]=189,o=null);i<128?e[n++]=i:(i<2048?e[n++]=i>>6|192:(i<65536?e[n++]=i>>12|224:(e[n++]=i>>18|240,e[n++]=i>>12&63|128),e[n++]=i>>6&63|128),e[n++]=i&63|128)}return n}const De={};De.read=function(e,t){return e.readFields(De._readField,{version:0,name:"",date:"",id:"",nodes:[],ways:[]},t)};De._readField=function(e,t,n){e===1?t.version=n.readVarint():e===2?t.name=n.readString():e===3?t.date=n.readString():e===4?t.id=n.readString():e===5?t.nodes.push(De.node.read(n,n.readVarint()+n.pos)):e===6&&t.ways.push(De.way.read(n,n.readVarint()+n.pos))};De.write=function(e,t){if(e.version&&t.writeVarintField(1,e.version),e.name&&t.writeStringField(2,e.name),e.date&&t.writeStringField(3,e.date),e.id&&t.writeStringField(4,e.id),e.nodes)for(var n=0;n{this.loading=null,this.hideInput=t&&t.length,this.boxInTheMiddle?(this.boxInTheMiddle=!1,setTimeout(()=>{this.suggestionsLoaded=!0,this.suggestions=t},50)):(this.suggestionsLoaded=!0,this.suggestions=t)})},getBugReportURL(e){let t=encodeURIComponent("OSM Error"),n="";return e&&(n="Hello, an error occurred on the website:\n\n```\n"+e.toString()+"\n```\n\n Can you please help?"),`https://github.com/anvaka/city-roads/issues/new?title=${t}&body=${encodeURIComponent(n)}`},updateProgress(e){if(this.stillLoading=0,clearInterval(this.notifyStillLoading),e.loaded<0){this.loading="Trying a different server",this.restartLoadingMonitor();return}e.percent!==void 0?this.loading="Loaded "+Math.round(100*e.percent)+"% ("+ra(e.loaded)+" bytes)...":this.loading="Loaded "+ra(e.loaded)+" bytes..."},retry(){this.lastSuggestion&&this.pickSuggestion(this.lastSuggestion)},pickSuggestion(e){this.lastSuggestion=e,this.error=!1,Ve.isCacheEnabled()&&e.areaId?this.checkCache(e).catch(t=>{if(!t.cancelled)return this.useOSM(e)}):this.useOSM(e)},restartLoadingMonitor(){clearInterval(this.notifyStillLoading),this.stillLoading=0,this.notifyStillLoading=setInterval(()=>{this.stillLoading++},1e4)},checkCache(e){this.loading="Checking cache...";let t=e.areaId;return Xr(Pt.areaServer+"/"+t+".pbf",{progress:this.generateNewProgressToken(),responseType:"arraybuffer"}).then(n=>{var r=new Uint8Array(n);return r}).then(n=>{var r=new Qp(n),i=De.read(r);let o=Un.fromPBF(i);this.$emit("loaded",o)})},useOSM(e){this.loading="Connecting to OpenStreetMap...",this.restartLoadingMonitor(),ct.runFromOptions(new Qr({wayFilter:ct.Road,areaId:e.areaId,bbox:e.bbox}),this.generateNewProgressToken()).then(t=>{this.loading=null,t.hasRoads()?(t.setName(e.name),t.setId(e.areaId||e.osm_id),t.setIsArea(e.areaId),t.setBBox(mv(e.bbox)),this.$emit("loaded",t)):this.noRoads=!0}).catch(t=>{if(t.cancelled){this.loading=null;return}console.error(t),this.error=t,this.loading=null,this.suggestions=[]}).finally(()=>{clearInterval(this.notifyStillLoading),this.stillLoading=0})},cancelRequest(){this.progressToken&&(this.progressToken.cancel(),this.progressToken=null,this.loading=!1)},generateNewProgressToken(){return this.progressToken&&(this.progressToken.cancel(),this.progressToken=null),this.progressToken=new Kr(this.updateProgress),this.progressToken}}};function mv(e){return e&&e.join(",")}function ra(e){return Number.isFinite(e)?e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,","):"N/A"}function ia(e){let t=yv();if(t)return{name:e,areaId:t};let n=wv();if(n)return{name:e,osm_id:n.osm_id,bbox:n.bbox}}function yv(){let e=Ve.get("areaId");return Number.isFinite(Number.parseInt(e,10))||(e=null),e}function wv(){let e=Ve.get("osm_id");if(!Number.isFinite(Number.parseInt(e,10)))return;let t=bv(Ve.get("bbox"));if(!!t)return{osm_id:e,bbox:t}}function bv(e){if(!e)return null;let t=e.split(",").map(n=>Number.parseFloat(n)).filter(n=>Number.isFinite(n));return t.length===4?t:null}const xv={key:0},_v=G("h3",{class:"site-header"},"city roads",-1),Ev=G("p",{class:"description"},"This website renders every single road within a city",-1),Cv=[_v,Ev],Av={key:1,class:"prompt message note shadow"},Tv={key:2,class:"results"},Sv={key:0,class:"suggestions shadow"},Mv=G("div",{class:"prompt message"},[G("div",null,"Select boundaries below to download all roads within"),G("div",{class:"note"},"large cities may require 200MB+ of data transfer and a powerful device")],-1),Pv=["onClick"],Fv={key:1,class:"no-results message shadow"},Lv={key:2,class:"no-results message shadow"},kv={key:3,class:"error message shadow"},Rv=Ie("Sorry, we were not able to download data from the OpenStreetMap. It could be very busy at the moment processing other requests. "),Bv=G("br",null,null,-1),Iv=G("br",null,null,-1),Dv=Ie(" Please bookmark this website and "),Ov=Ie(" later?"),Nv={class:"error-links"},Vv=G("a",{href:"https://twitter.com/anvaka/status/1218971717734789120",title:"see what it supposed to do",target:"_blank"},"see how it should have worked",-1),Uv=["href","title"],zv={key:4,class:"loading message shadow"},Hv={key:0,class:"load-padding"},$v={key:1,class:"load-padding"};function jv(e,t,n,r,i,o){const s=pt("loading-icon");return se(),fe("div",{class:Qt(["find-place",{centered:i.boxInTheMiddle}])},[i.boxInTheMiddle?(se(),fe("div",xv,Cv)):Te("",!0),G("form",{onSubmit:t[2]||(t[2]=_t((...a)=>o.onSubmit&&o.onSubmit(...a),["prevent"])),class:"search-box"},[Bn(G("input",{class:"query-input","onUpdate:modelValue":t[0]||(t[0]=a=>i.enteredInput=a),type:"text",placeholder:"Enter a city name to start",ref:"input"},null,512),[[al,i.enteredInput]]),i.enteredInput&&!i.hideInput?(se(),fe("a",{key:0,type:"submit",class:"search-submit",href:"#",onClick:t[1]||(t[1]=_t((...a)=>o.onSubmit&&o.onSubmit(...a),["prevent"]))},Ot(i.mainActionText),1)):Te("",!0)],32),i.showWarning?(se(),fe("div",Av," Note: Large cities may require 200MB+ of data transfer and may need a powerful device to render. ")):Te("",!0),i.loading?Te("",!0):(se(),fe("div",Tv,[i.suggestionsLoaded&&i.suggestions.length?(se(),fe("div",Sv,[Mv,G("ul",null,[(se(!0),fe(Ge,null,mo(i.suggestions,(a,l)=>(se(),fe("li",{key:l},[G("a",{onClick:_t(u=>o.pickSuggestion(a),["prevent"]),class:"suggestion",href:"#"},[G("span",null,[Ie(Ot(a.name)+" ",1),G("small",null,"("+Ot(a.type)+")",1)])],8,Pv)]))),128))])])):Te("",!0),i.suggestionsLoaded&&!i.suggestions.length&&!i.loading&&!i.error?(se(),fe("div",Fv," Didn't find matching cities. Try a different query? ")):Te("",!0),i.noRoads?(se(),fe("div",Lv," Didn't find any roads. Try a different query? ")):Te("",!0)])),i.error?(se(),fe("div",kv,[G("div",null,[Rv,Bv,Iv,Dv,G("a",{href:"#",onClick:t[3]||(t[3]=_t((...a)=>o.retry&&o.retry(...a),["prevent"]))},"try again"),Ov]),G("div",Nv,[Vv,G("a",{href:o.getBugReportURL(i.error),title:"report error: "+i.error,target:"_blank"},"report this bug",8,Uv)])])):Te("",!0),i.loading?(se(),fe("div",zv,[Se(s),G("span",null,Ot(i.loading),1),G("a",{href:"#",onClick:t[4]||(t[4]=_t((...a)=>o.cancelRequest&&o.cancelRequest(...a),["prevent"])),class:"cancel-request"},"cancel"),i.stillLoading>0?(se(),fe("div",Hv," Still loading... ")):Te("",!0),i.stillLoading>1?(se(),fe("div",$v," Sorry it takes so long! ")):Te("",!0)])):Te("",!0)],2)}var Wv=ut(gv,[["render",jv]]);const an=[],Tt="@@clickoutsideContext";let Jr,qv=0;document.addEventListener("mousedown",e=>Jr=e,!0);document.addEventListener("mouseup",e=>{an.forEach(t=>t[Tt].documentHandler(e,Jr))},!0);document.addEventListener("touchstart",e=>{Jr=e},!0);document.addEventListener("touchend",e=>{an.forEach(t=>t[Tt].documentHandler(e,Jr))},!0);function oa(e,t,n){return function(r={},i={}){if(!n||!r.target||!i.target||e.contains(r.target)||e.contains(i.target)||e===r.target)return;const o=e[Tt].handler;o&&o()}}var $l={created(e,t,n){an.push(e);const r=qv++;e[Tt]={id:r,documentHandler:oa(e,t,n),handler:t.value}},updated(e,t,n){e[Tt].documentHandler=oa(e,t,n),e[Tt].handler=t.value},unmounted(e){let t=an.length;for(let n=0;ne.$emit("update:modelValue",a.target.value)),ref:"input"},null,40,Xv)])])),[[s,o.looseFocus]])}var Qv=ut(Gv,[["render",Zv]]);function yi(e={},t=0){const n=e&&e.a;let r;e&&e.hsl?r=He(e.hsl):e&&e.hex&&e.hex.length>0?r=He(e.hex):e&&e.hsv?r=He(e.hsv):e&&e.rgba?r=He(e.rgba):e&&e.rgb?r=He(e.rgb):r=He(e),r&&(r._a===void 0||r._a===null)&&r.setAlpha(n||1);const i=r.toHsl(),o=r.toHsv();return i.s===0&&(o.h=i.h=e.h||e.hsl&&e.hsl.h||t||0),{hsl:i,hex:r.toHexString().toUpperCase(),hex8:r.toHex8String().toUpperCase(),rgba:r.toRgb(),hsv:o,oldHue:e.h||t||i.h,source:e.source,a:e.a||r.getAlpha()}}var Jv={props:["modelValue"],data(){return{val:yi(this.modelValue)}},computed:{colors:{get(){return this.val},set(e){this.val=e,this.$emit("update:modelValue",e)}}},watch:{modelValue(e){this.val=yi(e)}},methods:{colorChange(e,t){this.oldHue=this.colors.hsl.h,this.colors=yi(e,t||this.oldHue)},isValidHex(e){return He(e).isValid()},simpleCheckForValidColor(e){const t=["r","g","b","a","h","s","l","v"];let n=0,r=0;for(let i=0;it.toUpperCase())},isTransparent(e){return He(e).getAlpha()===0}}};const e0={name:"editableInput",props:{label:String,labelText:String,desc:String,modelValue:[String,Number],max:Number,min:Number,arrowOffset:{type:Number,default:1}},computed:{val:{get(){return this.modelValue},set(e){if(this.max!==void 0&&+e>this.max)this.$refs.input.value=this.max;else return e}},labelId(){return`input__label__${this.label}__${Math.random().toString().slice(2,5)}`},labelSpanText(){return this.labelText||this.label}},methods:{update(e){this.handleChange(e.target.value)},handleChange(e){const t={};t[this.label]=e,t.hex===void 0&&t["#"]===void 0?this.$emit("change",t):e.length>5&&this.$emit("change",t)},handleKeyDown(e){let t=this.val;const n=Number(t);if(n){const r=this.arrowOffset||1;e.keyCode===38&&(t=n+r,this.handleChange(t),e.preventDefault()),e.keyCode===40&&(t=n-r,this.handleChange(t),e.preventDefault())}}}},t0={class:"vc-editable-input"},n0=["aria-labelledby"],r0=["for","id"],i0={class:"vc-input__desc"};function o0(e,t,n,r,i,o){return se(),fe("div",t0,[Bn(G("input",{"aria-labelledby":o.labelId,class:"vc-input__input","onUpdate:modelValue":t[0]||(t[0]=s=>o.val=s),onKeydown:t[1]||(t[1]=(...s)=>o.handleKeyDown&&o.handleKeyDown(...s)),onInput:t[2]||(t[2]=(...s)=>o.update&&o.update(...s)),ref:"input"},null,40,n0),[[al,o.val]]),G("span",{for:n.label,class:"vc-input__label",id:o.labelId},Ot(o.labelSpanText),9,r0),G("span",i0,Ot(n.desc),1)])}var s0=ut(e0,[["render",o0]]);const a0={name:"Saturation",props:{modelValue:Object},computed:{colors(){return this.modelValue},bgColor(){return`hsl(${this.colors.hsv.h}, 100%, 50%)`},pointerTop(){return-(this.colors.hsv.v*100)+1+100+"%"},pointerLeft(){return this.colors.hsv.s*100+"%"}},methods:{throttle:l0((e,t)=>{e(t)},20),handleChange(e,t){!t&&e.preventDefault();const n=this.$refs.container;if(!n)return;const r=n.clientWidth,i=n.clientHeight,o=n.getBoundingClientRect().left+window.pageXOffset,s=n.getBoundingClientRect().top+window.pageYOffset,a=e.pageX||(e.touches?e.touches[0].pageX:0),l=e.pageY||(e.touches?e.touches[0].pageY:0),u=wi(a-o,0,r),f=wi(l-s,0,i),d=u/r,h=wi(-(f/i)+1,0,1);this.throttle(this.onChange,{h:this.colors.hsv.h,s:d,v:h,a:this.colors.hsv.a,source:"hsva"})},onChange(e){this.$emit("change",e)},handleMouseDown(e){window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(e){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}};function wi(e,t,n){return tn?n:e:et?t:e}function l0(e,t){var n=0;return function(...r){var i=new Date;i-n>=t&&(e(...r),n=i)}}const u0=G("div",{class:"vc-saturation--white"},null,-1),f0=G("div",{class:"vc-saturation--black"},null,-1),c0=G("div",{class:"vc-saturation-circle"},null,-1),d0=[c0];function h0(e,t,n,r,i,o){return se(),fe("div",{class:"vc-saturation",style:je({background:o.bgColor}),ref:"container",onMousedown:t[0]||(t[0]=(...s)=>o.handleMouseDown&&o.handleMouseDown(...s)),onTouchmove:t[1]||(t[1]=(...s)=>o.handleChange&&o.handleChange(...s)),onTouchstart:t[2]||(t[2]=(...s)=>o.handleChange&&o.handleChange(...s))},[u0,f0,G("div",{class:"vc-saturation-pointer",style:je({top:o.pointerTop,left:o.pointerLeft})},d0,4)],36)}var p0=ut(a0,[["render",h0]]);const v0={name:"Hue",props:{modelValue:Object,direction:{type:String,default:"horizontal"}},data(){return{oldHue:0,pullDirection:""}},computed:{colors(){const e=this.modelValue.hsl.h;return e!==0&&e-this.oldHue>0&&(this.pullDirection="right"),e!==0&&e-this.oldHue<0&&(this.pullDirection="left"),this.oldHue=e,this.modelValue},directionClass(){return{"vc-hue--horizontal":this.direction==="horizontal","vc-hue--vertical":this.direction==="vertical"}},pointerTop(){return this.direction==="vertical"?this.colors.hsl.h===0&&this.pullDirection==="right"?0:-(this.colors.hsl.h*100/360)+100+"%":0},pointerLeft(){return this.direction==="vertical"?0:this.colors.hsl.h===0&&this.pullDirection==="right"?"100%":this.colors.hsl.h*100/360+"%"}},methods:{handleChange(e,t){!t&&e.preventDefault();const n=this.$refs.container;if(!n)return;const r=n.clientWidth,i=n.clientHeight,o=n.getBoundingClientRect().left+window.pageXOffset,s=n.getBoundingClientRect().top+window.pageYOffset,a=e.pageX||(e.touches?e.touches[0].pageX:0),l=e.pageY||(e.touches?e.touches[0].pageY:0),u=a-o,f=l-s;let d,h;this.direction==="vertical"?(f<0?d=360:f>i?d=0:(h=-(f*100/i)+100,d=360*h/100),this.colors.hsl.h!==d&&this.$emit("change",{h:d,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:"hsl"})):(u<0?d=0:u>r?d=360:(h=u*100/r,d=360*h/100),this.colors.hsl.h!==d&&this.$emit("change",{h:d,s:this.colors.hsl.s,l:this.colors.hsl.l,a:this.colors.hsl.a,source:"hsl"}))},handleMouseDown(e){this.handleChange(e,!0),window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(e){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}},g0=["aria-valuenow"],m0=G("div",{class:"vc-hue-picker"},null,-1),y0=[m0];function w0(e,t,n,r,i,o){return se(),fe("div",{class:Qt(["vc-hue",o.directionClass])},[G("div",{class:"vc-hue-container",role:"slider","aria-valuenow":o.colors.hsl.h,"aria-valuemin":"0","aria-valuemax":"360",ref:"container",onMousedown:t[0]||(t[0]=(...s)=>o.handleMouseDown&&o.handleMouseDown(...s)),onTouchmove:t[1]||(t[1]=(...s)=>o.handleChange&&o.handleChange(...s)),onTouchstart:t[2]||(t[2]=(...s)=>o.handleChange&&o.handleChange(...s))},[G("div",{class:"vc-hue-pointer",style:je({top:o.pointerTop,left:o.pointerLeft}),role:"presentation"},y0,4)],40,g0)],2)}var b0=ut(v0,[["render",w0]]);const bi={},x0={name:"Checkboard",props:{size:{type:[Number,String],default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},computed:{bgStyle(){return{"background-image":"url("+E0(this.white,this.grey,this.size)+")"}}}};function _0(e,t,n){if(typeof document=="undefined")return null;const r=document.createElement("canvas");r.width=r.height=n*2;const i=r.getContext("2d");return i?(i.fillStyle=e,i.fillRect(0,0,r.width,r.height),i.fillStyle=t,i.fillRect(0,0,n,n),i.translate(n,n),i.fillRect(0,0,n,n),r.toDataURL()):null}function E0(e,t,n){const r=e+","+t+","+n;if(bi[r])return bi[r];{const i=_0(e,t,n);return bi[r]=i,i}}function C0(e,t,n,r,i,o){return se(),fe("div",{class:"vc-checkerboard",style:je(o.bgStyle)},null,4)}var jl=ut(x0,[["render",C0]]);const A0={name:"Alpha",props:{modelValue:Object,onChange:Function},components:{checkboard:jl},computed:{colors(){return this.modelValue},gradientColor(){const e=this.colors.rgba,t=[e.r,e.g,e.b].join(",");return"linear-gradient(to right, rgba("+t+", 0) 0%, rgba("+t+", 1) 100%)"}},methods:{handleChange(e,t){!t&&e.preventDefault();const n=this.$refs.container;if(!n)return;const r=n.clientWidth,i=n.getBoundingClientRect().left+window.pageXOffset,s=(e.pageX||(e.touches?e.touches[0].pageX:0))-i;let a;s<0?a=0:s>r?a=1:a=Math.round(s*100/r)/100,this.colors.a!==a&&this.$emit("change",{h:this.colors.hsl.h,s:this.colors.hsl.s,l:this.colors.hsl.l,a,source:"rgba"})},handleMouseDown(e){this.handleChange(e,!0),window.addEventListener("mousemove",this.handleChange),window.addEventListener("mouseup",this.handleMouseUp)},handleMouseUp(){this.unbindEventListeners()},unbindEventListeners(){window.removeEventListener("mousemove",this.handleChange),window.removeEventListener("mouseup",this.handleMouseUp)}}},T0={class:"vc-alpha"},S0={class:"vc-alpha-checkboard-wrap"},M0=G("div",{class:"vc-alpha-picker"},null,-1),P0=[M0];function F0(e,t,n,r,i,o){const s=pt("checkboard");return se(),fe("div",T0,[G("div",S0,[Se(s)]),G("div",{class:"vc-alpha-gradient",style:je({background:o.gradientColor})},null,4),G("div",{class:"vc-alpha-container",ref:"container",onMousedown:t[0]||(t[0]=(...a)=>o.handleMouseDown&&o.handleMouseDown(...a)),onTouchmove:t[1]||(t[1]=(...a)=>o.handleChange&&o.handleChange(...a)),onTouchstart:t[2]||(t[2]=(...a)=>o.handleChange&&o.handleChange(...a))},[G("div",{class:"vc-alpha-pointer",style:je({left:o.colors.a*100+"%"})},P0,4)],544)])}var L0=ut(A0,[["render",F0]]);const k0=["#D0021B","#F5A623","#F8E71C","#8B572A","#7ED321","#417505","#BD10E0","#9013FE","#4A90E2","#50E3C2","#B8E986","#000000","#4A4A4A","#9B9B9B","#FFFFFF","rgba(0,0,0,0)"],R0={name:"Sketch",mixins:[Jv],components:{saturation:p0,hue:b0,alpha:L0,"ed-in":s0,checkboard:jl},props:{presetColors:{type:Array,default(){return k0}},disableAlpha:{type:Boolean,default:!1},disableFields:{type:Boolean,default:!1}},computed:{hex(){let e;return this.colors.a<1?e=this.colors.hex8:e=this.colors.hex,e.replace("#","")},activeColor(){const e=this.colors.rgba;return"rgba("+[e.r,e.g,e.b,e.a].join(",")+")"}},methods:{handlePreset(e){this.colorChange({hex:e,source:"hex"})},childChange(e){this.colorChange(e)},inputChange(e){!e||(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:"hex"}):(e.r||e.g||e.b||e.a)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:"rgba"}))}}},B0={class:"vc-sketch-saturation-wrap"},I0={class:"vc-sketch-controls"},D0={class:"vc-sketch-sliders"},O0={class:"vc-sketch-hue-wrap"},N0={key:0,class:"vc-sketch-alpha-wrap"},V0={class:"vc-sketch-color-wrap"},U0=["aria-label"],z0={key:0,class:"vc-sketch-field"},H0={class:"vc-sketch-field--double"},$0={class:"vc-sketch-field--single"},j0={class:"vc-sketch-field--single"},W0={class:"vc-sketch-field--single"},q0={key:0,class:"vc-sketch-field--single"},G0={class:"vc-sketch-presets",role:"group","aria-label":"A color preset, pick one to set as current color"},Y0=["aria-label","onClick"],K0=["aria-label","onClick"];function X0(e,t,n,r,i,o){const s=pt("saturation"),a=pt("hue"),l=pt("alpha"),u=pt("checkboard"),f=pt("ed-in");return se(),fe("div",{role:"application","aria-label":"Sketch color picker",class:Qt(["vc-sketch",n.disableAlpha?"vc-sketch__disable-alpha":""])},[G("div",B0,[Se(s,{modelValue:e.colors,"onUpdate:modelValue":t[0]||(t[0]=d=>e.colors=d),onChange:o.childChange},null,8,["modelValue","onChange"])]),G("div",I0,[G("div",D0,[G("div",O0,[Se(a,{modelValue:e.colors,"onUpdate:modelValue":t[1]||(t[1]=d=>e.colors=d),onChange:o.childChange},null,8,["modelValue","onChange"])]),n.disableAlpha?Te("",!0):(se(),fe("div",N0,[Se(l,{modelValue:e.colors,"onUpdate:modelValue":t[2]||(t[2]=d=>e.colors=d),onChange:o.childChange},null,8,["modelValue","onChange"])]))]),G("div",V0,[G("div",{"aria-label":`Current color is ${o.activeColor}`,class:"vc-sketch-active-color",style:je({background:o.activeColor})},null,12,U0),Se(u)])]),n.disableFields?Te("",!0):(se(),fe("div",z0,[G("div",H0,[Se(f,{label:"hex",modelValue:o.hex,onChange:o.inputChange},null,8,["modelValue","onChange"])]),G("div",$0,[Se(f,{label:"r",modelValue:e.colors.rgba.r,onChange:o.inputChange},null,8,["modelValue","onChange"])]),G("div",j0,[Se(f,{label:"g",modelValue:e.colors.rgba.g,onChange:o.inputChange},null,8,["modelValue","onChange"])]),G("div",W0,[Se(f,{label:"b",modelValue:e.colors.rgba.b,onChange:o.inputChange},null,8,["modelValue","onChange"])]),n.disableAlpha?Te("",!0):(se(),fe("div",q0,[Se(f,{label:"a",modelValue:e.colors.a,"arrow-offset":.01,max:1,onChange:o.inputChange},null,8,["modelValue","arrow-offset","onChange"])]))])),G("div",G0,[(se(!0),fe(Ge,null,mo(n.presetColors,d=>(se(),fe(Ge,null,[e.isTransparent(d)?(se(),fe("div",{key:"else-"+d,"aria-label":"Color:"+d,class:"vc-sketch-presets-color",onClick:h=>o.handlePreset(d)},[Se(u)],8,K0)):(se(),fe("div",{class:"vc-sketch-presets-color","aria-label":"Color:"+d,key:"if-"+d,style:je({background:d}),onClick:h=>o.handlePreset(d)},null,12,Y0))],64))),256))])],2)}var Z0=ut(R0,[["render",X0]]);const Q0={name:"vue-colorpicker",components:{"sketch-picker":Z0},directives:{ClickOutside:$l},props:{modelValue:{type:Object}},emits:["update:modelValue","change"],data(){return{showPicker:!1,colors:{hex:"#FFFFFF",a:1},colorValue:"#FFFFFF",panelLeft:"0px",panelTop:"0px"}},computed:{pickerType(){return"sketch-picker"},isTransparent(){return this.colors.a===0},btnStyle(){if(this.isTransparent)return{background:"#eee",backgroundImage:"linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%,rgba(0,0,0,.25)0), linear-gradient(45deg, rgba(0,0,0,.25)25%,transparent 0, transparent 75%,rgba(0,0,0,.25)0)",backgroundPosition:"0 0, 11px 11px",backgroundSize:"22px 22px"};let{r:e,g:t,b:n,a:r}=this.colorValue;return{background:`rgba(${e}, ${t}, ${n}, ${r})`}}},watch:{modelValue(e,t){e!==t&&this.updateColorObject(e)},showPicker(e){if(!e)return;const t=220,n=320;let r=this.$refs.triggerButton.getBoundingClientRect(),i=r.x,o=r.bottom;r.y+n>window.innerHeight&&(o=Math.max(0,window.innerHeight-n),i+=36),i+t>window.innerWidth&&(i=Math.max(0,window.innerWidth-t)),this.panelLeft=i+"px",this.panelTop=o+"px"}},methods:{hide(){this.showPicker=!1},changeColor(e){this.colorValue=e.rgba,this.$emit("update:modelValue",this.colorValue),this.$emit("change",this.colorValue)},updateColorObject(e){if(!e)return;const t=He(e);!e||e==="transparent"?this.colors={hex:"#FFFFFF",hsl:{h:0,s:0,l:1,a:0},hsv:{h:0,s:0,v:1,a:0},rgba:{r:255,g:255,b:255,a:0},a:0}:this.colors={hex:t.toHexString(),hsl:t.toHsl(),hsv:t.toHsv(),rgba:t.toRgb(),a:t.getAlpha()},this.colorValue=this.colors.rgba}},mounted(){this.updateColorObject(this.modelValue)}};function J0(e,t,n,r,i,o){const s=qa("click-outside");return Bn((se(),fe("div",{class:"vue-colorpicker",onClick:t[0]||(t[0]=a=>i.showPicker=!0)},[G("span",{class:"vue-colorpicker-btn",style:je(o.btnStyle),ref:"triggerButton"},null,4),Bn(G("div",{class:"vue-colorpicker-panel",style:je({left:i.panelLeft,top:i.panelTop})},[(se(),_r(Af(o.pickerType),{modelValue:i.colors,"onUpdate:modelValue":o.changeColor},null,8,["modelValue","onUpdate:modelValue"]))],4),[[Mc,i.showPicker]])])),[[s,o.hide]])}var eg=ut(Q0,[["render",J0],["__scopeId","data-v-01827dd4"]]),St=Fo({});let sa=0;class Wl{get color(){return this._color}set color(t){let n=He(t);this._color=n,this.lines&&(this.lines.color=aa(n.toRgb())),this.scene&&this.scene.renderFrame()}get lineWidth(){return this._lineWidth}set lineWidth(t){this._lineWidth=t,!(!this.lines||!this.scene)&&this.lines.setLineWidth(t)}constructor(){this._color=Pt.getDefaultLineColor(),this.grid=null,this.lines=null,this.scene=null,this.dx=0,this.dy=0,this.scale=1,this.hidden=!1,this.id="paths_"+sa,this._lineWidth=1,sa+=1}getGridProjector(){if(this.grid)return this.grid.projector}getQueryBounds(){const{grid:t}=this;if(t){if(t.queryBounds)return t.queryBounds;if(t.isArea)return{areaId:t.id}}}setGrid(t){this.grid=t,this.scene&&this.bindToScene(this.scene)}getViewBox(){if(!this.grid)return null;let{width:t,height:n}=this.grid.getProjectedRect(),r=Math.max(t,n)/4;return{left:-r,top:r,right:r,bottom:-r}}moveTo(t,n=0){console.warn("Please use moveBy() instead. The moveTo() is under construction")}moveBy(t,n=0){this.dx=t,this.dy=n,this._transferTransform()}buildLinesCollection(){if(this.lines)return this.lines;let t=this.grid,n=new Ln(t.wayPointCount,{width:this._lineWidth,allowColors:!1,is3D:!1});t.forEachWay(function(i,o){n.add({from:i,to:o})});let r=He(this._color).toRgb();n.color=aa(r),n.id=this.id,this.lines=n}destroy(){!this.scene||!this.lines||this.scene.removeChild(this.lines)}bindToScene(t){this.scene&&this.lines&&console.error("You seem to be adding this layer twice..."),this.scene=t,this.grid&&(this.buildLinesCollection(),!this.hidden&&this.scene.appendChild(this.lines))}hide(){this.hidden||(this.hidden=!0,!(!this.scene||!this.grid)&&this.scene.removeChild(this.lines))}show(){if(!!this.hidden){if(this.hidden=!1,!this.scene||!this.grid){console.log("Layer will be shown when grid is available");return}this.scene.appendChild(this.lines)}}_transferTransform(){!this.lines||(this.lines.translate([this.dx,this.dy,0]),this.lines.updateWorldTransform(!0),this.scene&&this.scene.renderFrame(!0))}}function aa(e){return{r:e.r/255,g:e.g/255,b:e.b/255,a:e.a}}function tg(e,t){const n=e.getRenderer(),r={open(){return``},close(){return o()}};return t.minLength&&(r.beforeWrite=s=>{let a=0;for(let l=1;lt.minLength)return!0;return a>t.minLength}),r.round=t.round,Tl(n,r);function o(){let s=n.getPixelRatio();return t.printable.map(a=>{if(a.element instanceof SVGSVGElement){let l=a.bounds;l.left*s,l.top*s;let u=a.element;u.setAttribute("x",l.left*s),u.setAttribute("y",l.top*s),u.setAttribute("width",l.width*s),u.setAttribute("height",l.height*s);let f=new XMLSerializer().serializeToString(a.element);return u.removeAttribute("x"),u.removeAttribute("y"),u.removeAttribute("width"),u.removeAttribute("height"),f}else{let l=a;if(!l.text)return;let u=l.text.replace(/&/g,"&").replace(//g,">"),f=l.bounds,d=(f.right-l.paddingRight)*s,h=(f.bottom-l.paddingBottom)*s,g=l.fontSize*s,y=l.fontFamily.replace(/"/g,"'");return`${u}`}}).filter(a=>a).join(` +`)}}function ng(e,t){t=t||{};let n=tg(e,{printable:Yl(),...t}),r=new Blob([n],{type:"image/svg+xml"}),i=window.URL.createObjectURL(r),o=Gl(t.name,".svg");setTimeout(()=>{let s=document.createElement("a");s.href=i,s.download=o,s.click(),Kl(i)},30)}function rg(e,t){t=t||{},ql(e).then(n=>{let r=Gl(t.name,".png");n.toBlob(function(i){let o=window.URL.createObjectURL(i),s=document.createElement("a");s.href=o,s.download=r,s.click(),Kl(o)},"image/png")})}function ql(e){let t=Qi(),n=t.width,r=t.height,i=document.createElement("canvas"),o=i.getContext("2d");return i.width=n,i.height=r,e.render(),o.drawImage(t,0,0,t.width,t.height,0,0,n,r),Promise.all(Yl().map(s=>og(s,o))).then(()=>i)}function Qi(){return document.querySelector("#canvas")}function Gl(e,t){return ig(e||new Date().toISOString())+(t||"")}function ig(e){return e?e.replace(/[#%&{}\\/?*><$!'":@+`|=]/g,"_"):""}function og(e,t){return e?new Promise((n,r)=>{let i=window.devicePixelRatio||1;if(e.element instanceof SVGSVGElement){let o=e.element,s=e.bounds,a=new Image;a.width=s.width*i,a.height=s.height*i,a.onload=()=>{t.drawImage(a,s.left*i,s.top*i,a.width,a.height),o.removeAttribute("width"),o.removeAttribute("height"),n()},o.setAttribute("width",a.width),o.setAttribute("height",a.height),a.src="data:image/svg+xml;base64,"+btoa(new XMLSerializer().serializeToString(o))}else t.save(),t.font=i*e.fontSize+"px "+e.fontFamily,t.fillStyle=e.color,t.textAlign="end",t.fillText(e.text,(e.bounds.right-e.paddingRight)*i,(e.bounds.bottom-e.paddingBottom)*i),t.restore(),n()}):Promise.resolve()}function Yl(){return Array.from(document.querySelectorAll(".printable")).map(e=>{let t=window.getComputedStyle(e),n=e.getBoundingClientRect(),r=Number.parseInt(t.fontSize,10),i=Number.parseInt(t.paddingRight,10),o=Number.parseInt(t.paddingBottom,10)*2;return{text:e.innerText,bounds:n,fontSize:r,paddingBottom:o,paddingRight:i,color:t.color,fontFamily:t.fontFamily,fill:t.color,element:e}})}function Kl(e){setTimeout(()=>{window.URL.revokeObjectURL(e)},45e3)}function sg(e){let t=Hi(e),n=Pt.getDefaultLineColor();t.on("transform",w),t.on("append-child",b),t.on("remove-child",S),t.setClearColor(247/255,242/255,232/255,1);let r=t.getCameraController();r.setMoveSpeed&&(r.setMoveSpeed(200),r.setRotationSpeed(Math.PI/500));let i=t.getGL();i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);let o=!1,s=[],a=Pt.getBackgroundColor();C();let l={render(){t.renderFrame(!0)},clear(){s.forEach(m=>m.destroy()),s=[],t.clear()},queryLayerAll:f,queryLayer:d,getRenderer(){return t},getWGL(){return kh},version(){return"0.0.2"},dispose(){t.clear(),t.dispose(),l.fire("dispose",l),A()},set lineColor(m){s.forEach(x=>{x.color=m}),n=He(m),St.fire("line-color",n),l.fire("line-color",n)},get lineColor(){let m=d();return m&&m.color||n},set background(m){a=He(m);let x=a.toRgb();t.setClearColor(x.r/255,x.g/255,x.b/255,x.a),t.renderFrame(),St.fire("background-color",a),l.fire("background-color",a)},get background(){return a},add:h,load:u,saveToPNG:g,saveToSVG:y};return Fo(l);function u(m,x){let P=Qr.parse(l,m,x),L=new Wl;return L.id=P.place,ct.runFromOptions(P).then(B=>{B.setProjector(P.projector),L.setGrid(B)}).catch(B=>{console.error(`Could not execute: + ${m} + The error was:`),console.error(B),L.destroy()}),h(L),L}function f(m){return m?s.filter(x=>x.id===m):s}function d(m){let x=f(m);if(x)return x[0]}function h(m){if(!(s.indexOf(m)>-1)&&(m.bindToScene(t),s.push(m),s.length===1)){let x=m.getViewBox();x&&t.setViewBox(x)}}function g(m){return rg(l,{name:m})}function y(m,x){return ng(l,Object.assign({},{name:m},x))}function w(m){St.fire("scene-transform")}function b(m){l.fire("layer-added",m)}function S(m){l.fire("layer-removed",m)}function C(){document.addEventListener("keydown",E,!0),document.addEventListener("keyup",T,!0)}function A(){document.removeEventListener("keydown",E,!0),document.removeEventListener("keyup",T,!0)}function E(m){m.shiftKey&&(o=!0,r.setSpeed&&r.setSpeed(.1))}function T(m){!m.shiftKey&&o&&(r.setSpeed&&r.setSpeed(1),o=!1)}}let ag="https://edi6jgnosf.execute-api.us-west-2.amazonaws.com/Stage/put_image";const lg={mug:"168739066664861503"};function ug(e,t){const n=lg[e];if(!n)throw new Error("Unknown product kind: "+e);const r=encodeURIComponent(t);return`https://www.zazzle.com/api/create/at-238058511445368984?rf=238058511445368984&ax=Linkover&pd=${n}&ed=true&tc=&ic=&t_map_iid=${r}`}function fg(e){var t=e.toDataURL("image/png").replace(/^data:image\/(png|jpg);base64,/,"");const n=new FormData;return n.append("image",t),Xr(ag,{method:"POST",responseType:"json",progress:new Kr(Function.prototype),body:n}).then(r=>{if(!r.success)throw new Error("Failed to upload image");let i=r.data.link;return ug("mug",i)}).catch(r=>{throw console.log("error",r),r})}(function(e){var t=e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype,n=e.Blob&&function(){try{return Boolean(new Blob)}catch{return!1}}(),r=n&&e.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),i=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder||e.MSBlobBuilder,o=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,s=(n||i)&&e.atob&&e.ArrayBuffer&&e.Uint8Array&&function(a){var l,u,f,d,h,g,y,w,b;if(l=a.match(o),!l)throw new Error("invalid data URI");for(u=l[2]?l[1]:"text/plain"+(l[3]||";charset=US-ASCII"),f=!!l[4],d=a.slice(l[0].length),f?h=atob(d):h=decodeURIComponent(d),g=new ArrayBuffer(h.length),y=new Uint8Array(g),w=0;w1)return;let x=m.touches[0];u(x.clientX,x.clientY,m)}function a(m){if(m.changedTouches.length>1)return;let x=m.changedTouches[0];f(x.clientX,x.clientY)&&(m.preventDefault(),m.stopPropagation())}function l(m){if(m.touches.length>1)return;let x=m.touches[0];d(x.clientX,x.clientY),m.preventDefault(),m.stopPropagation()}function u(m,x,P){let L=w(m,x),B=document.querySelectorAll(".overlay-active");for(let H=0;H300?!1:Math.hypot(m-t.x,x-t.y)<40}function w(m,x){let P=document.querySelectorAll(".can-drag");for(let L=0;LP.right||xP.bottom)}function A(m){return m.getBoundingClientRect()}function E(m,x){m.style.pointerEvents="none",m.classList.add("can-drag"),x&&x.receiveFocus&&(m.receiveFocus=x.receiveFocus)}function T(){document.removeEventListener("mousedown",r),document.removeEventListener("mouseup",o),document.removeEventListener("touchstart",s),document.removeEventListener("touchend",a),document.removeEventListener("touchcancel",a),t.clickedElement=void 0,g()}}class xi{constructor(t,n,r){this.name=t,this.changeColor=r,this.color=n}}const dg={name:"App",components:{FindPlace:Wv,LoadingIcon:kl,EditableLabel:Qv,ColorPicker:eg},data(){return{placeFound:!1,name:"",zazzleLink:null,generatingPreview:!1,showSettings:!1,settingsOpen:!1,labelColor:Pt.getLabelColor().toRgb(),backgroundColor:Pt.getBackgroundColor().toRgb(),layers:[]}},computed:{labelColorRGBA(){return la(this.labelColor)}},created(){St.on("scene-transform",this.handleSceneTransform),St.on("background-color",this.syncBackground),St.on("line-color",this.syncLineColor),this.overlayManager=cg()},beforeUnmount(){debugger;this.overlayManager.dispose(),this.dispose(),St.off("scene-transform",this.handleSceneTransform),St.off("background-color",this.syncBackground),St.off("line-color",this.syncLineColor)},methods:{dispose(){this.scene&&(this.scene.dispose(),window.scene=null)},toggleSettings(){this.showSettings=!this.showSettings},handleSceneTransform(){this.zazzleLink=null},onGridLoaded(e){e.isArea?(Ve.set("areaId",e.id),Ve.unset("osm_id"),Ve.unset("bbox")):e.bboxString&&(Ve.unset("areaId"),Ve.set("osm_id",e.id),Ve.set("bbox",e.bboxString)),this.placeFound=!0,this.name=e.name.split(",")[0];let t=Qi();t.style.visibility="visible",this.scene=sg(t),this.scene.on("layer-added",this.updateLayers),this.scene.on("layer-removed",this.updateLayers),window.scene=this.scene;let n=new Wl;n.id="lines",n.setGrid(e),this.scene.add(n)},startOver(){Ve.unset("areaId"),Ve.unsetPlace(),Ve.unset("q"),Ve.enableCache(),this.dispose(),this.placeFound=!1,this.zazzleLink=null,this.showSettings=!1,this.backgroundColor=Pt.getBackgroundColor().toRgb(),this.labelColor=Pt.getLabelColor().toRgb(),document.body.style.backgroundColor=Pt.getBackgroundColor().toRgbString(),Qi().style.visibility="hidden"},toPNGFile(e){scene.saveToPNG(this.name)},toSVGFile(e){scene.saveToSVG(this.name)},updateLayers(){let e=[],t=0,n=this.scene.getRenderer();n.getRoot().children.forEach(o=>{if(!o.color)return;let s=o.id;s||(t+=1,s="lines "+t);let a=He.fromRatio(o.color);e.push(new xi(s,a,l=>{this.zazzleLink=null,o.color=i(l),n.renderFrame(),this.scene.fire("color-change",o)}))}),e.push(new xi("background",this.backgroundColor,this.setBackgroundColor),new xi("labels",this.labelColor,o=>this.labelColor=o)),this.layers=e;function i(o){return{r:o.r/255,g:o.g/255,b:o.b/255,a:o.a}}this.zazzleLink=null},syncLineColor(){this.updateLayers()},syncBackground(e){this.backgroundColor=e.toRgb(),this.updateLayers()},updateBackground(){this.setBackgroundColor(this.backgroundColor),this.zazzleLink=null},setBackgroundColor(e){this.scene.background=e,document.body.style.backgroundColor=la(e),this.zazzleLink=null},zazzleMugPrint(){if(this.zazzleLink){window.open(this.zazzleLink,"_blank"),ua(this.zazzleLink);return}this.generatingPreview=!0,ql(this.scene).then(e=>{fg(e).then(t=>{this.zazzleLink=t,window.open(t,"_blank"),ua(t),this.generatingPreview=!1}).catch(t=>{this.error=t,this.generatingPreview=!1})})}}};function la(e){return`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`}function ua(e){typeof gtag!="undefined"&>ag("event","click",{event_category:"Outbound Link",event_label:e})}const hg={id:"app"},pg={key:0},vg={class:"controls"},gg={key:0,class:"print-window"},mg=G("h3",null,"Display",-1),yg={class:"row"},wg=G("div",{class:"col"},"Colors",-1),bg={class:"col colors c-2"},xg={class:"color-label"},_g=G("h3",null,"Export",-1),Eg={class:"row"},Cg=G("span",{class:"col c-2"},[Ie(" Print what you see onto a mug. "),G("br"),Ie("Get a unique gift of your favorite city. ")],-1),Ag={key:0,class:"preview-actions message"},Tg={key:0,class:"padded popup-help"},Sg=Ie(" If your browser has blocked the new window, "),Mg=G("br",null,null,-1),Pg=Ie("please "),Fg=["href"],Lg=Ie(" to open it. "),kg={key:1,class:"loading-container"},Rg=Ie(" Generating preview url... "),Bg={class:"row"},Ig=G("span",{class:"col c-2"}," Save the current screen as a raster image. ",-1),Dg={class:"row"},Og=G("span",{class:"col c-2"}," Save the current screen as a vector image. ",-1),Ng=G("h3",null,"About",-1),Vg=G("div",null,[G("p",null,[Ie("This website was created by "),G("a",{href:"https://twitter.com/anvaka",target:"_blank"},"@anvaka"),Ie(". It downloads roads from OpenStreetMap and renders them with WebGL. ")]),G("p",null,[Ie(" You can find the entire "),G("a",{href:"https://github.com/anvaka/city-roads"},"source code here"),Ie(". If you love this website you can also "),G("a",{href:"https://www.paypal.com/paypalme2/anvakos/3"},"buy me a coffee"),Ie(" or "),G("a",{href:"https://www.patreon.com/anvaka"},"support me on Patreon"),Ie(", but you don't have to. ")])],-1),Ug=Ie("data ");function zg(e,t,n,r,i,o){const s=pt("find-place"),a=pt("color-picker"),l=pt("loading-icon"),u=pt("editable-label");return se(),fe(Ge,null,[i.placeFound?Te("",!0):(se(),_r(s,{key:0,onLoaded:o.onGridLoaded},null,8,["onLoaded"])),G("div",hg,[i.placeFound?(se(),fe("div",pg,[G("div",vg,[G("a",{href:"#",class:"print-button",onClick:t[0]||(t[0]=_t((...f)=>o.toggleSettings&&o.toggleSettings(...f),["prevent"]))},"Customize..."),G("a",{href:"#",class:"try-another",onClick:t[1]||(t[1]=_t((...f)=>o.startOver&&o.startOver(...f),["prevent"]))},"Try another city")]),i.showSettings?(se(),fe("div",gg,[mg,G("div",yg,[wg,G("div",bg,[(se(!0),fe(Ge,null,mo(i.layers,f=>(se(),fe("div",{key:f.name,class:"color-container"},[Se(a,{modelValue:f.color,"onUpdate:modelValue":d=>f.color=d,onChange:f.changeColor},null,8,["modelValue","onUpdate:modelValue","onChange"]),G("div",xg,Ot(f.name),1)]))),128))])]),_g,G("div",Eg,[G("a",{href:"#",onClick:t[2]||(t[2]=_t(f=>o.zazzleMugPrint(),["prevent"])),class:"col"},"Onto a mug"),Cg]),i.zazzleLink||i.generatingPreview?(se(),fe("div",Ag,[i.zazzleLink?(se(),fe("div",Tg,[Sg,Mg,Pg,G("a",{href:i.zazzleLink,target:"_blank"},"click here",8,Fg),Lg])):Te("",!0),i.generatingPreview?(se(),fe("div",kg,[Se(l),Rg])):Te("",!0)])):Te("",!0),G("div",Bg,[G("a",{href:"#",onClick:t[3]||(t[3]=_t((...f)=>o.toPNGFile&&o.toPNGFile(...f),["prevent"])),class:"col"},"As an image (.png)"),Ig]),G("div",Dg,[G("a",{href:"#",onClick:t[4]||(t[4]=_t((...f)=>o.toSVGFile&&o.toSVGFile(...f),["prevent"])),class:"col"},"As a vector (.svg)"),Og]),Te("",!0),Ng,Vg])):Te("",!0)])):Te("",!0)]),i.placeFound?(se(),_r(u,{key:1,modelValue:i.name,"onUpdate:modelValue":t[6]||(t[6]=f=>i.name=f),class:"city-name",printable:!0,style:je({color:o.labelColorRGBA}),"overlay-manager":e.overlayManager},null,8,["modelValue","style","overlay-manager"])):Te("",!0),i.placeFound?(se(),fe("div",{key:2,class:"license printable can-drag",style:je({color:o.labelColorRGBA})},[Ug,G("a",{href:"https://www.openstreetmap.org/about/",target:"_blank",style:je({color:o.labelColorRGBA})},"\xA9 OpenStreetMap",4)],4)):Te("",!0)],64)}var Hg=ut(dg,[["render",zg]]);const $g={},jn=e=>(Ju("data-v-3325dbc3"),e=e(),ef(),e),jg={class:"absolute no-webgl"},Wg=jn(()=>G("h3",null,"WebGL is not enabled :(",-1)),qg=jn(()=>G("p",null,"This website renders millions of roads at once.",-1)),Gg=jn(()=>G("p",null,[Ie(" To render this amount of data fast, the website uses "),G("a",{href:"https://get.webgl.org/"},"WebGL"),Ie(", which seem to be not supported by the device that you are using. ")],-1)),Yg=jn(()=>G("p",null,"Please try a different device to play with this website",-1)),Kg=jn(()=>G("img",{src:"https://i.imgur.com/Fbbe5a6.png",alt:"demo"},null,-1)),Xg=[Wg,qg,Gg,Yg,Kg];function Zg(e,t){return se(),fe("div",jg,Xg)}var Qg=ut($g,[["render",Zg],["__scopeId","data-v-3325dbc3"]]);window.addEventListener("error",Jg);window.requireModule=Oc;window.Query=ct;Al(document.querySelector("#canvas"))?vs(Hg).mount("#host"):vs(Qg).mount("#host");function Jg(e){if(typeof gtag!="function")return;const t=e?`${e.message} in ${e.filename}:${e.lineno}`:"Unknown exception";gtag("send","exception",{description:t,fatal:!1})}});export default em(); diff --git a/app/dataviz/city-roads/assets/index.e4ff2fbf.css b/app/dataviz/city-roads/assets/index.e4ff2fbf.css new file mode 100644 index 00000000..d776a396 --- /dev/null +++ b/app/dataviz/city-roads/assets/index.e4ff2fbf.css @@ -0,0 +1 @@ +.find-place{width:442px}h3.site-header{margin:0;font-weight:400;font-size:32px;text-align:center}input{border:none;flex:1;font-family:Avenir,Helvetica,Arial,sans-serif;padding:0;color:#434343;height:100%;font-size:16px}input:focus{outline:none}.search-box{position:relative;background-color:#fff;padding:0 0 0 8px;box-shadow:0 2px 4px #0003,0 -1px #00000005;height:48px;display:flex;font-size:16px;cursor:text}.search-box a{cursor:pointer}.search-box span{display:flex;align-items:center;flex-shrink:0}.prompt{padding:4px;text-align:center;font-size:12px}.search-submit{padding:0 8px;align-items:center;text-decoration:none;display:flex;flex-shrink:0;justify-content:center;outline:none;z-index:1;color:#ff4081}.search-submit:hover{color:#fff;background:#ff4081}.suggestion{display:block;min-height:64px;align-items:center;border-bottom:1px solid #e9eaed;display:flex;padding:0 10px;text-decoration:none;color:#ff4081}.suggestions{position:relative;background:#fff}.suggestions .note{font-size:10px;font-style:italic}.suggestions ul{list-style-type:none;margin:0;padding:0;max-height:calc(100vh - 128px);overflow-y:auto;overflow-x:hidden}.message,.loading{padding:4px 8px;position:relative}.loading svg{margin-right:8px}.shadow{box-shadow:0 2px 4px #0003}.error{overflow-x:auto}.find-place{position:absolute;display:flex;flex-direction:column;top:8px;left:50%;transform:translate(-50%) translateY(0);transition-timing-function:ease-out;transition-property:top left transform;transition-duration:.2s}.find-place.centered{top:50%;left:50%;transform:translate(-50%) translateY(-143px)}.load-padding{padding-left:16px}.description{padding:8px;margin:0;text-align:center}.cancel-request{position:absolute;right:4px;top:4px;font-size:12px}.error-links{display:flex;justify-content:space-between;font-size:12px}@media (max-width: 450px){.find-place{width:100%}.find-place.centered{top:8px;left:0;transform:none}.message,.prompt{font-size:12px}.prompt .note{font-size:9px}}.editable-label{position:relative}.editable-label span{position:relative;top:0;left:0;display:flex;align-items:center;font-family:Roboto,sans-serif;white-space:pre;padding:8px;border:1px solid transparent}.editable-label input{caret-color:#212121;color:transparent;font-family:Roboto,sans-serif;background:transparent;display:flex;align-items:center;position:absolute;overflow:hidden;top:0;left:0;width:100%;padding:8px}.vc-editable-input{position:relative}.vc-input__input{padding:0;border:0;outline:none}.vc-input__label{text-transform:capitalize}.vc-saturation,.vc-saturation--white,.vc-saturation--black{cursor:pointer;position:absolute;top:0;left:0;right:0;bottom:0}.vc-saturation--white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.vc-saturation--black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.vc-saturation-pointer{cursor:pointer;position:absolute}.vc-saturation-circle{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-2px,-2px)}.vc-hue{position:absolute;top:0px;right:0px;bottom:0px;left:0px;border-radius:2px}.vc-hue--horizontal{background:linear-gradient(to right,#f00 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%)}.vc-hue--vertical{background:linear-gradient(to top,#f00 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,#f00 100%)}.vc-hue-container{cursor:pointer;margin:0 2px;position:relative;height:100%}.vc-hue-pointer{z-index:2;position:absolute}.vc-hue-picker{cursor:pointer;margin-top:1px;width:4px;border-radius:1px;height:8px;box-shadow:0 0 2px #0009;background:#fff;transform:translate(-2px)}.vc-checkerboard{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background-size:contain}.vc-alpha{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.vc-alpha-checkboard-wrap{position:absolute;top:0px;right:0px;bottom:0px;left:0px;overflow:hidden}.vc-alpha-gradient{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.vc-alpha-container{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.vc-alpha-pointer{z-index:2;position:absolute}.vc-alpha-picker{cursor:pointer;width:4px;border-radius:1px;height:8px;box-shadow:0 0 2px #0009;background:#fff;margin-top:1px;transform:translate(-2px)}.vc-sketch{position:relative;width:200px;padding:10px 10px 0;box-sizing:initial;background:#fff;border-radius:4px;box-shadow:0 0 0 1px #00000026,0 8px 16px #00000026}.vc-sketch-saturation-wrap{width:100%;padding-bottom:75%;position:relative;overflow:hidden}.vc-sketch-controls{display:flex}.vc-sketch-sliders{padding:4px 0;flex:1}.vc-sketch-sliders .vc-hue,.vc-sketch-sliders .vc-alpha-gradient{border-radius:2px}.vc-sketch-hue-wrap{position:relative;height:10px}.vc-sketch-alpha-wrap{position:relative;height:10px;margin-top:4px;overflow:hidden}.vc-sketch-color-wrap{width:24px;height:24px;position:relative;margin-top:4px;margin-left:4px;border-radius:3px}.vc-sketch-active-color{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:2px;box-shadow:inset 0 0 0 1px #00000026,inset 0 0 4px #00000040;z-index:2}.vc-sketch-color-wrap .vc-checkerboard{background-size:auto}.vc-sketch-field{display:flex;padding-top:4px}.vc-sketch-field .vc-input__input{width:90%;padding:4px 0 3px 10%;border:none;box-shadow:inset 0 0 0 1px #ccc;font-size:10px}.vc-sketch-field .vc-input__label{display:block;text-align:center;font-size:11px;color:#222;padding-top:3px;padding-bottom:4px;text-transform:capitalize}.vc-sketch-field--single{flex:1;padding-left:6px}.vc-sketch-field--double{flex:2}.vc-sketch-presets{margin-right:-10px;margin-left:-10px;padding-left:10px;padding-top:10px;border-top:1px solid #eee}.vc-sketch-presets-color{border-radius:3px;overflow:hidden;position:relative;display:inline-block;margin:0 10px 10px 0;vertical-align:top;cursor:pointer;width:16px;height:16px;box-shadow:inset 0 0 0 1px #00000026}.vc-sketch-presets-color .vc-checkerboard{box-shadow:inset 0 0 0 1px #00000026;border-radius:3px}.vc-sketch__disable-alpha .vc-sketch-color-wrap{height:10px}.vue-colorpicker[data-v-01827dd4]{display:inline-block;box-sizing:border-box;font-size:0;cursor:pointer}.vue-colorpicker-btn[data-v-01827dd4]{display:inline-block;width:30px;height:22px;border:1px solid #666;background:#fff}.vue-colorpicker .vue-colorpicker-panel[data-v-01827dd4]{position:absolute;z-index:1}#app{margin:8px;max-height:100vh;position:absolute;z-index:1}#app h3{font-weight:400}.can-drag{border:1px solid transparent}.drag-overlay{position:fixed;background:transparent;left:0;top:0;right:0;bottom:0}.overlay-active{border:1px dashed #ff4081}.overlay-active.exclusive{border-style:solid}.controls{height:48px;background:#fff;display:flex;flex-direction:row;align-items:stretch;width:442px;justify-content:space-around;box-shadow:0 2px 4px #0003,0 -1px #00000005}.controls a{text-decoration:none;display:flex;justify-content:center;align-items:center;color:#ff4081;margin:0;border:0}.controls a:hover{color:#fff;background:#ff4081}.controls a.try-another{flex:1}.controls a.print-button{flex:1;border-right:1px solid #e9eaed}.controls a.print-button:focus{border:1px dashed #ff4081}.col{display:flex;flex:1}.col select{margin-left:14px}.row{margin-top:4px;display:flex;flex-direction:row;min-height:32px}.colors{display:flex;flex-direction:row;flex-wrap:wrap}.colors .color-container{display:flex;flex-direction:column;align-items:center;width:64px}.colors .color-label{font-size:12px}a{border:1px solid transparent;margin:-1px;text-decoration:none;color:#ff4081}a:focus{border:1px dashed #ff4081;outline:none}.print-window{max-height:calc(100vh - 48px);overflow-y:auto;border-top:1px solid #e9eaed;background:#fff;box-shadow:0 2px 4px #0003;width:442px;padding:8px}.print-window .row a{margin-right:4px}.print-window h3{margin:8px 0;text-align:right}.message{border-top:1px solid #e9eaed;border-bottom:1px solid #e9eaed;background:#f5f5f5}.preview-actions{padding:8px 0;margin-left:-8px;margin-bottom:14px;margin-top:1px;width:442px;flex-direction:column;align-items:stretch;font-size:14px;align-items:center;display:flex}.preview-actions .popup-help{text-align:center}.city-name{position:absolute;right:32px;bottom:54px;font-size:24px;color:#434343}.city-name input{font-size:24px}.license{text-align:right;position:fixed;font-family:Roboto,sans-serif;right:32px;bottom:32px;font-size:12px;padding-right:8px}.license a{text-decoration:none;display:inline-block}.c-2{flex:2}@media (max-width: 450px){#app{width:100%;margin:0}#app .preview-actions,#app .error,#app .controls,#app .print-window{width:100%}#app .loading-container{font-size:12px}#app .print-window{font-size:14px}.city-name{right:8px;bottom:24px}.license{right:8px;bottom:8px}}.no-webgl[data-v-3325dbc3]{overflow-y:auto;display:flex;flex-direction:column;align-items:center;margin:20px auto;position:absolute;top:0;bottom:0;width:100%;height:100%;text-align:center;padding:8px}.no-webgl h3[data-v-3325dbc3]{font-weight:400;font-size:32px;margin:16px}.no-webgl p[data-v-3325dbc3]{max-width:400px;margin:8px 0}.no-webgl img[data-v-3325dbc3]{width:100%;max-width:1440px} diff --git a/app/dataviz/city-roads/index.html b/app/dataviz/city-roads/index.html new file mode 100644 index 00000000..2c5bab7c --- /dev/null +++ b/app/dataviz/city-roads/index.html @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + Draw all roads in a city at once + + + + + + + + + +
+ + + + + diff --git a/app/dataviz/mark-twain-portrait/.gitignore b/app/dataviz/mark-twain-portrait/.gitignore new file mode 100644 index 00000000..5148e527 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/.gitignore @@ -0,0 +1,37 @@ +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history diff --git a/app/dataviz/mark-twain-portrait/LICENSE b/app/dataviz/mark-twain-portrait/LICENSE new file mode 100644 index 00000000..ea4b79fd --- /dev/null +++ b/app/dataviz/mark-twain-portrait/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016-2024 Andrei Kashcha + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/app/dataviz/mark-twain-portrait/README.md b/app/dataviz/mark-twain-portrait/README.md new file mode 100644 index 00000000..0ef68620 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/README.md @@ -0,0 +1,72 @@ +# [Portrait](https://anvaka.github.io/portrait/) + +I took this picture of Mark Twain: + +![mark twain](https://raw.githubusercontent.com/anvaka/portrait/master/docs/mark_twain_small.png) + +Pixelated it into this: + +![mark twain pixelated](https://raw.githubusercontent.com/anvaka/portrait/master/docs/mark_twain_cloud.png) + +When you zoom closer you will see quotes from Mark Twain: + +![mark twain twist](https://raw.githubusercontent.com/anvaka/portrait/master/docs/mark_twist.gif) + +Explore it live here: https://anvaka.github.io/portrait/ + +# Map Navigation + +You can explore the portrait the same way you would explore Google Maps. Most +of the keyboard/mouse/touch shortcuts should be familiar: + +* `+`/`-`, `Mouse wheel`/`Pinch`, `Single click`, `Double tap` - Zoom in/out +* `Left arrow` - Move left +* `Right arrow` - Move right +* `Up arrow` - Move up +* `Down arrow` - Move down +* `Mini map click` - Reset zoom + +## Tidbits + +* The page address updates as you explore the map. So if you send link to +someone - they will see what you see. +* To fully zoom out - click on the mini-map portrait +* When fully zoomed out - help text appears + + +# How does this work? + +I wrote down more than 200 Mark Twain's quotes. Mostly quotes came from +[reddit](https://www.reddit.com/r/QuotesPorn/search?q=mark+twain&restrict_sr=on&sort=relevance&t=all) +and [Goodreads](https://www.goodreads.com/author/quotes/1244.Mark_Twain). + +Then I sorted them according to their popularity (e.g. by number of votes on reddit, +or likes on good reads), and dropped them onto canvas. + +Once I got the canvas, I saved it into high-resolution png file (8,000 x 8,000 pixels). + +* I used [OpenSeadragon](https://openseadragon.github.io) to have pan and zoom support. +* When URL changes, I update query string, so that you can share favorite quotes. +The query string state is managed by [query-state](https://github.com/anvaka/query-state) + +### The canvas algorithm + +The canvas algorithm works by randomly traversing empty space of the mask, +trying to find a rectangle that will fit required box. This bit of the code is +not yet available since it requires good amount of hand-tuning. However if +you'd like to play with ready-to-use code, I can highly recommend [amueller/word_cloud](https://github.com/amueller/word_cloud) +Python package. + +# Have an advice? + +If you'd like to explore other portraits in a similar way or have a suggestion +how to make this better, please reach out to me: + +* Open issue here: https://github.com/anvaka/portrait/issues +* Email to me: anvaka@gmail.com +* Tweet to me: https://twitter.com/anvaka + + +# Enjoy! + +That's it! Hope you enjoy exploring Mark Twain's wisdom in a new, artistic way! diff --git a/app/dataviz/mark-twain-portrait/bundle.js b/app/dataviz/mark-twain-portrait/bundle.js new file mode 100644 index 00000000..3938836e --- /dev/null +++ b/app/dataviz/mark-twain-portrait/bundle.js @@ -0,0 +1,21548 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o [{callback: function, ctx: object}] } + var registeredEvents = Object.create(null); + + return { + on: function (eventName, callback, ctx) { + if (typeof callback !== 'function') { + throw new Error('callback is expected to be a function'); + } + var handlers = registeredEvents[eventName]; + if (!handlers) { + handlers = registeredEvents[eventName] = []; + } + handlers.push({callback: callback, ctx: ctx}); + + return subject; + }, + + off: function (eventName, callback) { + var wantToRemoveAll = (typeof eventName === 'undefined'); + if (wantToRemoveAll) { + // Killing old events storage should be enough in this case: + registeredEvents = Object.create(null); + return subject; + } + + if (registeredEvents[eventName]) { + var deleteAllCallbacksForEvent = (typeof callback !== 'function'); + if (deleteAllCallbacksForEvent) { + delete registeredEvents[eventName]; + } else { + var callbacks = registeredEvents[eventName]; + for (var i = 0; i < callbacks.length; ++i) { + if (callbacks[i].callback === callback) { + callbacks.splice(i, 1); + } + } + } + } + + return subject; + }, + + fire: function (eventName) { + var callbacks = registeredEvents[eventName]; + if (!callbacks) { + return subject; + } + + var fireArguments; + if (arguments.length > 1) { + fireArguments = Array.prototype.splice.call(arguments, 1); + } + for(var i = 0; i < callbacks.length; ++i) { + var callbackInfo = callbacks[i]; + callbackInfo.callback.apply(callbackInfo.ctx, fireArguments); + } + + return subject; + } + }; +} + +function validateSubject(subject) { + if (!subject) { + throw new Error('Eventify cannot use falsy object as events subject'); + } + var reservedWords = ['on', 'fire', 'off']; + for (var i = 0; i < reservedWords.length; ++i) { + if (subject.hasOwnProperty(reservedWords[i])) { + throw new Error("Subject cannot be eventified, since it already has property '" + reservedWords[i] + "'"); + } + } +} + +},{}],5:[function(require,module,exports){ +//! openseadragon 2.2.1 +//! Built on 2016-07-01 +//! Git commit: v2.2.1-0-babdefd +//! http://openseadragon.github.io +//! License: http://openseadragon.github.io/license/ + +/* + * OpenSeadragon + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Portions of this source file taken from jQuery: + * + * Copyright 2011 John Resig + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * Portions of this source file taken from mattsnider.com: + * + * Copyright (c) 2006-2013 Matt Snider + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT + * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * @namespace OpenSeadragon + * @version openseadragon 2.2.1 + * @classdesc The root namespace for OpenSeadragon. All utility methods + * and classes are defined on or below this namespace. + * + */ + + +// Typedefs + + /** + * All required and optional settings for instantiating a new instance of an OpenSeadragon image viewer. + * + * @typedef {Object} Options + * @memberof OpenSeadragon + * + * @property {String} id + * Id of the element to append the viewer's container element to. If not provided, the 'element' property must be provided. + * If both the element and id properties are specified, the viewer is appended to the element provided in the element property. + * + * @property {Element} element + * The element to append the viewer's container element to. If not provided, the 'id' property must be provided. + * If both the element and id properties are specified, the viewer is appended to the element provided in the element property. + * + * @property {Array|String|Function|Object} [tileSources=null] + * Tile source(s) to open initially. This is a complex parameter; see + * {@link OpenSeadragon.Viewer#open} for details. + * + * @property {Number} [tabIndex=0] + * Tabbing order index to assign to the viewer element. Positive values are selected in increasing order. When tabIndex is 0 + * source order is used. A negative value omits the viewer from the tabbing order. + * + * @property {Array} overlays Array of objects defining permanent overlays of + * the viewer. The overlays added via this option and later removed with + * {@link OpenSeadragon.Viewer#removeOverlay} will be added back when a new + * image is opened. + * To add overlays which can be definitively removed, one must use + * {@link OpenSeadragon.Viewer#addOverlay} + * If displaying a sequence of images, the overlays can be associated + * with a specific page by passing the overlays array to the page's + * tile source configuration. + * Expected properties: + * * x, y, (or px, py for pixel coordinates) to define the location. + * * width, height in point if using x,y or in pixels if using px,py. If width + * and height are specified, the overlay size is adjusted when zooming, + * otherwise the size stays the size of the content (or the size defined by CSS). + * * className to associate a class to the overlay + * * id to set the overlay element. If an element with this id already exists, + * it is reused, otherwise it is created. If not specified, a new element is + * created. + * * placement a string to define the relative position to the viewport. + * Only used if no width and height are specified. Default: 'TOP_LEFT'. + * See {@link OpenSeadragon.Placement} for possible values. + * + * @property {String} [xmlPath=null] + * DEPRECATED. A relative path to load a DZI file from the server. + * Prefer the newer Options.tileSources. + * + * @property {String} [prefixUrl='/images/'] + * Prepends the prefixUrl to navImages paths, which is very useful + * since the default paths are rarely useful for production + * environments. + * + * @property {OpenSeadragon.NavImages} [navImages] + * An object with a property for each button or other built-in navigation + * control, eg the current 'zoomIn', 'zoomOut', 'home', and 'fullpage'. + * Each of those in turn provides an image path for each state of the button + * or navigation control, eg 'REST', 'GROUP', 'HOVER', 'PRESS'. Finally the + * image paths, by default assume there is a folder on the servers root path + * called '/images', eg '/images/zoomin_rest.png'. If you need to adjust + * these paths, prefer setting the option.prefixUrl rather than overriding + * every image path directly through this setting. + * + * @property {Boolean} [debugMode=false] + * TODO: provide an in-screen panel providing event detail feedback. + * + * @property {String} [debugGridColor='#437AB2'] + * + * @property {Number} [blendTime=0] + * Specifies the duration of animation as higher or lower level tiles are + * replacing the existing tile. + * + * @property {Boolean} [alwaysBlend=false] + * Forces the tile to always blend. By default the tiles skip blending + * when the blendTime is surpassed and the current animation frame would + * not complete the blend. + * + * @property {Boolean} [autoHideControls=true] + * If the user stops interacting with the viewport, fade the navigation + * controls. Useful for presentation since the controls are by default + * floated on top of the image the user is viewing. + * + * @property {Boolean} [immediateRender=false] + * Render the best closest level first, ignoring the lowering levels which + * provide the effect of very blurry to sharp. It is recommended to change + * setting to true for mobile devices. + * + * @property {Number} [defaultZoomLevel=0] + * Zoom level to use when image is first opened or the home button is clicked. + * If 0, adjusts to fit viewer. + * + * @property {Number} [opacity=1] + * Default opacity of the tiled images (1=opaque, 0=transparent) + * + * @property {String} [compositeOperation=null] + * Valid values are 'source-over', 'source-atop', 'source-in', 'source-out', + * 'destination-over', 'destination-atop', 'destination-in', + * 'destination-out', 'lighter', 'copy' or 'xor' + * + * @property {String|CanvasGradient|CanvasPattern|Function} [placeholderFillStyle=null] + * Draws a colored rectangle behind the tile if it is not loaded yet. + * You can pass a CSS color value like "#FF8800". + * When passing a function the tiledImage and canvas context are available as argument which is useful when you draw a gradient or pattern. + * + * @property {Number} [degrees=0] + * Initial rotation. + * + * @property {Number} [minZoomLevel=null] + * + * @property {Number} [maxZoomLevel=null] + * + * @property {Boolean} [homeFillsViewer=false] + * Make the 'home' button fill the viewer and clip the image, instead + * of fitting the image to the viewer and letterboxing. + * + * @property {Boolean} [panHorizontal=true] + * Allow horizontal pan. + * + * @property {Boolean} [panVertical=true] + * Allow vertical pan. + * + * @property {Boolean} [constrainDuringPan=false] + * + * @property {Boolean} [wrapHorizontal=false] + * Set to true to force the image to wrap horizontally within the viewport. + * Useful for maps or images representing the surface of a sphere or cylinder. + * + * @property {Boolean} [wrapVertical=false] + * Set to true to force the image to wrap vertically within the viewport. + * Useful for maps or images representing the surface of a sphere or cylinder. + * + * @property {Number} [minZoomImageRatio=0.9] + * The minimum percentage ( expressed as a number between 0 and 1 ) of + * the viewport height or width at which the zoom out will be constrained. + * Setting it to 0, for example will allow you to zoom out infinity. + * + * @property {Number} [maxZoomPixelRatio=1.1] + * The maximum ratio to allow a zoom-in to affect the highest level pixel + * ratio. This can be set to Infinity to allow 'infinite' zooming into the + * image though it is less effective visually if the HTML5 Canvas is not + * availble on the viewing device. + * + * @property {Number} [smoothTileEdgesMinZoom=1.1] + * A zoom percentage ( where 1 is 100% ) of the highest resolution level. + * When zoomed in beyond this value alternative compositing will be used to + * smooth out the edges between tiles. This will have a performance impact. + * Can be set to Infinity to turn it off. + * Note: This setting is ignored on iOS devices due to a known bug (See {@link https://github.com/openseadragon/openseadragon/issues/952}) + * + * @property {Boolean} [iOSDevice=?] + * True if running on an iOS device, false otherwise. + * Used to disable certain features that behave differently on iOS devices. + * + * @property {Boolean} [autoResize=true] + * Set to false to prevent polling for viewer size changes. Useful for providing custom resize behavior. + * + * @property {Boolean} [preserveImageSizeOnResize=false] + * Set to true to have the image size preserved when the viewer is resized. This requires autoResize=true (default). + * + * @property {Number} [minScrollDeltaTime=50] + * Number of milliseconds between canvas-scroll events. This value helps normalize the rate of canvas-scroll + * events between different devices, causing the faster devices to slow down enough to make the zoom control + * more manageable. + * + * @property {Number} [pixelsPerWheelLine=40] + * For pixel-resolution scrolling devices, the number of pixels equal to one scroll line. + * + * @property {Number} [visibilityRatio=0.5] + * The percentage ( as a number from 0 to 1 ) of the source image which + * must be kept within the viewport. If the image is dragged beyond that + * limit, it will 'bounce' back until the minimum visibility ratio is + * achieved. Setting this to 0 and wrapHorizontal ( or wrapVertical ) to + * true will provide the effect of an infinitely scrolling viewport. + * + * @property {Object} [viewportMargins={}] + * Pushes the "home" region in from the sides by the specified amounts. + * Possible subproperties (Numbers, in screen coordinates): left, top, right, bottom. + * + * @property {Number} [imageLoaderLimit=0] + * The maximum number of image requests to make concurrently. By default + * it is set to 0 allowing the browser to make the maximum number of + * image requests in parallel as allowed by the browsers policy. + * + * @property {Number} [clickTimeThreshold=300] + * The number of milliseconds within which a pointer down-up event combination + * will be treated as a click gesture. + * + * @property {Number} [clickDistThreshold=5] + * The maximum distance allowed between a pointer down event and a pointer up event + * to be treated as a click gesture. + * + * @property {Number} [dblClickTimeThreshold=300] + * The number of milliseconds within which two pointer down-up event combinations + * will be treated as a double-click gesture. + * + * @property {Number} [dblClickDistThreshold=20] + * The maximum distance allowed between two pointer click events + * to be treated as a double-click gesture. + * + * @property {Number} [springStiffness=6.5] + * + * @property {Number} [animationTime=1.2] + * Specifies the animation duration per each {@link OpenSeadragon.Spring} + * which occur when the image is dragged or zoomed. + * + * @property {OpenSeadragon.GestureSettings} [gestureSettingsMouse] + * Settings for gestures generated by a mouse pointer device. (See {@link OpenSeadragon.GestureSettings}) + * @property {Boolean} [gestureSettingsMouse.scrollToZoom=true] - Zoom on scroll gesture + * @property {Boolean} [gestureSettingsMouse.clickToZoom=true] - Zoom on click gesture + * @property {Boolean} [gestureSettingsMouse.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true + * then clickToZoom should be set to false to prevent multiple zooms. + * @property {Boolean} [gestureSettingsMouse.pinchToZoom=false] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsMouse.flickEnabled=false] - Enable flick gesture + * @property {Number} [gestureSettingsMouse.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) + * @property {Number} [gestureSettingsMouse.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture + * @property {Boolean} [gestureSettingsMouse.pinchRotate=false] - If pinchRotate is true, the user will have the ability to rotate the image using their fingers. + * + * @property {OpenSeadragon.GestureSettings} [gestureSettingsTouch] + * Settings for gestures generated by a touch pointer device. (See {@link OpenSeadragon.GestureSettings}) + * @property {Boolean} [gestureSettingsTouch.scrollToZoom=false] - Zoom on scroll gesture + * @property {Boolean} [gestureSettingsTouch.clickToZoom=false] - Zoom on click gesture + * @property {Boolean} [gestureSettingsTouch.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true + * then clickToZoom should be set to false to prevent multiple zooms. + * @property {Boolean} [gestureSettingsTouch.pinchToZoom=true] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsTouch.flickEnabled=true] - Enable flick gesture + * @property {Number} [gestureSettingsTouch.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) + * @property {Number} [gestureSettingsTouch.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture + * @property {Boolean} [gestureSettingsTouch.pinchRotate=false] - If pinchRotate is true, the user will have the ability to rotate the image using their fingers. + * + * @property {OpenSeadragon.GestureSettings} [gestureSettingsPen] + * Settings for gestures generated by a pen pointer device. (See {@link OpenSeadragon.GestureSettings}) + * @property {Boolean} [gestureSettingsPen.scrollToZoom=false] - Zoom on scroll gesture + * @property {Boolean} [gestureSettingsPen.clickToZoom=true] - Zoom on click gesture + * @property {Boolean} [gestureSettingsPen.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true + * then clickToZoom should be set to false to prevent multiple zooms. + * @property {Boolean} [gestureSettingsPen.pinchToZoom=false] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsPen.flickEnabled=false] - Enable flick gesture + * @property {Number} [gestureSettingsPen.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) + * @property {Number} [gestureSettingsPen.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture + * @property {Boolean} [gestureSettingsPen.pinchRotate=false] - If pinchRotate is true, the user will have the ability to rotate the image using their fingers. + * + * @property {OpenSeadragon.GestureSettings} [gestureSettingsUnknown] + * Settings for gestures generated by unknown pointer devices. (See {@link OpenSeadragon.GestureSettings}) + * @property {Boolean} [gestureSettingsUnknown.scrollToZoom=true] - Zoom on scroll gesture + * @property {Boolean} [gestureSettingsUnknown.clickToZoom=false] - Zoom on click gesture + * @property {Boolean} [gestureSettingsUnknown.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true + * then clickToZoom should be set to false to prevent multiple zooms. + * @property {Boolean} [gestureSettingsUnknown.pinchToZoom=true] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsUnknown.flickEnabled=true] - Enable flick gesture + * @property {Number} [gestureSettingsUnknown.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) + * @property {Number} [gestureSettingsUnknown.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture + * @property {Boolean} [gestureSettingsUnknown.pinchRotate=false] - If pinchRotate is true, the user will have the ability to rotate the image using their fingers. + * + * @property {Number} [zoomPerClick=2.0] + * The "zoom distance" per mouse click or touch tap. Note: Setting this to 1.0 effectively disables the click-to-zoom feature (also see gestureSettings[Mouse|Touch|Pen].clickToZoom/dblClickToZoom). + * + * @property {Number} [zoomPerScroll=1.2] + * The "zoom distance" per mouse scroll or touch pinch. Note: Setting this to 1.0 effectively disables the mouse-wheel zoom feature (also see gestureSettings[Mouse|Touch|Pen].scrollToZoom}). + * + * @property {Number} [zoomPerSecond=1.0] + * The number of seconds to animate a single zoom event over. + * + * @property {Boolean} [showNavigator=false] + * Set to true to make the navigator minimap appear. + * + * @property {String} [navigatorId=navigator-GENERATED DATE] + * The ID of a div to hold the navigator minimap. + * If an ID is specified, the navigatorPosition, navigatorSizeRatio, navigatorMaintainSizeRatio, navigator[Top|Left|Height|Width] and navigatorAutoFade options will be ignored. + * If an ID is not specified, a div element will be generated and placed on top of the main image. + * + * @property {String} [navigatorPosition='TOP_RIGHT'] + * Valid values are 'TOP_LEFT', 'TOP_RIGHT', 'BOTTOM_LEFT', 'BOTTOM_RIGHT', or 'ABSOLUTE'.
+ * If 'ABSOLUTE' is specified, then navigator[Top|Left|Height|Width] determines the size and position of the navigator minimap in the viewer, and navigatorSizeRatio and navigatorMaintainSizeRatio are ignored.
+ * For 'TOP_LEFT', 'TOP_RIGHT', 'BOTTOM_LEFT', and 'BOTTOM_RIGHT', the navigatorSizeRatio or navigator[Height|Width] values determine the size of the navigator minimap. + * + * @property {Number} [navigatorSizeRatio=0.2] + * Ratio of navigator size to viewer size. Ignored if navigator[Height|Width] are specified. + * + * @property {Boolean} [navigatorMaintainSizeRatio=false] + * If true, the navigator minimap is resized (using navigatorSizeRatio) when the viewer size changes. + * + * @property {Number|String} [navigatorTop=null] + * Specifies the location of the navigator minimap (see navigatorPosition). + * + * @property {Number|String} [navigatorLeft=null] + * Specifies the location of the navigator minimap (see navigatorPosition). + * + * @property {Number|String} [navigatorHeight=null] + * Specifies the size of the navigator minimap (see navigatorPosition). + * If specified, navigatorSizeRatio and navigatorMaintainSizeRatio are ignored. + * + * @property {Number|String} [navigatorWidth=null] + * Specifies the size of the navigator minimap (see navigatorPosition). + * If specified, navigatorSizeRatio and navigatorMaintainSizeRatio are ignored. + * + * @property {Boolean} [navigatorAutoResize=true] + * Set to false to prevent polling for navigator size changes. Useful for providing custom resize behavior. + * Setting to false can also improve performance when the navigator is configured to a fixed size. + * + * @property {Boolean} [navigatorAutoFade=true] + * If the user stops interacting with the viewport, fade the navigator minimap. + * Setting to false will make the navigator minimap always visible. + * + * @property {Boolean} [navigatorRotate=true] + * If true, the navigator will be rotated together with the viewer. + * + * @property {Number} [controlsFadeDelay=2000] + * The number of milliseconds to wait once the user has stopped interacting + * with the interface before begining to fade the controls. Assumes + * showNavigationControl and autoHideControls are both true. + * + * @property {Number} [controlsFadeLength=1500] + * The number of milliseconds to animate the controls fading out. + * + * @property {Number} [maxImageCacheCount=200] + * The max number of images we should keep in memory (per drawer). + * + * @property {Number} [timeout=30000] + * + * @property {Boolean} [useCanvas=true] + * Set to false to not use an HTML canvas element for image rendering even if canvas is supported. + * + * @property {Number} [minPixelRatio=0.5] + * The higher the minPixelRatio, the lower the quality of the image that + * is considered sufficient to stop rendering a given zoom level. For + * example, if you are targeting mobile devices with less bandwith you may + * try setting this to 1.5 or higher. + * + * @property {Boolean} [mouseNavEnabled=true] + * Is the user able to interact with the image via mouse or touch. Default + * interactions include draging the image in a plane, and zooming in toward + * and away from the image. + * + * @property {Boolean} [showNavigationControl=true] + * Set to false to prevent the appearance of the default navigation controls.
+ * Note that if set to false, the customs buttons set by the options + * zoomInButton, zoomOutButton etc, are rendered inactive. + * + * @property {OpenSeadragon.ControlAnchor} [navigationControlAnchor=TOP_LEFT] + * Placement of the default navigation controls. + * To set the placement of the sequence controls, see the + * sequenceControlAnchor option. + * + * @property {Boolean} [showZoomControl=true] + * If true then + and - buttons to zoom in and out are displayed.
+ * Note: {@link OpenSeadragon.Options.showNavigationControl} is overriding + * this setting when set to false. + * + * @property {Boolean} [showHomeControl=true] + * If true then the 'Go home' button is displayed to go back to the original + * zoom and pan.
+ * Note: {@link OpenSeadragon.Options.showNavigationControl} is overriding + * this setting when set to false. + * + * @property {Boolean} [showFullPageControl=true] + * If true then the 'Toggle full page' button is displayed to switch + * between full page and normal mode.
+ * Note: {@link OpenSeadragon.Options.showNavigationControl} is overriding + * this setting when set to false. + * + * @property {Boolean} [showRotationControl=false] + * If true then the rotate left/right controls will be displayed as part of the + * standard controls. This is also subject to the browser support for rotate + * (e.g. viewer.drawer.canRotate()).
+ * Note: {@link OpenSeadragon.Options.showNavigationControl} is overriding + * this setting when set to false. + * + * @property {Boolean} [showSequenceControl=true] + * If sequenceMode is true, then provide buttons for navigating forward and + * backward through the images. + * + * @property {OpenSeadragon.ControlAnchor} [sequenceControlAnchor=TOP_LEFT] + * Placement of the default sequence controls. + * + * @property {Boolean} [navPrevNextWrap=false] + * If true then the 'previous' button will wrap to the last image when + * viewing the first image and the 'next' button will wrap to the first + * image when viewing the last image. + * + * @property {String} zoomInButton + * Set the id of the custom 'Zoom in' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} zoomOutButton + * Set the id of the custom 'Zoom out' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} homeButton + * Set the id of the custom 'Go home' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} fullPageButton + * Set the id of the custom 'Toggle full page' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} rotateLeftButton + * Set the id of the custom 'Rotate left' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} rotateRightButton + * Set the id of the custom 'Rotate right' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} previousButton + * Set the id of the custom 'Previous page' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {String} nextButton + * Set the id of the custom 'Next page' button to use. + * This is useful to have a custom button anywhere in the web page.
+ * To only change the button images, consider using + * {@link OpenSeadragon.Options.navImages} + * + * @property {Boolean} [sequenceMode=false] + * Set to true to have the viewer treat your tilesources as a sequence of images to + * be opened one at a time rather than all at once. + * + * @property {Number} [initialPage=0] + * If sequenceMode is true, display this page initially. + * + * @property {Boolean} [preserveViewport=false] + * If sequenceMode is true, then normally navigating through each image resets the + * viewport to 'home' position. If preserveViewport is set to true, then the viewport + * position is preserved when navigating between images in the sequence. + * + * @property {Boolean} [preserveOverlays=false] + * If sequenceMode is true, then normally navigating through each image + * resets the overlays. + * If preserveOverlays is set to true, then the overlays added with {@link OpenSeadragon.Viewer#addOverlay} + * are preserved when navigating between images in the sequence. + * Note: setting preserveOverlays overrides any overlays specified in the global + * "overlays" option for the Viewer. It's also not compatible with specifying + * per-tileSource overlays via the options, as those overlays will persist + * even after the tileSource is closed. + * + * @property {Boolean} [showReferenceStrip=false] + * If sequenceMode is true, then display a scrolling strip of image thumbnails for + * navigating through the images. + * + * @property {String} [referenceStripScroll='horizontal'] + * + * @property {Element} [referenceStripElement=null] + * + * @property {Number} [referenceStripHeight=null] + * + * @property {Number} [referenceStripWidth=null] + * + * @property {String} [referenceStripPosition='BOTTOM_LEFT'] + * + * @property {Number} [referenceStripSizeRatio=0.2] + * + * @property {Boolean} [collectionMode=false] + * Set to true to have the viewer arrange your TiledImages in a grid or line. + * + * @property {Number} [collectionRows=3] + * If collectionMode is true, specifies how many rows the grid should have. Use 1 to make a line. + * If collectionLayout is 'vertical', specifies how many columns instead. + * + * @property {Number} [collectionColumns=0] + * If collectionMode is true, specifies how many columns the grid should have. Use 1 to make a line. + * If collectionLayout is 'vertical', specifies how many rows instead. Ignored if collectionRows is not set to a falsy value. + * + * @property {String} [collectionLayout='horizontal'] + * If collectionMode is true, specifies whether to arrange vertically or horizontally. + * + * @property {Number} [collectionTileSize=800] + * If collectionMode is true, specifies the size, in viewport coordinates, for each TiledImage to fit into. + * The TiledImage will be centered within a square of the specified size. + * + * @property {Number} [collectionTileMargin=80] + * If collectionMode is true, specifies the margin, in viewport coordinates, between each TiledImage. + * + * @property {String|Boolean} [crossOriginPolicy=false] + * Valid values are 'Anonymous', 'use-credentials', and false. If false, canvas requests will + * not use CORS, and the canvas will be tainted. + * + * @property {Boolean} [ajaxWithCredentials=false] + * Whether to set the withCredentials XHR flag for AJAX requests (when loading tile sources). + * Note that this can be overridden at the {@link OpenSeadragon.TileSource} level. + * + */ + + /** + * Settings for gestures generated by a pointer device. + * + * @typedef {Object} GestureSettings + * @memberof OpenSeadragon + * + * @property {Boolean} scrollToZoom + * Set to false to disable zooming on scroll gestures. + * + * @property {Boolean} clickToZoom + * Set to false to disable zooming on click gestures. + * + * @property {Boolean} dblClickToZoom + * Set to false to disable zooming on double-click gestures. Note: If set to true + * then clickToZoom should be set to false to prevent multiple zooms. + * + * @property {Boolean} pinchToZoom + * Set to false to disable zooming on pinch gestures. + * + * @property {Boolean} flickEnabled + * Set to false to disable the kinetic panning effect (flick) at the end of a drag gesture. + * + * @property {Number} flickMinSpeed + * If flickEnabled is true, the minimum speed (in pixels-per-second) required to cause the kinetic panning effect (flick) at the end of a drag gesture. + * + * @property {Number} flickMomentum + * If flickEnabled is true, a constant multiplied by the velocity to determine the distance of the kinetic panning effect (flick) at the end of a drag gesture. + * A larger value will make the flick feel "lighter", while a smaller value will make the flick feel "heavier". + * Note: springStiffness and animationTime also affect the "spring" used to stop the flick animation. + * + */ + +/** + * The names for the image resources used for the image navigation buttons. + * + * @typedef {Object} NavImages + * @memberof OpenSeadragon + * + * @property {Object} zoomIn - Images for the zoom-in button. + * @property {String} zoomIn.REST + * @property {String} zoomIn.GROUP + * @property {String} zoomIn.HOVER + * @property {String} zoomIn.DOWN + * + * @property {Object} zoomOut - Images for the zoom-out button. + * @property {String} zoomOut.REST + * @property {String} zoomOut.GROUP + * @property {String} zoomOut.HOVER + * @property {String} zoomOut.DOWN + * + * @property {Object} home - Images for the home button. + * @property {String} home.REST + * @property {String} home.GROUP + * @property {String} home.HOVER + * @property {String} home.DOWN + * + * @property {Object} fullpage - Images for the full-page button. + * @property {String} fullpage.REST + * @property {String} fullpage.GROUP + * @property {String} fullpage.HOVER + * @property {String} fullpage.DOWN + * + * @property {Object} rotateleft - Images for the rotate left button. + * @property {String} rotateleft.REST + * @property {String} rotateleft.GROUP + * @property {String} rotateleft.HOVER + * @property {String} rotateleft.DOWN + * + * @property {Object} rotateright - Images for the rotate right button. + * @property {String} rotateright.REST + * @property {String} rotateright.GROUP + * @property {String} rotateright.HOVER + * @property {String} rotateright.DOWN + * + * @property {Object} previous - Images for the previous button. + * @property {String} previous.REST + * @property {String} previous.GROUP + * @property {String} previous.HOVER + * @property {String} previous.DOWN + * + * @property {Object} next - Images for the next button. + * @property {String} next.REST + * @property {String} next.GROUP + * @property {String} next.HOVER + * @property {String} next.DOWN + * + */ + + + /** + * This function serves as a single point of instantiation for an {@link OpenSeadragon.Viewer}, including all + * combinations of out-of-the-box configurable features. + * + * @param {OpenSeadragon.Options} options - Viewer options. + * @returns {OpenSeadragon.Viewer} + */ +window.OpenSeadragon = window.OpenSeadragon || function( options ){ + + return new OpenSeadragon.Viewer( options ); + +}; + +if (typeof define === 'function' && define.amd) { + define(function () { + return (window.OpenSeadragon); + }); +} + + +(function( $ ){ + + + /** + * The OpenSeadragon version. + * + * @member {Object} OpenSeadragon.version + * @property {String} versionStr - The version number as a string ('major.minor.revision'). + * @property {Number} major - The major version number. + * @property {Number} minor - The minor version number. + * @property {Number} revision - The revision number. + * @since 1.0.0 + */ + $.version = { + versionStr: '2.2.1', + major: parseInt('2', 10), + minor: parseInt('2', 10), + revision: parseInt('1', 10) + }; + + + /** + * Taken from jquery 1.6.1 + * [[Class]] -> type pairs + * @private + */ + var class2type = { + '[object Boolean]': 'boolean', + '[object Number]': 'number', + '[object String]': 'string', + '[object Function]': 'function', + '[object Array]': 'array', + '[object Date]': 'date', + '[object RegExp]': 'regexp', + '[object Object]': 'object' + }, + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty; + + /** + * Taken from jQuery 1.6.1 + * @function isFunction + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.isFunction = function( obj ) { + return $.type(obj) === "function"; + }; + + + /** + * Taken from jQuery 1.6.1 + * @function isArray + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.isArray = Array.isArray || function( obj ) { + return $.type(obj) === "array"; + }; + + + /** + * A crude way of determining if an object is a window. + * Taken from jQuery 1.6.1 + * @function isWindow + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.isWindow = function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }; + + + /** + * Taken from jQuery 1.6.1 + * @function type + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.type = function( obj ) { + return ( obj === null ) || ( obj === undefined ) ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }; + + + /** + * Taken from jQuery 1.6.1 + * @function isPlainObject + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.isPlainObject = function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || OpenSeadragon.type(obj) !== "object" || obj.nodeType || $.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var lastKey; + for (var key in obj ) { + lastKey = key; + } + + return lastKey === undefined || hasOwn.call( obj, lastKey ); + }; + + + /** + * Taken from jQuery 1.6.1 + * @function isEmptyObject + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.isEmptyObject = function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }; + + /** + * Shim around Object.freeze. Does nothing if Object.freeze is not supported. + * @param {Object} obj The object to freeze. + * @return {Object} obj The frozen object. + */ + $.freezeObject = function(obj) { + if (Object.freeze) { + $.freezeObject = Object.freeze; + } else { + $.freezeObject = function(obj) { + return obj; + }; + } + return $.freezeObject(obj); + }; + + /** + * True if the browser supports the HTML5 canvas element + * @member {Boolean} supportsCanvas + * @memberof OpenSeadragon + */ + $.supportsCanvas = (function () { + var canvasElement = document.createElement( 'canvas' ); + return !!( $.isFunction( canvasElement.getContext ) && + canvasElement.getContext( '2d' ) ); + }()); + + /** + * Test whether the submitted canvas is tainted or not. + * @argument {Canvas} canvas The canvas to test. + * @returns {Boolean} True if the canvas is tainted. + */ + $.isCanvasTainted = function(canvas) { + var isTainted = false; + try { + // We test if the canvas is tainted by retrieving data from it. + // An exception will be raised if the canvas is tainted. + var data = canvas.getContext('2d').getImageData(0, 0, 1, 1); + } catch (e) { + isTainted = true; + } + return isTainted; + }; + + /** + * A ratio comparing the device screen's pixel density to the canvas's backing store pixel density. Defaults to 1 if canvas isn't supported by the browser. + * @member {Number} pixelDensityRatio + * @memberof OpenSeadragon + */ + $.pixelDensityRatio = (function () { + if ( $.supportsCanvas ) { + var context = document.createElement('canvas').getContext('2d'); + var devicePixelRatio = window.devicePixelRatio || 1; + var backingStoreRatio = context.webkitBackingStorePixelRatio || + context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || + context.oBackingStorePixelRatio || + context.backingStorePixelRatio || 1; + return devicePixelRatio / backingStoreRatio; + } else { + return 1; + } + }()); + +}( OpenSeadragon )); + +/** + * This closure defines all static methods available to the OpenSeadragon + * namespace. Many, if not most, are taked directly from jQuery for use + * to simplify and reduce common programming patterns. More static methods + * from jQuery may eventually make their way into this though we are + * attempting to avoid an explicit dependency on jQuery only because + * OpenSeadragon is a broadly useful code base and would be made less broad + * by requiring jQuery fully. + * + * Some static methods have also been refactored from the original OpenSeadragon + * project. + */ +(function( $ ){ + + /** + * Taken from jQuery 1.6.1 + * @function extend + * @memberof OpenSeadragon + * @see {@link http://www.jquery.com/ jQuery} + */ + $.extend = function() { + var options, + name, + src, + copy, + copyIsArray, + clone, + target = arguments[ 0 ] || {}, + length = arguments.length, + deep = false, + i = 1; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[ 1 ] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !OpenSeadragon.isFunction( target ) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + options = arguments[ i ]; + if ( options !== null || options !== undefined ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( OpenSeadragon.isPlainObject( copy ) || ( copyIsArray = OpenSeadragon.isArray( copy ) ) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && OpenSeadragon.isArray( src ) ? src : []; + + } else { + clone = src && OpenSeadragon.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = OpenSeadragon.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; + }; + + var isIOSDevice = function () { + if (typeof navigator !== 'object') { + return false; + } + var userAgent = navigator.userAgent; + if (typeof userAgent !== 'string') { + return false; + } + return userAgent.indexOf('iPhone') !== -1 || + userAgent.indexOf('iPad') !== -1 || + userAgent.indexOf('iPod') !== -1; + }; + + $.extend( $, /** @lends OpenSeadragon */{ + /** + * The default values for the optional settings documented at {@link OpenSeadragon.Options}. + * @static + * @type {Object} + */ + DEFAULT_SETTINGS: { + //DATA SOURCE DETAILS + xmlPath: null, + tileSources: null, + tileHost: null, + initialPage: 0, + crossOriginPolicy: false, + ajaxWithCredentials: false, + + //PAN AND ZOOM SETTINGS AND CONSTRAINTS + panHorizontal: true, + panVertical: true, + constrainDuringPan: false, + wrapHorizontal: false, + wrapVertical: false, + visibilityRatio: 0.5, //-> how much of the viewer can be negative space + minPixelRatio: 0.5, //->closer to 0 draws tiles meant for a higher zoom at this zoom + defaultZoomLevel: 0, + minZoomLevel: null, + maxZoomLevel: null, + homeFillsViewer: false, + + //UI RESPONSIVENESS AND FEEL + clickTimeThreshold: 300, + clickDistThreshold: 5, + dblClickTimeThreshold: 300, + dblClickDistThreshold: 20, + springStiffness: 6.5, + animationTime: 1.2, + gestureSettingsMouse: { scrollToZoom: true, clickToZoom: true, dblClickToZoom: false, pinchToZoom: false, flickEnabled: false, flickMinSpeed: 120, flickMomentum: 0.25, pinchRotate: false }, + gestureSettingsTouch: { scrollToZoom: false, clickToZoom: false, dblClickToZoom: true, pinchToZoom: true, flickEnabled: true, flickMinSpeed: 120, flickMomentum: 0.25, pinchRotate: false }, + gestureSettingsPen: { scrollToZoom: false, clickToZoom: true, dblClickToZoom: false, pinchToZoom: false, flickEnabled: false, flickMinSpeed: 120, flickMomentum: 0.25, pinchRotate: false }, + gestureSettingsUnknown: { scrollToZoom: false, clickToZoom: false, dblClickToZoom: true, pinchToZoom: true, flickEnabled: true, flickMinSpeed: 120, flickMomentum: 0.25, pinchRotate: false }, + zoomPerClick: 2, + zoomPerScroll: 1.2, + zoomPerSecond: 1.0, + blendTime: 0, + alwaysBlend: false, + autoHideControls: true, + immediateRender: false, + minZoomImageRatio: 0.9, //-> closer to 0 allows zoom out to infinity + maxZoomPixelRatio: 1.1, //-> higher allows 'over zoom' into pixels + smoothTileEdgesMinZoom: 1.1, //-> higher than maxZoomPixelRatio disables it + iOSDevice: isIOSDevice(), + pixelsPerWheelLine: 40, + autoResize: true, + preserveImageSizeOnResize: false, // requires autoResize=true + minScrollDeltaTime: 50, + + //DEFAULT CONTROL SETTINGS + showSequenceControl: true, //SEQUENCE + sequenceControlAnchor: null, //SEQUENCE + preserveViewport: false, //SEQUENCE + preserveOverlays: false, //SEQUENCE + navPrevNextWrap: false, //SEQUENCE + showNavigationControl: true, //ZOOM/HOME/FULL/ROTATION + navigationControlAnchor: null, //ZOOM/HOME/FULL/ROTATION + showZoomControl: true, //ZOOM + showHomeControl: true, //HOME + showFullPageControl: true, //FULL + showRotationControl: false, //ROTATION + controlsFadeDelay: 2000, //ZOOM/HOME/FULL/SEQUENCE + controlsFadeLength: 1500, //ZOOM/HOME/FULL/SEQUENCE + mouseNavEnabled: true, //GENERAL MOUSE INTERACTIVITY + + //VIEWPORT NAVIGATOR SETTINGS + showNavigator: false, + navigatorId: null, + navigatorPosition: null, + navigatorSizeRatio: 0.2, + navigatorMaintainSizeRatio: false, + navigatorTop: null, + navigatorLeft: null, + navigatorHeight: null, + navigatorWidth: null, + navigatorAutoResize: true, + navigatorAutoFade: true, + navigatorRotate: true, + + // INITIAL ROTATION + degrees: 0, + + // APPEARANCE + opacity: 1, + compositeOperation: null, + placeholderFillStyle: null, + + //REFERENCE STRIP SETTINGS + showReferenceStrip: false, + referenceStripScroll: 'horizontal', + referenceStripElement: null, + referenceStripHeight: null, + referenceStripWidth: null, + referenceStripPosition: 'BOTTOM_LEFT', + referenceStripSizeRatio: 0.2, + + //COLLECTION VISUALIZATION SETTINGS + collectionRows: 3, //or columns depending on layout + collectionColumns: 0, //columns in horizontal layout, rows in vertical layout + collectionLayout: 'horizontal', //vertical + collectionMode: false, + collectionTileSize: 800, + collectionTileMargin: 80, + + //PERFORMANCE SETTINGS + imageLoaderLimit: 0, + maxImageCacheCount: 200, + timeout: 30000, + useCanvas: true, // Use canvas element for drawing if available + + //INTERFACE RESOURCE SETTINGS + prefixUrl: "/images/", + navImages: { + zoomIn: { + REST: 'zoomin_rest.png', + GROUP: 'zoomin_grouphover.png', + HOVER: 'zoomin_hover.png', + DOWN: 'zoomin_pressed.png' + }, + zoomOut: { + REST: 'zoomout_rest.png', + GROUP: 'zoomout_grouphover.png', + HOVER: 'zoomout_hover.png', + DOWN: 'zoomout_pressed.png' + }, + home: { + REST: 'home_rest.png', + GROUP: 'home_grouphover.png', + HOVER: 'home_hover.png', + DOWN: 'home_pressed.png' + }, + fullpage: { + REST: 'fullpage_rest.png', + GROUP: 'fullpage_grouphover.png', + HOVER: 'fullpage_hover.png', + DOWN: 'fullpage_pressed.png' + }, + rotateleft: { + REST: 'rotateleft_rest.png', + GROUP: 'rotateleft_grouphover.png', + HOVER: 'rotateleft_hover.png', + DOWN: 'rotateleft_pressed.png' + }, + rotateright: { + REST: 'rotateright_rest.png', + GROUP: 'rotateright_grouphover.png', + HOVER: 'rotateright_hover.png', + DOWN: 'rotateright_pressed.png' + }, + previous: { + REST: 'previous_rest.png', + GROUP: 'previous_grouphover.png', + HOVER: 'previous_hover.png', + DOWN: 'previous_pressed.png' + }, + next: { + REST: 'next_rest.png', + GROUP: 'next_grouphover.png', + HOVER: 'next_hover.png', + DOWN: 'next_pressed.png' + } + }, + + //DEVELOPER SETTINGS + debugMode: false, + debugGridColor: '#437AB2' + }, + + + /** + * TODO: get rid of this. I can't see how it's required at all. Looks + * like an early legacy code artifact. + * @static + * @ignore + */ + SIGNAL: "----seadragon----", + + + /** + * Returns a function which invokes the method as if it were a method belonging to the object. + * @function + * @param {Object} object + * @param {Function} method + * @returns {Function} + */ + delegate: function( object, method ) { + return function(){ + var args = arguments; + if ( args === undefined ){ + args = []; + } + return method.apply( object, args ); + }; + }, + + + /** + * An enumeration of Browser vendors. + * @static + * @type {Object} + * @property {Number} UNKNOWN + * @property {Number} IE + * @property {Number} FIREFOX + * @property {Number} SAFARI + * @property {Number} CHROME + * @property {Number} OPERA + */ + BROWSERS: { + UNKNOWN: 0, + IE: 1, + FIREFOX: 2, + SAFARI: 3, + CHROME: 4, + OPERA: 5 + }, + + + /** + * Returns a DOM Element for the given id or element. + * @function + * @param {String|Element} element Accepts an id or element. + * @returns {Element} The element with the given id, null, or the element itself. + */ + getElement: function( element ) { + if ( typeof ( element ) == "string" ) { + element = document.getElementById( element ); + } + return element; + }, + + + /** + * Determines the position of the upper-left corner of the element. + * @function + * @param {Element|String} element - the elemenet we want the position for. + * @returns {OpenSeadragon.Point} - the position of the upper left corner of the element. + */ + getElementPosition: function( element ) { + var result = new $.Point(), + isFixed, + offsetParent; + + element = $.getElement( element ); + isFixed = $.getElementStyle( element ).position == "fixed"; + offsetParent = getOffsetParent( element, isFixed ); + + while ( offsetParent ) { + + result.x += element.offsetLeft; + result.y += element.offsetTop; + + if ( isFixed ) { + result = result.plus( $.getPageScroll() ); + } + + element = offsetParent; + isFixed = $.getElementStyle( element ).position == "fixed"; + offsetParent = getOffsetParent( element, isFixed ); + } + + return result; + }, + + + /** + * Determines the position of the upper-left corner of the element adjusted for current page and/or element scroll. + * @function + * @param {Element|String} element - the element we want the position for. + * @returns {OpenSeadragon.Point} - the position of the upper left corner of the element adjusted for current page and/or element scroll. + */ + getElementOffset: function( element ) { + element = $.getElement( element ); + + var doc = element && element.ownerDocument, + docElement, + win, + boundingRect = { top: 0, left: 0 }; + + if ( !doc ) { + return new $.Point(); + } + + docElement = doc.documentElement; + + if ( typeof element.getBoundingClientRect !== typeof undefined ) { + boundingRect = element.getBoundingClientRect(); + } + + win = ( doc == doc.window ) ? + doc : + ( doc.nodeType === 9 ) ? + doc.defaultView || doc.parentWindow : + false; + + return new $.Point( + boundingRect.left + ( win.pageXOffset || docElement.scrollLeft ) - ( docElement.clientLeft || 0 ), + boundingRect.top + ( win.pageYOffset || docElement.scrollTop ) - ( docElement.clientTop || 0 ) + ); + }, + + + /** + * Determines the height and width of the given element. + * @function + * @param {Element|String} element + * @returns {OpenSeadragon.Point} + */ + getElementSize: function( element ) { + element = $.getElement( element ); + + return new $.Point( + element.clientWidth, + element.clientHeight + ); + }, + + + /** + * Returns the CSSStyle object for the given element. + * @function + * @param {Element|String} element + * @returns {CSSStyle} + */ + getElementStyle: + document.documentElement.currentStyle ? + function( element ) { + element = $.getElement( element ); + return element.currentStyle; + } : + function( element ) { + element = $.getElement( element ); + return window.getComputedStyle( element, "" ); + }, + + /** + * Returns the property with the correct vendor prefix appended. + * @param {String} property the property name + * @returns {String} the property with the correct prefix or null if not + * supported. + */ + getCssPropertyWithVendorPrefix: function(property) { + var memo = {}; + + $.getCssPropertyWithVendorPrefix = function(property) { + if (memo[property] !== undefined) { + return memo[property]; + } + var style = document.createElement('div').style; + var result = null; + if (style[property] !== undefined) { + result = property; + } else { + var prefixes = ['Webkit', 'Moz', 'MS', 'O', + 'webkit', 'moz', 'ms', 'o']; + var suffix = $.capitalizeFirstLetter(property); + for (var i = 0; i < prefixes.length; i++) { + var prop = prefixes[i] + suffix; + if (style[prop] !== undefined) { + result = prop; + break; + } + } + } + memo[property] = result; + return result; + }; + return $.getCssPropertyWithVendorPrefix(property); + }, + + /** + * Capitalizes the first letter of a string + * @param {String} string + * @returns {String} The string with the first letter capitalized + */ + capitalizeFirstLetter: function(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + }, + + /** + * Determines if a point is within the bounding rectangle of the given element (hit-test). + * @function + * @param {Element|String} element + * @param {OpenSeadragon.Point} point + * @returns {Boolean} + */ + pointInElement: function( element, point ) { + element = $.getElement( element ); + var offset = $.getElementOffset( element ), + size = $.getElementSize( element ); + return point.x >= offset.x && point.x < offset.x + size.x && point.y < offset.y + size.y && point.y >= offset.y; + }, + + + /** + * Gets the latest event, really only useful internally since its + * specific to IE behavior. + * @function + * @param {Event} [event] + * @returns {Event} + * @deprecated For internal use only + * @private + */ + getEvent: function( event ) { + if( event ){ + $.getEvent = function( event ) { + return event; + }; + } else { + $.getEvent = function() { + return window.event; + }; + } + return $.getEvent( event ); + }, + + + /** + * Gets the position of the mouse on the screen for a given event. + * @function + * @param {Event} [event] + * @returns {OpenSeadragon.Point} + */ + getMousePosition: function( event ) { + + if ( typeof( event.pageX ) == "number" ) { + $.getMousePosition = function( event ){ + var result = new $.Point(); + + event = $.getEvent( event ); + result.x = event.pageX; + result.y = event.pageY; + + return result; + }; + } else if ( typeof( event.clientX ) == "number" ) { + $.getMousePosition = function( event ){ + var result = new $.Point(); + + event = $.getEvent( event ); + result.x = + event.clientX + + document.body.scrollLeft + + document.documentElement.scrollLeft; + result.y = + event.clientY + + document.body.scrollTop + + document.documentElement.scrollTop; + + return result; + }; + } else { + throw new Error( + "Unknown event mouse position, no known technique." + ); + } + + return $.getMousePosition( event ); + }, + + + /** + * Determines the page's current scroll position. + * @function + * @returns {OpenSeadragon.Point} + */ + getPageScroll: function() { + var docElement = document.documentElement || {}, + body = document.body || {}; + + if ( typeof( window.pageXOffset ) == "number" ) { + $.getPageScroll = function(){ + return new $.Point( + window.pageXOffset, + window.pageYOffset + ); + }; + } else if ( body.scrollLeft || body.scrollTop ) { + $.getPageScroll = function(){ + return new $.Point( + document.body.scrollLeft, + document.body.scrollTop + ); + }; + } else if ( docElement.scrollLeft || docElement.scrollTop ) { + $.getPageScroll = function(){ + return new $.Point( + document.documentElement.scrollLeft, + document.documentElement.scrollTop + ); + }; + } else { + // We can't reassign the function yet, as there was no scroll. + return new $.Point(0,0); + } + + return $.getPageScroll(); + }, + + /** + * Set the page scroll position. + * @function + * @returns {OpenSeadragon.Point} + */ + setPageScroll: function( scroll ) { + if ( typeof ( window.scrollTo ) !== "undefined" ) { + $.setPageScroll = function( scroll ) { + window.scrollTo( scroll.x, scroll.y ); + }; + } else { + var originalScroll = $.getPageScroll(); + if ( originalScroll.x === scroll.x && + originalScroll.y === scroll.y ) { + // We are already correctly positioned and there + // is no way to detect the correct method. + return; + } + + document.body.scrollLeft = scroll.x; + document.body.scrollTop = scroll.y; + var currentScroll = $.getPageScroll(); + if ( currentScroll.x !== originalScroll.x && + currentScroll.y !== originalScroll.y ) { + $.setPageScroll = function( scroll ) { + document.body.scrollLeft = scroll.x; + document.body.scrollTop = scroll.y; + }; + return; + } + + document.documentElement.scrollLeft = scroll.x; + document.documentElement.scrollTop = scroll.y; + currentScroll = $.getPageScroll(); + if ( currentScroll.x !== originalScroll.x && + currentScroll.y !== originalScroll.y ) { + $.setPageScroll = function( scroll ) { + document.documentElement.scrollLeft = scroll.x; + document.documentElement.scrollTop = scroll.y; + }; + return; + } + + // We can't find anything working, so we do nothing. + $.setPageScroll = function( scroll ) { + }; + } + + return $.setPageScroll( scroll ); + }, + + /** + * Determines the size of the browsers window. + * @function + * @returns {OpenSeadragon.Point} + */ + getWindowSize: function() { + var docElement = document.documentElement || {}, + body = document.body || {}; + + if ( typeof( window.innerWidth ) == 'number' ) { + $.getWindowSize = function(){ + return new $.Point( + window.innerWidth, + window.innerHeight + ); + }; + } else if ( docElement.clientWidth || docElement.clientHeight ) { + $.getWindowSize = function(){ + return new $.Point( + document.documentElement.clientWidth, + document.documentElement.clientHeight + ); + }; + } else if ( body.clientWidth || body.clientHeight ) { + $.getWindowSize = function(){ + return new $.Point( + document.body.clientWidth, + document.body.clientHeight + ); + }; + } else { + throw new Error("Unknown window size, no known technique."); + } + + return $.getWindowSize(); + }, + + + /** + * Wraps the given element in a nest of divs so that the element can + * be easily centered using CSS tables + * @function + * @param {Element|String} element + * @returns {Element} outermost wrapper element + */ + makeCenteredNode: function( element ) { + // Convert a possible ID to an actual HTMLElement + element = $.getElement( element ); + + /* + CSS tables require you to have a display:table/row/cell hierarchy so we need to create + three nested wrapper divs: + */ + + var wrappers = [ + $.makeNeutralElement( 'div' ), + $.makeNeutralElement( 'div' ), + $.makeNeutralElement( 'div' ) + ]; + + // It feels like we should be able to pass style dicts to makeNeutralElement: + $.extend(wrappers[0].style, { + display: "table", + height: "100%", + width: "100%" + }); + + $.extend(wrappers[1].style, { + display: "table-row" + }); + + $.extend(wrappers[2].style, { + display: "table-cell", + verticalAlign: "middle", + textAlign: "center" + }); + + wrappers[0].appendChild(wrappers[1]); + wrappers[1].appendChild(wrappers[2]); + wrappers[2].appendChild(element); + + return wrappers[0]; + }, + + + /** + * Creates an easily positionable element of the given type that therefor + * serves as an excellent container element. + * @function + * @param {String} tagName + * @returns {Element} + */ + makeNeutralElement: function( tagName ) { + var element = document.createElement( tagName ), + style = element.style; + + style.background = "transparent none"; + style.border = "none"; + style.margin = "0px"; + style.padding = "0px"; + style.position = "static"; + + return element; + }, + + + /** + * Returns the current milliseconds, using Date.now() if available + * @function + */ + now: function( ) { + if (Date.now) { + $.now = Date.now; + } else { + $.now = function() { return new Date().getTime(); }; + } + + return $.now(); + }, + + + /** + * Ensures an image is loaded correctly to support alpha transparency. + * Generally only IE has issues doing this correctly for formats like + * png. + * @function + * @param {String} src + * @returns {Element} + */ + makeTransparentImage: function( src ) { + + $.makeTransparentImage = function( src ){ + var img = $.makeNeutralElement( "img" ); + + img.src = src; + + return img; + }; + + if ( $.Browser.vendor == $.BROWSERS.IE && $.Browser.version < 7 ) { + + $.makeTransparentImage = function( src ){ + var img = $.makeNeutralElement( "img" ), + element = null; + + element = $.makeNeutralElement("span"); + element.style.display = "inline-block"; + + img.onload = function() { + element.style.width = element.style.width || img.width + "px"; + element.style.height = element.style.height || img.height + "px"; + + img.onload = null; + img = null; // to prevent memory leaks in IE + }; + + img.src = src; + element.style.filter = + "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + + src + + "', sizingMethod='scale')"; + + return element; + }; + + } + + return $.makeTransparentImage( src ); + }, + + + /** + * Sets the opacity of the specified element. + * @function + * @param {Element|String} element + * @param {Number} opacity + * @param {Boolean} [usesAlpha] + */ + setElementOpacity: function( element, opacity, usesAlpha ) { + + var ieOpacity, + ieFilter; + + element = $.getElement( element ); + + if ( usesAlpha && !$.Browser.alpha ) { + opacity = Math.round( opacity ); + } + + if ( $.Browser.opacity ) { + element.style.opacity = opacity < 1 ? opacity : ""; + } else { + if ( opacity < 1 ) { + ieOpacity = Math.round( 100 * opacity ); + ieFilter = "alpha(opacity=" + ieOpacity + ")"; + element.style.filter = ieFilter; + } else { + element.style.filter = ""; + } + } + }, + + + /** + * Sets the specified element's touch-action style attribute to 'none'. + * @function + * @param {Element|String} element + */ + setElementTouchActionNone: function( element ) { + element = $.getElement( element ); + if ( typeof element.style.touchAction !== 'undefined' ) { + element.style.touchAction = 'none'; + } else if ( typeof element.style.msTouchAction !== 'undefined' ) { + element.style.msTouchAction = 'none'; + } + }, + + + /** + * Add the specified CSS class to the element if not present. + * @function + * @param {Element|String} element + * @param {String} className + */ + addClass: function( element, className ) { + element = $.getElement( element ); + + if ( ! element.className ) { + element.className = className; + } else if ( ( ' ' + element.className + ' ' ). + indexOf( ' ' + className + ' ' ) === -1 ) { + element.className += ' ' + className; + } + }, + + /** + * Find the first index at which an element is found in an array or -1 + * if not present. + * + * Code taken and adapted from + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility + * + * @function + * @param {Array} array The array from which to find the element + * @param {Object} searchElement The element to find + * @param {Number} [fromIndex=0] Index to start research. + * @returns {Number} The index of the element in the array. + */ + indexOf: function( array, searchElement, fromIndex ) { + if ( Array.prototype.indexOf ) { + this.indexOf = function( array, searchElement, fromIndex ) { + return array.indexOf( searchElement, fromIndex ); + }; + } else { + this.indexOf = function( array, searchElement, fromIndex ) { + var i, + pivot = ( fromIndex ) ? fromIndex : 0, + length; + if ( !array ) { + throw new TypeError( ); + } + + length = array.length; + if ( length === 0 || pivot >= length ) { + return -1; + } + + if ( pivot < 0 ) { + pivot = length - Math.abs( pivot ); + } + + for ( i = pivot; i < length; i++ ) { + if ( array[i] === searchElement ) { + return i; + } + } + return -1; + }; + } + return this.indexOf( array, searchElement, fromIndex ); + }, + + /** + * Remove the specified CSS class from the element. + * @function + * @param {Element|String} element + * @param {String} className + */ + removeClass: function( element, className ) { + var oldClasses, + newClasses = [], + i; + + element = $.getElement( element ); + oldClasses = element.className.split( /\s+/ ); + for ( i = 0; i < oldClasses.length; i++ ) { + if ( oldClasses[ i ] && oldClasses[ i ] !== className ) { + newClasses.push( oldClasses[ i ] ); + } + } + element.className = newClasses.join(' '); + }, + + + /** + * Adds an event listener for the given element, eventName and handler. + * @function + * @param {Element|String} element + * @param {String} eventName + * @param {Function} handler + * @param {Boolean} [useCapture] + */ + addEvent: (function () { + if ( window.addEventListener ) { + return function ( element, eventName, handler, useCapture ) { + element = $.getElement( element ); + element.addEventListener( eventName, handler, useCapture ); + }; + } else if ( window.attachEvent ) { + return function ( element, eventName, handler, useCapture ) { + element = $.getElement( element ); + element.attachEvent( 'on' + eventName, handler ); + }; + } else { + throw new Error( "No known event model." ); + } + }()), + + + /** + * Remove a given event listener for the given element, event type and + * handler. + * @function + * @param {Element|String} element + * @param {String} eventName + * @param {Function} handler + * @param {Boolean} [useCapture] + */ + removeEvent: (function () { + if ( window.removeEventListener ) { + return function ( element, eventName, handler, useCapture ) { + element = $.getElement( element ); + element.removeEventListener( eventName, handler, useCapture ); + }; + } else if ( window.detachEvent ) { + return function( element, eventName, handler, useCapture ) { + element = $.getElement( element ); + element.detachEvent( 'on' + eventName, handler ); + }; + } else { + throw new Error( "No known event model." ); + } + }()), + + + /** + * Cancels the default browser behavior had the event propagated all + * the way up the DOM to the window object. + * @function + * @param {Event} [event] + */ + cancelEvent: function( event ) { + event = $.getEvent( event ); + + if ( event.preventDefault ) { + $.cancelEvent = function( event ){ + // W3C for preventing default + event.preventDefault(); + }; + } else { + $.cancelEvent = function( event ){ + event = $.getEvent( event ); + // legacy for preventing default + event.cancel = true; + // IE for preventing default + event.returnValue = false; + }; + } + $.cancelEvent( event ); + }, + + + /** + * Stops the propagation of the event up the DOM. + * @function + * @param {Event} [event] + */ + stopEvent: function( event ) { + event = $.getEvent( event ); + + if ( event.stopPropagation ) { + // W3C for stopping propagation + $.stopEvent = function( event ){ + event.stopPropagation(); + }; + } else { + // IE for stopping propagation + $.stopEvent = function( event ){ + event = $.getEvent( event ); + event.cancelBubble = true; + }; + + } + + $.stopEvent( event ); + }, + + + /** + * Similar to OpenSeadragon.delegate, but it does not immediately call + * the method on the object, returning a function which can be called + * repeatedly to delegate the method. It also allows additonal arguments + * to be passed during construction which will be added during each + * invocation, and each invocation can add additional arguments as well. + * + * @function + * @param {Object} object + * @param {Function} method + * @param [args] any additional arguments are passed as arguments to the + * created callback + * @returns {Function} + */ + createCallback: function( object, method ) { + //TODO: This pattern is painful to use and debug. It's much cleaner + // to use pinning plus anonymous functions. Get rid of this + // pattern! + var initialArgs = [], + i; + for ( i = 2; i < arguments.length; i++ ) { + initialArgs.push( arguments[ i ] ); + } + + return function() { + var args = initialArgs.concat( [] ), + i; + for ( i = 0; i < arguments.length; i++ ) { + args.push( arguments[ i ] ); + } + + return method.apply( object, args ); + }; + }, + + + /** + * Retreives the value of a url parameter from the window.location string. + * @function + * @param {String} key + * @returns {String} The value of the url parameter or null if no param matches. + */ + getUrlParameter: function( key ) { + var value = URLPARAMS[ key ]; + return value ? value : null; + }, + + /** + * Retrieves the protocol used by the url. The url can either be absolute + * or relative. + * @function + * @private + * @param {String} url The url to retrieve the protocol from. + * @return {String} The protocol (http:, https:, file:, ftp: ...) + */ + getUrlProtocol: function( url ) { + var match = url.match(/^([a-z]+:)\/\//i); + if ( match === null ) { + // Relative URL, retrive the protocol from window.location + return window.location.protocol; + } + return match[1].toLowerCase(); + }, + + /** + * Create an XHR object + * @private + * @param {type} [local] If set to true, the XHR will be file: protocol + * compatible if possible (but may raise a warning in the browser). + * @returns {XMLHttpRequest} + */ + createAjaxRequest: function( local ) { + // IE11 does not support window.ActiveXObject so we just try to + // create one to see if it is supported. + // See: http://msdn.microsoft.com/en-us/library/ie/dn423948%28v=vs.85%29.aspx + var supportActiveX; + try { + /* global ActiveXObject:true */ + supportActiveX = !!new ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) { + supportActiveX = false; + } + + if ( supportActiveX ) { + if ( window.XMLHttpRequest ) { + $.createAjaxRequest = function( local ) { + if ( local ) { + return new ActiveXObject( "Microsoft.XMLHTTP" ); + } + return new XMLHttpRequest(); + }; + } else { + $.createAjaxRequest = function() { + return new ActiveXObject( "Microsoft.XMLHTTP" ); + }; + } + } else if ( window.XMLHttpRequest ) { + $.createAjaxRequest = function() { + return new XMLHttpRequest(); + }; + } else { + throw new Error( "Browser doesn't support XMLHttpRequest." ); + } + return $.createAjaxRequest( local ); + }, + + /** + * Makes an AJAX request. + * @param {Object} options + * @param {String} options.url - the url to request + * @param {Function} options.success - a function to call on a successful response + * @param {Function} options.error - a function to call on when an error occurs + * @param {Boolean} [options.withCredentials=false] - whether to set the XHR's withCredentials + * @throws {Error} + */ + makeAjaxRequest: function( url, onSuccess, onError ) { + var withCredentials; + + // Note that our preferred API is that you pass in a single object; the named + // arguments are for legacy support. + if( $.isPlainObject( url ) ){ + onSuccess = url.success; + onError = url.error; + withCredentials = url.withCredentials; + url = url.url; + } + + var protocol = $.getUrlProtocol( url ); + var request = $.createAjaxRequest( protocol === "file:" ); + + if ( !$.isFunction( onSuccess ) ) { + throw new Error( "makeAjaxRequest requires a success callback" ); + } + + request.onreadystatechange = function() { + // 4 = DONE (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties) + if ( request.readyState == 4 ) { + request.onreadystatechange = function(){}; + + // With protocols other than http/https, the status is 200 + // on Firefox and 0 on other browsers + if ( request.status === 200 || + ( request.status === 0 && + protocol !== "http:" && + protocol !== "https:" )) { + onSuccess( request ); + } else { + $.console.log( "AJAX request returned %d: %s", request.status, url ); + + if ( $.isFunction( onError ) ) { + onError( request ); + } + } + } + }; + + if (withCredentials) { + request.withCredentials = true; + } + + try { + request.open( "GET", url, true ); + request.send( null ); + } catch (e) { + var msg = e.message; + + /* + IE < 10 does not support CORS and an XHR request to a different origin will fail as soon + as send() is called. This is particularly easy to miss during development and appear in + production if you use a CDN or domain sharding and the security policy is likely to break + exception handlers since any attempt to access a property of the request object will + raise an access denied TypeError inside the catch block. + + To be friendlier, we'll check for this specific error and add a documentation pointer + to point developers in the right direction. We test the exception number because IE's + error messages are localized. + */ + var oldIE = $.Browser.vendor == $.BROWSERS.IE && $.Browser.version < 10; + if ( oldIE && typeof( e.number ) != "undefined" && e.number == -2147024891 ) { + msg += "\nSee http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx#xdomain"; + } + + $.console.log( "%s while making AJAX request: %s", e.name, msg ); + + request.onreadystatechange = function(){}; + + if (window.XDomainRequest) { // IE9 or IE8 might as well try to use XDomainRequest + var xdr = new XDomainRequest(); + if (xdr) { + xdr.onload = function (e) { + if ( $.isFunction( onSuccess ) ) { + onSuccess({ // Faking an xhr object + responseText: xdr.responseText, + status: 200, // XDomainRequest doesn't support status codes, so we just fake one! :/ + statusText: 'OK' + }); + } + }; + xdr.onerror = function (e) { + if ( $.isFunction ( onError ) ) { + onError({ // Faking an xhr object + responseText: xdr.responseText, + status: 444, // 444 No Response + statusText: 'An error happened. Due to an XDomainRequest deficiency we can not extract any information about this error. Upgrade your browser.' + }); + } + }; + try { + xdr.open('GET', url); + xdr.send(); + } catch (e2) { + if ( $.isFunction( onError ) ) { + onError( request, e ); + } + } + } + } else { + if ( $.isFunction( onError ) ) { + onError( request, e ); + } + } + } + }, + + /** + * Taken from jQuery 1.6.1 + * @function + * @param {Object} options + * @param {String} options.url + * @param {Function} options.callback + * @param {String} [options.param='callback'] The name of the url parameter + * to request the jsonp provider with. + * @param {String} [options.callbackName=] The name of the callback to + * request the jsonp provider with. + */ + jsonp: function( options ){ + var script, + url = options.url, + head = document.head || + document.getElementsByTagName( "head" )[ 0 ] || + document.documentElement, + jsonpCallback = options.callbackName || 'openseadragon' + $.now(), + previous = window[ jsonpCallback ], + replace = "$1" + jsonpCallback + "$2", + callbackParam = options.param || 'callback', + callback = options.callback; + + url = url.replace( /(\=)\?(&|$)|\?\?/i, replace ); + // Add callback manually + url += (/\?/.test( url ) ? "&" : "?") + callbackParam + "=" + jsonpCallback; + + // Install callback + window[ jsonpCallback ] = function( response ) { + if ( !previous ){ + try{ + delete window[ jsonpCallback ]; + }catch(e){ + //swallow + } + } else { + window[ jsonpCallback ] = previous; + } + if( callback && $.isFunction( callback ) ){ + callback( response ); + } + }; + + script = document.createElement( "script" ); + + //TODO: having an issue with async info requests + if( undefined !== options.async || false !== options.async ){ + script.async = "async"; + } + + if ( options.scriptCharset ) { + script.charset = options.scriptCharset; + } + + script.src = url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + } + }; + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + head.insertBefore( script, head.firstChild ); + + }, + + + /** + * Fully deprecated. Will throw an error. + * @function + * @deprecated use {@link OpenSeadragon.Viewer#open} + */ + createFromDZI: function() { + throw "OpenSeadragon.createFromDZI is deprecated, use Viewer.open."; + }, + + /** + * Parses an XML string into a DOM Document. + * @function + * @param {String} string + * @returns {Document} + */ + parseXml: function( string ) { + if ( window.DOMParser ) { + + $.parseXml = function( string ) { + var xmlDoc = null, + parser; + + parser = new DOMParser(); + xmlDoc = parser.parseFromString( string, "text/xml" ); + return xmlDoc; + }; + + } else if ( window.ActiveXObject ) { + + $.parseXml = function( string ) { + var xmlDoc = null; + + xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" ); + xmlDoc.async = false; + xmlDoc.loadXML( string ); + return xmlDoc; + }; + + } else { + throw new Error( "Browser doesn't support XML DOM." ); + } + + return $.parseXml( string ); + }, + + /** + * Parses a JSON string into a Javascript object. + * @function + * @param {String} string + * @returns {Object} + */ + parseJSON: function(string) { + if (window.JSON && window.JSON.parse) { + $.parseJSON = window.JSON.parse; + } else { + // Should only be used by IE8 in non standards mode + $.parseJSON = function(string) { + /*jshint evil:true*/ + return eval('(' + string + ')'); + }; + } + return $.parseJSON(string); + }, + + /** + * Reports whether the image format is supported for tiling in this + * version. + * @function + * @param {String} [extension] + * @returns {Boolean} + */ + imageFormatSupported: function( extension ) { + extension = extension ? extension : ""; + return !!FILEFORMATS[ extension.toLowerCase() ]; + } + + }); + + + /** + * The current browser vendor, version, and related information regarding detected features. + * @member {Object} Browser + * @memberof OpenSeadragon + * @static + * @type {Object} + * @property {OpenSeadragon.BROWSERS} vendor - One of the {@link OpenSeadragon.BROWSERS} enumeration values. + * @property {Number} version + * @property {Boolean} alpha - Does the browser support image alpha transparency. + */ + $.Browser = { + vendor: $.BROWSERS.UNKNOWN, + version: 0, + alpha: true + }; + + + var FILEFORMATS = { + "bmp": false, + "jpeg": true, + "jpg": true, + "png": true, + "tif": false, + "wdp": false + }, + URLPARAMS = {}; + + (function() { + //A small auto-executing routine to determine the browser vendor, + //version and supporting feature sets. + var app = navigator.appName, + ver = navigator.appVersion, + ua = navigator.userAgent, + regex; + + //console.error( 'appName: ' + navigator.appName ); + //console.error( 'appVersion: ' + navigator.appVersion ); + //console.error( 'userAgent: ' + navigator.userAgent ); + + switch( navigator.appName ){ + case "Microsoft Internet Explorer": + if( !!window.attachEvent && + !!window.ActiveXObject ) { + + $.Browser.vendor = $.BROWSERS.IE; + $.Browser.version = parseFloat( + ua.substring( + ua.indexOf( "MSIE" ) + 5, + ua.indexOf( ";", ua.indexOf( "MSIE" ) ) ) + ); + } + break; + case "Netscape": + if( !!window.addEventListener ){ + if ( ua.indexOf( "Firefox" ) >= 0 ) { + $.Browser.vendor = $.BROWSERS.FIREFOX; + $.Browser.version = parseFloat( + ua.substring( ua.indexOf( "Firefox" ) + 8 ) + ); + } else if ( ua.indexOf( "Safari" ) >= 0 ) { + $.Browser.vendor = ua.indexOf( "Chrome" ) >= 0 ? + $.BROWSERS.CHROME : + $.BROWSERS.SAFARI; + $.Browser.version = parseFloat( + ua.substring( + ua.substring( 0, ua.indexOf( "Safari" ) ).lastIndexOf( "/" ) + 1, + ua.indexOf( "Safari" ) + ) + ); + } else { + regex = new RegExp( "Trident/.*rv:([0-9]{1,}[.0-9]{0,})"); + if ( regex.exec( ua ) !== null ) { + $.Browser.vendor = $.BROWSERS.IE; + $.Browser.version = parseFloat( RegExp.$1 ); + } + } + } + break; + case "Opera": + $.Browser.vendor = $.BROWSERS.OPERA; + $.Browser.version = parseFloat( ver ); + break; + } + + // ignore '?' portion of query string + var query = window.location.search.substring( 1 ), + parts = query.split('&'), + part, + sep, + i; + + for ( i = 0; i < parts.length; i++ ) { + part = parts[ i ]; + sep = part.indexOf( '=' ); + + if ( sep > 0 ) { + URLPARAMS[ part.substring( 0, sep ) ] = + decodeURIComponent( part.substring( sep + 1 ) ); + } + } + + //determine if this browser supports image alpha transparency + $.Browser.alpha = !( + ( + $.Browser.vendor == $.BROWSERS.IE && + $.Browser.version < 9 + ) || ( + $.Browser.vendor == $.BROWSERS.CHROME && + $.Browser.version < 2 + ) + ); + + //determine if this browser supports element.style.opacity + $.Browser.opacity = !( + $.Browser.vendor == $.BROWSERS.IE && + $.Browser.version < 9 + ); + + })(); + + + //TODO: $.console is often used inside a try/catch block which generally + // prevents allowings errors to occur with detection until a debugger + // is attached. Although I've been guilty of the same anti-pattern + // I eventually was convinced that errors should naturally propogate in + // all but the most special cases. + /** + * A convenient alias for console when available, and a simple null + * function when console is unavailable. + * @static + * @private + */ + var nullfunction = function( msg ){ + //document.location.hash = msg; + }; + + $.console = window.console || { + log: nullfunction, + debug: nullfunction, + info: nullfunction, + warn: nullfunction, + error: nullfunction, + assert: nullfunction + }; + + + // Adding support for HTML5's requestAnimationFrame as suggested by acdha. + // Implementation taken from matt synder's post here: + // http://mattsnider.com/cross-browser-and-legacy-supported-requestframeanimation/ + (function( w ) { + + // most browsers have an implementation + var requestAnimationFrame = w.requestAnimationFrame || + w.mozRequestAnimationFrame || + w.webkitRequestAnimationFrame || + w.msRequestAnimationFrame; + + var cancelAnimationFrame = w.cancelAnimationFrame || + w.mozCancelAnimationFrame || + w.webkitCancelAnimationFrame || + w.msCancelAnimationFrame; + + // polyfill, when necessary + if ( requestAnimationFrame && cancelAnimationFrame ) { + // We can't assign these window methods directly to $ because they + // expect their "this" to be "window", so we call them in wrappers. + $.requestAnimationFrame = function(){ + return requestAnimationFrame.apply( w, arguments ); + }; + $.cancelAnimationFrame = function(){ + return cancelAnimationFrame.apply( w, arguments ); + }; + } else { + var aAnimQueue = [], + processing = [], + iRequestId = 0, + iIntervalId; + + // create a mock requestAnimationFrame function + $.requestAnimationFrame = function( callback ) { + aAnimQueue.push( [ ++iRequestId, callback ] ); + + if ( !iIntervalId ) { + iIntervalId = setInterval( function() { + if ( aAnimQueue.length ) { + var time = $.now(); + // Process all of the currently outstanding frame + // requests, but none that get added during the + // processing. + // Swap the arrays so we don't have to create a new + // array every frame. + var temp = processing; + processing = aAnimQueue; + aAnimQueue = temp; + while ( processing.length ) { + processing.shift()[ 1 ]( time ); + } + } else { + // don't continue the interval, if unnecessary + clearInterval( iIntervalId ); + iIntervalId = undefined; + } + }, 1000 / 50); // estimating support for 50 frames per second + } + + return iRequestId; + }; + + // create a mock cancelAnimationFrame function + $.cancelAnimationFrame = function( requestId ) { + // find the request ID and remove it + var i, j; + for ( i = 0, j = aAnimQueue.length; i < j; i += 1 ) { + if ( aAnimQueue[ i ][ 0 ] === requestId ) { + aAnimQueue.splice( i, 1 ); + return; + } + } + + // If it's not in the queue, it may be in the set we're currently + // processing (if cancelAnimationFrame is called from within a + // requestAnimationFrame callback). + for ( i = 0, j = processing.length; i < j; i += 1 ) { + if ( processing[ i ][ 0 ] === requestId ) { + processing.splice( i, 1 ); + return; + } + } + }; + } + })( window ); + + /** + * @private + * @inner + * @function + * @param {Element} element + * @param {Boolean} [isFixed] + * @returns {Element} + */ + function getOffsetParent( element, isFixed ) { + if ( isFixed && element != document.body ) { + return document.body; + } else { + return element.offsetParent; + } + } + +}(OpenSeadragon)); + +/* + * OpenSeadragon - full-screen support functions + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ) { + /** + * Determine native full screen support we can get from the browser. + * @member fullScreenApi + * @memberof OpenSeadragon + * @type {object} + * @property {Boolean} supportsFullScreen Return true if full screen API is supported. + * @property {Function} isFullScreen Return true if currently in full screen mode. + * @property {Function} getFullScreenElement Return the element currently in full screen mode. + * @property {Function} requestFullScreen Make a request to go in full screen mode. + * @property {Function} exitFullScreen Make a request to exit full screen mode. + * @property {Function} cancelFullScreen Deprecated, use exitFullScreen instead. + * @property {String} fullScreenEventName Event fired when the full screen mode change. + * @property {String} fullScreenErrorEventName Event fired when a request to go + * in full screen mode failed. + */ + var fullScreenApi = { + supportsFullScreen: false, + isFullScreen: function() { return false; }, + getFullScreenElement: function() { return null; }, + requestFullScreen: function() {}, + exitFullScreen: function() {}, + cancelFullScreen: function() {}, + fullScreenEventName: '', + fullScreenErrorEventName: '' + }; + + // check for native support + if ( document.exitFullscreen ) { + // W3C standard + fullScreenApi.supportsFullScreen = true; + fullScreenApi.getFullScreenElement = function() { + return document.fullscreenElement; + }; + fullScreenApi.requestFullScreen = function( element ) { + return element.requestFullscreen(); + }; + fullScreenApi.exitFullScreen = function() { + document.exitFullscreen(); + }; + fullScreenApi.fullScreenEventName = "fullscreenchange"; + fullScreenApi.fullScreenErrorEventName = "fullscreenerror"; + } else if ( document.msExitFullscreen ) { + // IE 11 + fullScreenApi.supportsFullScreen = true; + fullScreenApi.getFullScreenElement = function() { + return document.msFullscreenElement; + }; + fullScreenApi.requestFullScreen = function( element ) { + return element.msRequestFullscreen(); + }; + fullScreenApi.exitFullScreen = function() { + document.msExitFullscreen(); + }; + fullScreenApi.fullScreenEventName = "MSFullscreenChange"; + fullScreenApi.fullScreenErrorEventName = "MSFullscreenError"; + } else if ( document.webkitExitFullscreen ) { + // Recent webkit + fullScreenApi.supportsFullScreen = true; + fullScreenApi.getFullScreenElement = function() { + return document.webkitFullscreenElement; + }; + fullScreenApi.requestFullScreen = function( element ) { + return element.webkitRequestFullscreen(); + }; + fullScreenApi.exitFullScreen = function() { + document.webkitExitFullscreen(); + }; + fullScreenApi.fullScreenEventName = "webkitfullscreenchange"; + fullScreenApi.fullScreenErrorEventName = "webkitfullscreenerror"; + } else if ( document.webkitCancelFullScreen ) { + // Old webkit + fullScreenApi.supportsFullScreen = true; + fullScreenApi.getFullScreenElement = function() { + return document.webkitCurrentFullScreenElement; + }; + fullScreenApi.requestFullScreen = function( element ) { + return element.webkitRequestFullScreen(); + }; + fullScreenApi.exitFullScreen = function() { + document.webkitCancelFullScreen(); + }; + fullScreenApi.fullScreenEventName = "webkitfullscreenchange"; + fullScreenApi.fullScreenErrorEventName = "webkitfullscreenerror"; + } else if ( document.mozCancelFullScreen ) { + // Firefox + fullScreenApi.supportsFullScreen = true; + fullScreenApi.getFullScreenElement = function() { + return document.mozFullScreenElement; + }; + fullScreenApi.requestFullScreen = function( element ) { + return element.mozRequestFullScreen(); + }; + fullScreenApi.exitFullScreen = function() { + document.mozCancelFullScreen(); + }; + fullScreenApi.fullScreenEventName = "mozfullscreenchange"; + fullScreenApi.fullScreenErrorEventName = "mozfullscreenerror"; + } + fullScreenApi.isFullScreen = function() { + return fullScreenApi.getFullScreenElement() !== null; + }; + fullScreenApi.cancelFullScreen = function() { + $.console.error("cancelFullScreen is deprecated. Use exitFullScreen instead."); + fullScreenApi.exitFullScreen(); + }; + + // export api + $.extend( $, fullScreenApi ); + +})( OpenSeadragon ); + +/* + * OpenSeadragon - EventSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function($){ + +/** + * Event handler method signature used by all OpenSeadragon events. + * + * @callback EventHandler + * @memberof OpenSeadragon + * @param {Object} event - See individual events for event-specific properties. + */ + + +/** + * @class EventSource + * @classdesc For use by classes which want to support custom, non-browser events. + * + * @memberof OpenSeadragon + */ +$.EventSource = function() { + this.events = {}; +}; + +/** @lends OpenSeadragon.EventSource.prototype */ +$.EventSource.prototype = { + + /** + * Add an event handler to be triggered only once (or a given number of times) + * for a given event. + * @function + * @param {String} eventName - Name of event to register. + * @param {OpenSeadragon.EventHandler} handler - Function to call when event + * is triggered. + * @param {Object} [userData=null] - Arbitrary object to be passed unchanged + * to the handler. + * @param {Number} [times=1] - The number of times to handle the event + * before removing it. + */ + addOnceHandler: function(eventName, handler, userData, times) { + var self = this; + times = times || 1; + var count = 0; + var onceHandler = function(event) { + count++; + if (count === times) { + self.removeHandler(eventName, onceHandler); + } + handler(event); + }; + this.addHandler(eventName, onceHandler, userData); + }, + + /** + * Add an event handler for a given event. + * @function + * @param {String} eventName - Name of event to register. + * @param {OpenSeadragon.EventHandler} handler - Function to call when event is triggered. + * @param {Object} [userData=null] - Arbitrary object to be passed unchanged to the handler. + */ + addHandler: function ( eventName, handler, userData ) { + var events = this.events[ eventName ]; + if ( !events ) { + this.events[ eventName ] = events = []; + } + if ( handler && $.isFunction( handler ) ) { + events[ events.length ] = { handler: handler, userData: userData || null }; + } + }, + + /** + * Remove a specific event handler for a given event. + * @function + * @param {String} eventName - Name of event for which the handler is to be removed. + * @param {OpenSeadragon.EventHandler} handler - Function to be removed. + */ + removeHandler: function ( eventName, handler ) { + var events = this.events[ eventName ], + handlers = [], + i; + if ( !events ) { + return; + } + if ( $.isArray( events ) ) { + for ( i = 0; i < events.length; i++ ) { + if ( events[i].handler !== handler ) { + handlers.push( events[ i ] ); + } + } + this.events[ eventName ] = handlers; + } + }, + + + /** + * Remove all event handlers for a given event type. If no type is given all + * event handlers for every event type are removed. + * @function + * @param {String} eventName - Name of event for which all handlers are to be removed. + */ + removeAllHandlers: function( eventName ) { + if ( eventName ){ + this.events[ eventName ] = []; + } else{ + for ( var eventType in this.events ) { + this.events[ eventType ] = []; + } + } + }, + + /** + * Get a function which iterates the list of all handlers registered for a given event, calling the handler for each. + * @function + * @param {String} eventName - Name of event to get handlers for. + */ + getHandler: function ( eventName ) { + var events = this.events[ eventName ]; + if ( !events || !events.length ) { + return null; + } + events = events.length === 1 ? + [ events[ 0 ] ] : + Array.apply( null, events ); + return function ( source, args ) { + var i, + length = events.length; + for ( i = 0; i < length; i++ ) { + if ( events[ i ] ) { + args.eventSource = source; + args.userData = events[ i ].userData; + events[ i ].handler( args ); + } + } + }; + }, + + /** + * Trigger an event, optionally passing additional information. + * @function + * @param {String} eventName - Name of event to register. + * @param {Object} eventArgs - Event-specific data. + */ + raiseEvent: function( eventName, eventArgs ) { + //uncomment if you want to get a log of all events + //$.console.log( eventName ); + var handler = this.getHandler( eventName ); + + if ( handler ) { + if ( !eventArgs ) { + eventArgs = {}; + } + + handler( this, eventArgs ); + } + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - MouseTracker + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function ( $ ) { + + // All MouseTracker instances + var MOUSETRACKERS = []; + + // dictionary from hash to private properties + var THIS = {}; + + + /** + * @class MouseTracker + * @classdesc Provides simplified handling of common pointer device (mouse, touch, pen, etc.) gestures + * and keyboard events on a specified element. + * @memberof OpenSeadragon + * @param {Object} options + * Allows configurable properties to be entirely specified by passing + * an options object to the constructor. The constructor also supports + * the original positional arguments 'element', 'clickTimeThreshold', + * and 'clickDistThreshold' in that order. + * @param {Element|String} options.element + * A reference to an element or an element id for which the pointer/key + * events will be monitored. + * @param {Boolean} [options.startDisabled=false] + * If true, event tracking on the element will not start until + * {@link OpenSeadragon.MouseTracker.setTracking|setTracking} is called. + * @param {Number} options.clickTimeThreshold + * The number of milliseconds within which a pointer down-up event combination + * will be treated as a click gesture. + * @param {Number} options.clickDistThreshold + * The maximum distance allowed between a pointer down event and a pointer up event + * to be treated as a click gesture. + * @param {Number} options.dblClickTimeThreshold + * The number of milliseconds within which two pointer down-up event combinations + * will be treated as a double-click gesture. + * @param {Number} options.dblClickDistThreshold + * The maximum distance allowed between two pointer click events + * to be treated as a click gesture. + * @param {Number} [options.stopDelay=50] + * The number of milliseconds without pointer move before the stop + * event is fired. + * @param {OpenSeadragon.EventHandler} [options.enterHandler=null] + * An optional handler for pointer enter. + * @param {OpenSeadragon.EventHandler} [options.exitHandler=null] + * An optional handler for pointer exit. + * @param {OpenSeadragon.EventHandler} [options.pressHandler=null] + * An optional handler for pointer press. + * @param {OpenSeadragon.EventHandler} [options.nonPrimaryPressHandler=null] + * An optional handler for pointer non-primary button press. + * @param {OpenSeadragon.EventHandler} [options.releaseHandler=null] + * An optional handler for pointer release. + * @param {OpenSeadragon.EventHandler} [options.nonPrimaryReleaseHandler=null] + * An optional handler for pointer non-primary button release. + * @param {OpenSeadragon.EventHandler} [options.moveHandler=null] + * An optional handler for pointer move. + * @param {OpenSeadragon.EventHandler} [options.scrollHandler=null] + * An optional handler for mouse wheel scroll. + * @param {OpenSeadragon.EventHandler} [options.clickHandler=null] + * An optional handler for pointer click. + * @param {OpenSeadragon.EventHandler} [options.dblClickHandler=null] + * An optional handler for pointer double-click. + * @param {OpenSeadragon.EventHandler} [options.dragHandler=null] + * An optional handler for the drag gesture. + * @param {OpenSeadragon.EventHandler} [options.dragEndHandler=null] + * An optional handler for after a drag gesture. + * @param {OpenSeadragon.EventHandler} [options.pinchHandler=null] + * An optional handler for the pinch gesture. + * @param {OpenSeadragon.EventHandler} [options.keyDownHandler=null] + * An optional handler for keydown. + * @param {OpenSeadragon.EventHandler} [options.keyUpHandler=null] + * An optional handler for keyup. + * @param {OpenSeadragon.EventHandler} [options.keyHandler=null] + * An optional handler for keypress. + * @param {OpenSeadragon.EventHandler} [options.focusHandler=null] + * An optional handler for focus. + * @param {OpenSeadragon.EventHandler} [options.blurHandler=null] + * An optional handler for blur. + * @param {Object} [options.userData=null] + * Arbitrary object to be passed unchanged to any attached handler methods. + */ + $.MouseTracker = function ( options ) { + + MOUSETRACKERS.push( this ); + + var args = arguments; + + if ( !$.isPlainObject( options ) ) { + options = { + element: args[ 0 ], + clickTimeThreshold: args[ 1 ], + clickDistThreshold: args[ 2 ] + }; + } + + this.hash = Math.random(); // An unique hash for this tracker. + /** + * The element for which pointer events are being monitored. + * @member {Element} element + * @memberof OpenSeadragon.MouseTracker# + */ + this.element = $.getElement( options.element ); + /** + * The number of milliseconds within which a pointer down-up event combination + * will be treated as a click gesture. + * @member {Number} clickTimeThreshold + * @memberof OpenSeadragon.MouseTracker# + */ + this.clickTimeThreshold = options.clickTimeThreshold || $.DEFAULT_SETTINGS.clickTimeThreshold; + /** + * The maximum distance allowed between a pointer down event and a pointer up event + * to be treated as a click gesture. + * @member {Number} clickDistThreshold + * @memberof OpenSeadragon.MouseTracker# + */ + this.clickDistThreshold = options.clickDistThreshold || $.DEFAULT_SETTINGS.clickDistThreshold; + /** + * The number of milliseconds within which two pointer down-up event combinations + * will be treated as a double-click gesture. + * @member {Number} dblClickTimeThreshold + * @memberof OpenSeadragon.MouseTracker# + */ + this.dblClickTimeThreshold = options.dblClickTimeThreshold || $.DEFAULT_SETTINGS.dblClickTimeThreshold; + /** + * The maximum distance allowed between two pointer click events + * to be treated as a click gesture. + * @member {Number} clickDistThreshold + * @memberof OpenSeadragon.MouseTracker# + */ + this.dblClickDistThreshold = options.dblClickDistThreshold || $.DEFAULT_SETTINGS.dblClickDistThreshold; + this.userData = options.userData || null; + this.stopDelay = options.stopDelay || 50; + + this.enterHandler = options.enterHandler || null; + this.exitHandler = options.exitHandler || null; + this.pressHandler = options.pressHandler || null; + this.nonPrimaryPressHandler = options.nonPrimaryPressHandler || null; + this.releaseHandler = options.releaseHandler || null; + this.nonPrimaryReleaseHandler = options.nonPrimaryReleaseHandler || null; + this.moveHandler = options.moveHandler || null; + this.scrollHandler = options.scrollHandler || null; + this.clickHandler = options.clickHandler || null; + this.dblClickHandler = options.dblClickHandler || null; + this.dragHandler = options.dragHandler || null; + this.dragEndHandler = options.dragEndHandler || null; + this.pinchHandler = options.pinchHandler || null; + this.stopHandler = options.stopHandler || null; + this.keyDownHandler = options.keyDownHandler || null; + this.keyUpHandler = options.keyUpHandler || null; + this.keyHandler = options.keyHandler || null; + this.focusHandler = options.focusHandler || null; + this.blurHandler = options.blurHandler || null; + + //Store private properties in a scope sealed hash map + var _this = this; + + /** + * @private + * @property {Boolean} tracking + * Are we currently tracking pointer events for this element. + */ + THIS[ this.hash ] = { + click: function ( event ) { onClick( _this, event ); }, + dblclick: function ( event ) { onDblClick( _this, event ); }, + keydown: function ( event ) { onKeyDown( _this, event ); }, + keyup: function ( event ) { onKeyUp( _this, event ); }, + keypress: function ( event ) { onKeyPress( _this, event ); }, + focus: function ( event ) { onFocus( _this, event ); }, + blur: function ( event ) { onBlur( _this, event ); }, + + wheel: function ( event ) { onWheel( _this, event ); }, + mousewheel: function ( event ) { onMouseWheel( _this, event ); }, + DOMMouseScroll: function ( event ) { onMouseWheel( _this, event ); }, + MozMousePixelScroll: function ( event ) { onMouseWheel( _this, event ); }, + + mouseenter: function ( event ) { onMouseEnter( _this, event ); }, // Used on IE8 only + mouseleave: function ( event ) { onMouseLeave( _this, event ); }, // Used on IE8 only + mouseover: function ( event ) { onMouseOver( _this, event ); }, + mouseout: function ( event ) { onMouseOut( _this, event ); }, + mousedown: function ( event ) { onMouseDown( _this, event ); }, + mouseup: function ( event ) { onMouseUp( _this, event ); }, + mouseupcaptured: function ( event ) { onMouseUpCaptured( _this, event ); }, + mousemove: function ( event ) { onMouseMove( _this, event ); }, + mousemovecaptured: function ( event ) { onMouseMoveCaptured( _this, event ); }, + + touchstart: function ( event ) { onTouchStart( _this, event ); }, + touchend: function ( event ) { onTouchEnd( _this, event ); }, + touchendcaptured: function ( event ) { onTouchEndCaptured( _this, event ); }, + touchmove: function ( event ) { onTouchMove( _this, event ); }, + touchmovecaptured: function ( event ) { onTouchMoveCaptured( _this, event ); }, + touchcancel: function ( event ) { onTouchCancel( _this, event ); }, + + gesturestart: function ( event ) { onGestureStart( _this, event ); }, + gesturechange: function ( event ) { onGestureChange( _this, event ); }, + + pointerover: function ( event ) { onPointerOver( _this, event ); }, + MSPointerOver: function ( event ) { onPointerOver( _this, event ); }, + pointerout: function ( event ) { onPointerOut( _this, event ); }, + MSPointerOut: function ( event ) { onPointerOut( _this, event ); }, + pointerdown: function ( event ) { onPointerDown( _this, event ); }, + MSPointerDown: function ( event ) { onPointerDown( _this, event ); }, + pointerup: function ( event ) { onPointerUp( _this, event ); }, + MSPointerUp: function ( event ) { onPointerUp( _this, event ); }, + pointermove: function ( event ) { onPointerMove( _this, event ); }, + MSPointerMove: function ( event ) { onPointerMove( _this, event ); }, + pointercancel: function ( event ) { onPointerCancel( _this, event ); }, + MSPointerCancel: function ( event ) { onPointerCancel( _this, event ); }, + pointerupcaptured: function ( event ) { onPointerUpCaptured( _this, event ); }, + pointermovecaptured: function ( event ) { onPointerMoveCaptured( _this, event ); }, + + tracking: false, + + // Active pointers lists. Array of GesturePointList objects, one for each pointer device type. + // GesturePointList objects are added each time a pointer is tracked by a new pointer device type (see getActivePointersListByType()). + // Active pointers are any pointer being tracked for this element which are in the hit-test area + // of the element (for hover-capable devices) and/or have contact or a button press initiated in the element. + activePointersLists: [], + + // Tracking for double-click gesture + lastClickPos: null, + dblClickTimeOut: null, + + // Tracking for pinch gesture + pinchGPoints: [], + lastPinchDist: 0, + currentPinchDist: 0, + lastPinchCenter: null, + currentPinchCenter: null + }; + + if ( !options.startDisabled ) { + this.setTracking( true ); + } + }; + + /** @lends OpenSeadragon.MouseTracker.prototype */ + $.MouseTracker.prototype = { + + /** + * Clean up any events or objects created by the tracker. + * @function + */ + destroy: function () { + var i; + + stopTracking( this ); + this.element = null; + + for ( i = 0; i < MOUSETRACKERS.length; i++ ) { + if ( MOUSETRACKERS[ i ] === this ) { + MOUSETRACKERS.splice( i, 1 ); + break; + } + } + + THIS[ this.hash ] = null; + delete THIS[ this.hash ]; + }, + + /** + * Are we currently tracking events on this element. + * @deprecated Just use this.tracking + * @function + * @returns {Boolean} Are we currently tracking events on this element. + */ + isTracking: function () { + return THIS[ this.hash ].tracking; + }, + + /** + * Enable or disable whether or not we are tracking events on this element. + * @function + * @param {Boolean} track True to start tracking, false to stop tracking. + * @returns {OpenSeadragon.MouseTracker} Chainable. + */ + setTracking: function ( track ) { + if ( track ) { + startTracking( this ); + } else { + stopTracking( this ); + } + //chain + return this; + }, + + /** + * Returns the {@link OpenSeadragon.MouseTracker.GesturePointList|GesturePointList} for the given pointer device type, + * creating and caching a new {@link OpenSeadragon.MouseTracker.GesturePointList|GesturePointList} if one doesn't already exist for the type. + * @function + * @param {String} type - The pointer device type: "mouse", "touch", "pen", etc. + * @returns {OpenSeadragon.MouseTracker.GesturePointList} + */ + getActivePointersListByType: function ( type ) { + var delegate = THIS[ this.hash ], + i, + len = delegate.activePointersLists.length, + list; + + for ( i = 0; i < len; i++ ) { + if ( delegate.activePointersLists[ i ].type === type ) { + return delegate.activePointersLists[ i ]; + } + } + + list = new $.MouseTracker.GesturePointList( type ); + delegate.activePointersLists.push( list ); + return list; + }, + + /** + * Returns the total number of pointers currently active on the tracked element. + * @function + * @returns {Number} + */ + getActivePointerCount: function () { + var delegate = THIS[ this.hash ], + i, + len = delegate.activePointersLists.length, + count = 0; + + for ( i = 0; i < len; i++ ) { + count += delegate.activePointersLists[ i ].getLength(); + } + + return count; + }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Number} event.pointers + * Number of pointers (all types) active in the tracked element. + * @param {Boolean} event.insideElementPressed + * True if the left mouse button is currently being pressed and was + * initiated inside the tracked element, otherwise false. + * @param {Boolean} event.buttonDownAny + * Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + enterHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Number} event.pointers + * Number of pointers (all types) active in the tracked element. + * @param {Boolean} event.insideElementPressed + * True if the left mouse button is currently being pressed and was + * initiated inside the tracked element, otherwise false. + * @param {Boolean} event.buttonDownAny + * Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + exitHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + pressHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.button + * Button which caused the event. + * -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + nonPrimaryPressHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.insideElementPressed + * True if the left mouse button is currently being pressed and was + * initiated inside the tracked element, otherwise false. + * @param {Boolean} event.insideElementReleased + * True if the cursor inside the tracked element when the button was released. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + releaseHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.button + * Button which caused the event. + * -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + nonPrimaryReleaseHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + moveHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.scroll + * The scroll delta for the event. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. Touch devices no longer generate scroll event. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + scrollHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Boolean} event.quick + * True only if the clickDistThreshold and clickTimeThreshold are both passed. Useful for ignoring drag events. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + clickHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + dblClickHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {OpenSeadragon.Point} event.delta + * The x,y components of the difference between the current position and the last drag event position. Useful for ignoring or weighting the events. + * @param {Number} event.speed + * Current computed speed, in pixels per second. + * @param {Number} event.direction + * Current computed direction, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + dragHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.speed + * Speed at the end of a drag gesture, in pixels per second. + * @param {Number} event.direction + * Direction at the end of a drag gesture, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + dragEndHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {Array.} event.gesturePoints + * Gesture points associated with the gesture. Velocity data can be found here. + * @param {OpenSeadragon.Point} event.lastCenter + * The previous center point of the two pinch contact points relative to the tracked element. + * @param {OpenSeadragon.Point} event.center + * The center point of the two pinch contact points relative to the tracked element. + * @param {Number} event.lastDistance + * The previous distance between the two pinch contact points in CSS pixels. + * @param {Number} event.distance + * The distance between the two pinch contact points in CSS pixels. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + pinchHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {String} event.pointerType + * "mouse", "touch", "pen", etc. + * @param {OpenSeadragon.Point} event.position + * The position of the event relative to the tracked element. + * @param {Number} event.buttons + * Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @param {Boolean} event.isTouchEvent + * True if the original event is a touch event, otherwise false. Deprecated. Use pointerType and/or originalEvent instead. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + stopHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {Number} event.keyCode + * The key code that was pressed. + * @param {Boolean} event.ctrl + * True if the ctrl key was pressed during this event. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.alt + * True if the alt key was pressed during this event. + * @param {Boolean} event.meta + * True if the meta key was pressed during this event. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + keyDownHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {Number} event.keyCode + * The key code that was pressed. + * @param {Boolean} event.ctrl + * True if the ctrl key was pressed during this event. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.alt + * True if the alt key was pressed during this event. + * @param {Boolean} event.meta + * True if the meta key was pressed during this event. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + keyUpHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {Number} event.keyCode + * The key code that was pressed. + * @param {Boolean} event.ctrl + * True if the ctrl key was pressed during this event. + * @param {Boolean} event.shift + * True if the shift key was pressed during this event. + * @param {Boolean} event.alt + * True if the alt key was pressed during this event. + * @param {Boolean} event.meta + * True if the meta key was pressed during this event. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + keyHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + focusHandler: function () { }, + + /** + * Implement or assign implementation to these handlers during or after + * calling the constructor. + * @function + * @param {Object} event + * @param {OpenSeadragon.MouseTracker} event.eventSource + * A reference to the tracker instance. + * @param {Object} event.originalEvent + * The original event object. + * @param {Boolean} event.preventDefaultAction + * Set to true to prevent the tracker subscriber from performing its default action (subscriber implementation dependent). Default: false. + * @param {Object} event.userData + * Arbitrary user-defined object. + */ + blurHandler: function () { } + }; + + + /** + * Provides continuous computation of velocity (speed and direction) of active pointers. + * This is a singleton, used by all MouseTracker instances, as it is unlikely there will ever be more than + * two active gesture pointers at a time. + * + * @private + * @member gesturePointVelocityTracker + * @memberof OpenSeadragon.MouseTracker + */ + $.MouseTracker.gesturePointVelocityTracker = (function () { + var trackerPoints = [], + intervalId = 0, + lastTime = 0; + + // Generates a unique identifier for a tracked gesture point + var _generateGuid = function ( tracker, gPoint ) { + return tracker.hash.toString() + gPoint.type + gPoint.id.toString(); + }; + + // Interval timer callback. Computes velocity for all tracked gesture points. + var _doTracking = function () { + var i, + len = trackerPoints.length, + trackPoint, + gPoint, + now = $.now(), + elapsedTime, + distance, + speed; + + elapsedTime = now - lastTime; + lastTime = now; + + for ( i = 0; i < len; i++ ) { + trackPoint = trackerPoints[ i ]; + gPoint = trackPoint.gPoint; + // Math.atan2 gives us just what we need for a velocity vector, as we can simply + // use cos()/sin() to extract the x/y velocity components. + gPoint.direction = Math.atan2( gPoint.currentPos.y - trackPoint.lastPos.y, gPoint.currentPos.x - trackPoint.lastPos.x ); + // speed = distance / elapsed time + distance = trackPoint.lastPos.distanceTo( gPoint.currentPos ); + trackPoint.lastPos = gPoint.currentPos; + speed = 1000 * distance / ( elapsedTime + 1 ); + // Simple biased average, favors the most recent speed computation. Smooths out erratic gestures a bit. + gPoint.speed = 0.75 * speed + 0.25 * gPoint.speed; + } + }; + + // Public. Add a gesture point to be tracked + var addPoint = function ( tracker, gPoint ) { + var guid = _generateGuid( tracker, gPoint ); + + trackerPoints.push( + { + guid: guid, + gPoint: gPoint, + lastPos: gPoint.currentPos + } ); + + // Only fire up the interval timer when there's gesture pointers to track + if ( trackerPoints.length === 1 ) { + lastTime = $.now(); + intervalId = window.setInterval( _doTracking, 50 ); + } + }; + + // Public. Stop tracking a gesture point + var removePoint = function ( tracker, gPoint ) { + var guid = _generateGuid( tracker, gPoint ), + i, + len = trackerPoints.length; + for ( i = 0; i < len; i++ ) { + if ( trackerPoints[ i ].guid === guid ) { + trackerPoints.splice( i, 1 ); + // Only run the interval timer if theres gesture pointers to track + len--; + if ( len === 0 ) { + window.clearInterval( intervalId ); + } + break; + } + } + }; + + return { + addPoint: addPoint, + removePoint: removePoint + }; + } )(); + + +/////////////////////////////////////////////////////////////////////////////// +// Pointer event model and feature detection +/////////////////////////////////////////////////////////////////////////////// + + $.MouseTracker.captureElement = document; + + /** + * Detect available mouse wheel event name. + */ + $.MouseTracker.wheelEventName = ( $.Browser.vendor == $.BROWSERS.IE && $.Browser.version > 8 ) || + ( 'onwheel' in document.createElement( 'div' ) ) ? 'wheel' : // Modern browsers support 'wheel' + document.onmousewheel !== undefined ? 'mousewheel' : // Webkit and IE support at least 'mousewheel' + 'DOMMouseScroll'; // Assume old Firefox + + /** + * Detect legacy mouse capture support. + */ + $.MouseTracker.supportsMouseCapture = (function () { + var divElement = document.createElement( 'div' ); + return $.isFunction( divElement.setCapture ) && $.isFunction( divElement.releaseCapture ); + }()); + + /** + * Detect browser pointer device event model(s) and build appropriate list of events to subscribe to. + */ + $.MouseTracker.subscribeEvents = [ "click", "dblclick", "keydown", "keyup", "keypress", "focus", "blur", $.MouseTracker.wheelEventName ]; + + if( $.MouseTracker.wheelEventName == "DOMMouseScroll" ) { + // Older Firefox + $.MouseTracker.subscribeEvents.push( "MozMousePixelScroll" ); + } + + // Note: window.navigator.pointerEnable is deprecated on IE 11 and not part of W3C spec. + if ( window.PointerEvent && ( window.navigator.pointerEnabled || $.Browser.vendor !== $.BROWSERS.IE ) ) { + // IE11 and other W3C Pointer Event implementations (see http://www.w3.org/TR/pointerevents) + $.MouseTracker.havePointerEvents = true; + $.MouseTracker.subscribeEvents.push( "pointerover", "pointerout", "pointerdown", "pointerup", "pointermove", "pointercancel" ); + $.MouseTracker.unprefixedPointerEvents = true; + if( navigator.maxTouchPoints ) { + $.MouseTracker.maxTouchPoints = navigator.maxTouchPoints; + } else { + $.MouseTracker.maxTouchPoints = 0; + } + $.MouseTracker.haveMouseEnter = false; + } else if ( window.MSPointerEvent && window.navigator.msPointerEnabled ) { + // IE10 + $.MouseTracker.havePointerEvents = true; + $.MouseTracker.subscribeEvents.push( "MSPointerOver", "MSPointerOut", "MSPointerDown", "MSPointerUp", "MSPointerMove", "MSPointerCancel" ); + $.MouseTracker.unprefixedPointerEvents = false; + if( navigator.msMaxTouchPoints ) { + $.MouseTracker.maxTouchPoints = navigator.msMaxTouchPoints; + } else { + $.MouseTracker.maxTouchPoints = 0; + } + $.MouseTracker.haveMouseEnter = false; + } else { + // Legacy W3C mouse events + $.MouseTracker.havePointerEvents = false; + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + $.MouseTracker.subscribeEvents.push( "mouseenter", "mouseleave" ); + $.MouseTracker.haveMouseEnter = true; + } else { + $.MouseTracker.subscribeEvents.push( "mouseover", "mouseout" ); + $.MouseTracker.haveMouseEnter = false; + } + $.MouseTracker.subscribeEvents.push( "mousedown", "mouseup", "mousemove" ); + if ( 'ontouchstart' in window ) { + // iOS, Android, and other W3c Touch Event implementations + // (see http://www.w3.org/TR/touch-events/) + // (see https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html) + // (see https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html) + $.MouseTracker.subscribeEvents.push( "touchstart", "touchend", "touchmove", "touchcancel" ); + } + if ( 'ongesturestart' in window ) { + // iOS (see https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html) + // Subscribe to these to prevent default gesture handling + $.MouseTracker.subscribeEvents.push( "gesturestart", "gesturechange" ); + } + $.MouseTracker.mousePointerId = "legacy-mouse"; + $.MouseTracker.maxTouchPoints = 10; + } + + +/////////////////////////////////////////////////////////////////////////////// +// Classes and typedefs +/////////////////////////////////////////////////////////////////////////////// + + /** + * Represents a point of contact on the screen made by a mouse cursor, pen, touch, or other pointer device. + * + * @typedef {Object} GesturePoint + * @memberof OpenSeadragon.MouseTracker + * + * @property {Number} id + * Identifier unique from all other active GesturePoints for a given pointer device. + * @property {String} type + * The pointer device type: "mouse", "touch", "pen", etc. + * @property {Boolean} captured + * True if events for the gesture point are captured to the tracked element. + * @property {Boolean} isPrimary + * True if the gesture point is a master pointer amongst the set of active pointers for each pointer type. True for mouse and primary (first) touch/pen pointers. + * @property {Boolean} insideElementPressed + * True if button pressed or contact point initiated inside the screen area of the tracked element. + * @property {Boolean} insideElement + * True if pointer or contact point is currently inside the bounds of the tracked element. + * @property {Number} speed + * Current computed speed, in pixels per second. + * @property {Number} direction + * Current computed direction, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. + * @property {OpenSeadragon.Point} contactPos + * The initial pointer contact position, relative to the page including any scrolling. Only valid if the pointer has contact (pressed, touch contact, pen contact). + * @property {Number} contactTime + * The initial pointer contact time, in milliseconds. Only valid if the pointer has contact (pressed, touch contact, pen contact). + * @property {OpenSeadragon.Point} lastPos + * The last pointer position, relative to the page including any scrolling. + * @property {Number} lastTime + * The last pointer contact time, in milliseconds. + * @property {OpenSeadragon.Point} currentPos + * The current pointer position, relative to the page including any scrolling. + * @property {Number} currentTime + * The current pointer contact time, in milliseconds. + */ + + + /** + * @class GesturePointList + * @classdesc Provides an abstraction for a set of active {@link OpenSeadragon.MouseTracker.GesturePoint|GesturePoint} objects for a given pointer device type. + * Active pointers are any pointer being tracked for this element which are in the hit-test area + * of the element (for hover-capable devices) and/or have contact or a button press initiated in the element. + * @memberof OpenSeadragon.MouseTracker + * @param {String} type - The pointer device type: "mouse", "touch", "pen", etc. + */ + $.MouseTracker.GesturePointList = function ( type ) { + this._gPoints = []; + /** + * The pointer device type: "mouse", "touch", "pen", etc. + * @member {String} type + * @memberof OpenSeadragon.MouseTracker.GesturePointList# + */ + this.type = type; + /** + * Current buttons pressed for the device. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @member {Number} buttons + * @memberof OpenSeadragon.MouseTracker.GesturePointList# + */ + this.buttons = 0; + /** + * Current number of contact points (touch points, mouse down, etc.) for the device. + * @member {Number} contacts + * @memberof OpenSeadragon.MouseTracker.GesturePointList# + */ + this.contacts = 0; + /** + * Current number of clicks for the device. Used for multiple click gesture tracking. + * @member {Number} clicks + * @memberof OpenSeadragon.MouseTracker.GesturePointList# + */ + this.clicks = 0; + /** + * Current number of captured pointers for the device. + * @member {Number} captureCount + * @memberof OpenSeadragon.MouseTracker.GesturePointList# + */ + this.captureCount = 0; + }; + + /** @lends OpenSeadragon.MouseTracker.GesturePointList.prototype */ + $.MouseTracker.GesturePointList.prototype = { + /** + * @function + * @returns {Number} Number of gesture points in the list. + */ + getLength: function () { + return this._gPoints.length; + }, + /** + * @function + * @returns {Array.} The list of gesture points in the list as an array (read-only). + */ + asArray: function () { + return this._gPoints; + }, + /** + * @function + * @param {OpenSeadragon.MouseTracker.GesturePoint} gesturePoint - A gesture point to add to the list. + * @returns {Number} Number of gesture points in the list. + */ + add: function ( gp ) { + return this._gPoints.push( gp ); + }, + /** + * @function + * @param {Number} id - The id of the gesture point to remove from the list. + * @returns {Number} Number of gesture points in the list. + */ + removeById: function ( id ) { + var i, + len = this._gPoints.length; + for ( i = 0; i < len; i++ ) { + if ( this._gPoints[ i ].id === id ) { + this._gPoints.splice( i, 1 ); + break; + } + } + return this._gPoints.length; + }, + /** + * @function + * @param {Number} index - The index of the gesture point to retrieve from the list. + * @returns {OpenSeadragon.MouseTracker.GesturePoint|null} The gesture point at the given index, or null if not found. + */ + getByIndex: function ( index ) { + if ( index < this._gPoints.length) { + return this._gPoints[ index ]; + } + + return null; + }, + /** + * @function + * @param {Number} id - The id of the gesture point to retrieve from the list. + * @returns {OpenSeadragon.MouseTracker.GesturePoint|null} The gesture point with the given id, or null if not found. + */ + getById: function ( id ) { + var i, + len = this._gPoints.length; + for ( i = 0; i < len; i++ ) { + if ( this._gPoints[ i ].id === id ) { + return this._gPoints[ i ]; + } + } + return null; + }, + /** + * @function + * @returns {OpenSeadragon.MouseTracker.GesturePoint|null} The primary gesture point in the list, or null if not found. + */ + getPrimary: function ( id ) { + var i, + len = this._gPoints.length; + for ( i = 0; i < len; i++ ) { + if ( this._gPoints[ i ].isPrimary ) { + return this._gPoints[ i ]; + } + } + return null; + } + }; + + +/////////////////////////////////////////////////////////////////////////////// +// Utility functions +/////////////////////////////////////////////////////////////////////////////// + + /** + * Removes all tracked pointers. + * @private + * @inner + */ + function clearTrackedPointers( tracker ) { + var delegate = THIS[ tracker.hash ], + i, + pointerListCount = delegate.activePointersLists.length; + + for ( i = 0; i < pointerListCount; i++ ) { + if ( delegate.activePointersLists[ i ].captureCount > 0 ) { + $.removeEvent( + $.MouseTracker.captureElement, + 'mousemove', + delegate.mousemovecaptured, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + 'mouseup', + delegate.mouseupcaptured, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + $.MouseTracker.unprefixedPointerEvents ? 'pointermove' : 'MSPointerMove', + delegate.pointermovecaptured, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + $.MouseTracker.unprefixedPointerEvents ? 'pointerup' : 'MSPointerUp', + delegate.pointerupcaptured, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + 'touchmove', + delegate.touchmovecaptured, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + 'touchend', + delegate.touchendcaptured, + true + ); + + delegate.activePointersLists[ i ].captureCount = 0; + } + } + + for ( i = 0; i < pointerListCount; i++ ) { + delegate.activePointersLists.pop(); + } + } + + /** + * Starts tracking pointer events on the tracked element. + * @private + * @inner + */ + function startTracking( tracker ) { + var delegate = THIS[ tracker.hash ], + event, + i; + + if ( !delegate.tracking ) { + for ( i = 0; i < $.MouseTracker.subscribeEvents.length; i++ ) { + event = $.MouseTracker.subscribeEvents[ i ]; + $.addEvent( + tracker.element, + event, + delegate[ event ], + false + ); + } + + clearTrackedPointers( tracker ); + + delegate.tracking = true; + } + } + + /** + * Stops tracking pointer events on the tracked element. + * @private + * @inner + */ + function stopTracking( tracker ) { + var delegate = THIS[ tracker.hash ], + event, + i; + + if ( delegate.tracking ) { + for ( i = 0; i < $.MouseTracker.subscribeEvents.length; i++ ) { + event = $.MouseTracker.subscribeEvents[ i ]; + $.removeEvent( + tracker.element, + event, + delegate[ event ], + false + ); + } + + clearTrackedPointers( tracker ); + + delegate.tracking = false; + } + } + + /** + * @private + * @inner + */ + function getCaptureEventParams( tracker, pointerType ) { + var delegate = THIS[ tracker.hash ]; + + if ( pointerType === 'pointerevent' ) { + return { + upName: $.MouseTracker.unprefixedPointerEvents ? 'pointerup' : 'MSPointerUp', + upHandler: delegate.pointerupcaptured, + moveName: $.MouseTracker.unprefixedPointerEvents ? 'pointermove' : 'MSPointerMove', + moveHandler: delegate.pointermovecaptured + }; + } else if ( pointerType === 'mouse' ) { + return { + upName: 'mouseup', + upHandler: delegate.mouseupcaptured, + moveName: 'mousemove', + moveHandler: delegate.mousemovecaptured + }; + } else if ( pointerType === 'touch' ) { + return { + upName: 'touchend', + upHandler: delegate.touchendcaptured, + moveName: 'touchmove', + moveHandler: delegate.touchmovecaptured + }; + } else { + throw new Error( "MouseTracker.getCaptureEventParams: Unknown pointer type." ); + } + } + + /** + * Begin capturing pointer events to the tracked element. + * @private + * @inner + */ + function capturePointer( tracker, pointerType, pointerCount ) { + var pointsList = tracker.getActivePointersListByType( pointerType ), + eventParams; + + pointsList.captureCount += (pointerCount || 1); + + if ( pointsList.captureCount === 1 ) { + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + tracker.element.setCapture( true ); + } else { + eventParams = getCaptureEventParams( tracker, $.MouseTracker.havePointerEvents ? 'pointerevent' : pointerType ); + // We emulate mouse capture by hanging listeners on the document object. + // (Note we listen on the capture phase so the captured handlers will get called first) + if (isInIframe && canAccessEvents(window.top)) { + $.addEvent( + window.top, + eventParams.upName, + eventParams.upHandler, + true + ); + } + $.addEvent( + $.MouseTracker.captureElement, + eventParams.upName, + eventParams.upHandler, + true + ); + $.addEvent( + $.MouseTracker.captureElement, + eventParams.moveName, + eventParams.moveHandler, + true + ); + } + } + } + + + /** + * Stop capturing pointer events to the tracked element. + * @private + * @inner + */ + function releasePointer( tracker, pointerType, pointerCount ) { + var pointsList = tracker.getActivePointersListByType( pointerType ), + eventParams; + + pointsList.captureCount -= (pointerCount || 1); + + if ( pointsList.captureCount === 0 ) { + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + tracker.element.releaseCapture(); + } else { + eventParams = getCaptureEventParams( tracker, $.MouseTracker.havePointerEvents ? 'pointerevent' : pointerType ); + // We emulate mouse capture by hanging listeners on the document object. + // (Note we listen on the capture phase so the captured handlers will get called first) + if (isInIframe && canAccessEvents(window.top)) { + $.removeEvent( + window.top, + eventParams.upName, + eventParams.upHandler, + true + ); + } + $.removeEvent( + $.MouseTracker.captureElement, + eventParams.moveName, + eventParams.moveHandler, + true + ); + $.removeEvent( + $.MouseTracker.captureElement, + eventParams.upName, + eventParams.upHandler, + true + ); + } + } + } + + + /** + * Gets a W3C Pointer Events model compatible pointer type string from a DOM pointer event. + * IE10 used a long integer value, but the W3C specification (and IE11+) use a string "mouse", "touch", "pen", etc. + * @private + * @inner + */ + function getPointerType( event ) { + var pointerTypeStr; + if ( $.MouseTracker.unprefixedPointerEvents ) { + pointerTypeStr = event.pointerType; + } else { + // IE10 + // MSPOINTER_TYPE_TOUCH: 0x00000002 + // MSPOINTER_TYPE_PEN: 0x00000003 + // MSPOINTER_TYPE_MOUSE: 0x00000004 + switch( event.pointerType ) + { + case 0x00000002: + pointerTypeStr = 'touch'; + break; + case 0x00000003: + pointerTypeStr = 'pen'; + break; + case 0x00000004: + pointerTypeStr = 'mouse'; + break; + default: + pointerTypeStr = ''; + } + } + return pointerTypeStr; + } + + + /** + * @private + * @inner + */ + function getMouseAbsolute( event ) { + return $.getMousePosition( event ); + } + + /** + * @private + * @inner + */ + function getMouseRelative( event, element ) { + return getPointRelativeToAbsolute( getMouseAbsolute( event ), element ); + } + + /** + * @private + * @inner + */ + function getPointRelativeToAbsolute( point, element ) { + var offset = $.getElementOffset( element ); + return point.minus( offset ); + } + + /** + * @private + * @inner + */ + function getCenterPoint( point1, point2 ) { + return new $.Point( ( point1.x + point2.x ) / 2, ( point1.y + point2.y ) / 2 ); + } + + +/////////////////////////////////////////////////////////////////////////////// +// Device-specific DOM event handlers +/////////////////////////////////////////////////////////////////////////////// + + /** + * @private + * @inner + */ + function onClick( tracker, event ) { + if ( tracker.clickHandler ) { + $.cancelEvent( event ); + } + } + + + /** + * @private + * @inner + */ + function onDblClick( tracker, event ) { + if ( tracker.dblClickHandler ) { + $.cancelEvent( event ); + } + } + + + /** + * @private + * @inner + */ + function onKeyDown( tracker, event ) { + //$.console.log( "keydown %s %s %s %s %s", event.keyCode, event.charCode, event.ctrlKey, event.shiftKey, event.altKey ); + var propagate; + if ( tracker.keyDownHandler ) { + event = $.getEvent( event ); + propagate = tracker.keyDownHandler( + { + eventSource: tracker, + keyCode: event.keyCode ? event.keyCode : event.charCode, + ctrl: event.ctrlKey, + shift: event.shiftKey, + alt: event.altKey, + meta: event.metaKey, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( !propagate ) { + $.cancelEvent( event ); + } + } + } + + + /** + * @private + * @inner + */ + function onKeyUp( tracker, event ) { + //$.console.log( "keyup %s %s %s %s %s", event.keyCode, event.charCode, event.ctrlKey, event.shiftKey, event.altKey ); + var propagate; + if ( tracker.keyUpHandler ) { + event = $.getEvent( event ); + propagate = tracker.keyUpHandler( + { + eventSource: tracker, + keyCode: event.keyCode ? event.keyCode : event.charCode, + ctrl: event.ctrlKey, + shift: event.shiftKey, + alt: event.altKey, + meta: event.metaKey, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( !propagate ) { + $.cancelEvent( event ); + } + } + } + + + /** + * @private + * @inner + */ + function onKeyPress( tracker, event ) { + //$.console.log( "keypress %s %s %s %s %s", event.keyCode, event.charCode, event.ctrlKey, event.shiftKey, event.altKey ); + var propagate; + if ( tracker.keyHandler ) { + event = $.getEvent( event ); + propagate = tracker.keyHandler( + { + eventSource: tracker, + keyCode: event.keyCode ? event.keyCode : event.charCode, + ctrl: event.ctrlKey, + shift: event.shiftKey, + alt: event.altKey, + meta: event.metaKey, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( !propagate ) { + $.cancelEvent( event ); + } + } + } + + + /** + * @private + * @inner + */ + function onFocus( tracker, event ) { + //console.log( "focus %s", event ); + var propagate; + if ( tracker.focusHandler ) { + event = $.getEvent( event ); + propagate = tracker.focusHandler( + { + eventSource: tracker, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + + + /** + * @private + * @inner + */ + function onBlur( tracker, event ) { + //console.log( "blur %s", event ); + var propagate; + if ( tracker.blurHandler ) { + event = $.getEvent( event ); + propagate = tracker.blurHandler( + { + eventSource: tracker, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + + + /** + * Handler for 'wheel' events + * + * @private + * @inner + */ + function onWheel( tracker, event ) { + handleWheelEvent( tracker, event, event ); + } + + + /** + * Handler for 'mousewheel', 'DOMMouseScroll', and 'MozMousePixelScroll' events + * + * @private + * @inner + */ + function onMouseWheel( tracker, event ) { + event = $.getEvent( event ); + + // Simulate a 'wheel' event + var simulatedEvent = { + target: event.target || event.srcElement, + type: "wheel", + shiftKey: event.shiftKey || false, + clientX: event.clientX, + clientY: event.clientY, + pageX: event.pageX ? event.pageX : event.clientX, + pageY: event.pageY ? event.pageY : event.clientY, + deltaMode: event.type == "MozMousePixelScroll" ? 0 : 1, // 0=pixel, 1=line, 2=page + deltaX: 0, + deltaZ: 0 + }; + + // Calculate deltaY + if ( $.MouseTracker.wheelEventName == "mousewheel" ) { + simulatedEvent.deltaY = - 1 / $.DEFAULT_SETTINGS.pixelsPerWheelLine * event.wheelDelta; + } else { + simulatedEvent.deltaY = event.detail; + } + + handleWheelEvent( tracker, simulatedEvent, event ); + } + + + /** + * Handles 'wheel' events. + * The event may be simulated by the legacy mouse wheel event handler (onMouseWheel()). + * + * @private + * @inner + */ + function handleWheelEvent( tracker, event, originalEvent ) { + var nDelta = 0, + propagate; + + // The nDelta variable is gated to provide smooth z-index scrolling + // since the mouse wheel allows for substantial deltas meant for rapid + // y-index scrolling. + // event.deltaMode: 0=pixel, 1=line, 2=page + // TODO: Deltas in pixel mode should be accumulated then a scroll value computed after $.DEFAULT_SETTINGS.pixelsPerWheelLine threshold reached + nDelta = event.deltaY < 0 ? 1 : -1; + + if ( tracker.scrollHandler ) { + propagate = tracker.scrollHandler( + { + eventSource: tracker, + pointerType: 'mouse', + position: getMouseRelative( event, tracker.element ), + scroll: nDelta, + shift: event.shiftKey, + isTouchEvent: false, + originalEvent: originalEvent, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( originalEvent ); + } + } + } + + + /** + * @private + * @inner + */ + function isParentChild( parent, child ) + { + if ( parent === child ) { + return false; + } + while ( child && child !== parent ) { + child = child.parentNode; + } + return child === parent; + } + + + /** + * Only used on IE 8 + * + * @private + * @inner + */ + function onMouseEnter( tracker, event ) { + event = $.getEvent( event ); + + handleMouseEnter( tracker, event ); + } + + + /** + * @private + * @inner + */ + function onMouseOver( tracker, event ) { + event = $.getEvent( event ); + + if ( event.currentTarget === event.relatedTarget || isParentChild( event.currentTarget, event.relatedTarget ) ) { + return; + } + + handleMouseEnter( tracker, event ); + } + + + /** + * @private + * @inner + */ + function handleMouseEnter( tracker, event ) { + var gPoint = { + id: $.MouseTracker.mousePointerId, + type: 'mouse', + isPrimary: true, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersEnter( tracker, event, [ gPoint ] ); + } + + + /** + * Only used on IE 8 + * + * @private + * @inner + */ + function onMouseLeave( tracker, event ) { + event = $.getEvent( event ); + + handleMouseExit( tracker, event ); + } + + + /** + * @private + * @inner + */ + function onMouseOut( tracker, event ) { + event = $.getEvent( event ); + + if ( event.currentTarget === event.relatedTarget || isParentChild( event.currentTarget, event.relatedTarget ) ) { + return; + } + + handleMouseExit( tracker, event ); + } + + + /** + * @private + * @inner + */ + function handleMouseExit( tracker, event ) { + var gPoint = { + id: $.MouseTracker.mousePointerId, + type: 'mouse', + isPrimary: true, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersExit( tracker, event, [ gPoint ] ); + } + + + /** + * Returns a W3C DOM level 3 standard button value given an event.button property: + * -1 == none, 0 == primary/left, 1 == middle, 2 == secondary/right, 3 == X1/back, 4 == X2/forward, 5 == eraser (pen) + * @private + * @inner + */ + function getStandardizedButton( button ) { + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + // On IE 8, 0 == none, 1 == left, 2 == right, 3 == left and right, 4 == middle, 5 == left and middle, 6 == right and middle, 7 == all three + // TODO: Support chorded (multiple) button presses on IE 8? + if ( button === 1 ) { + return 0; + } else if ( button === 2 ) { + return 2; + } else if ( button === 4 ) { + return 1; + } else { + return -1; + } + } else { + return button; + } + } + + + /** + * @private + * @inner + */ + function onMouseDown( tracker, event ) { + var gPoint; + + event = $.getEvent( event ); + + gPoint = { + id: $.MouseTracker.mousePointerId, + type: 'mouse', + isPrimary: true, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + if ( updatePointersDown( tracker, event, [ gPoint ], getStandardizedButton( event.button ) ) ) { + $.stopEvent( event ); + capturePointer( tracker, 'mouse' ); + } + + if ( tracker.clickHandler || tracker.dblClickHandler || tracker.pressHandler || tracker.dragHandler || tracker.dragEndHandler ) { + $.cancelEvent( event ); + } + } + + + /** + * @private + * @inner + */ + function onMouseUp( tracker, event ) { + handleMouseUp( tracker, event ); + } + + /** + * This handler is attached to the window object (on the capture phase) to emulate mouse capture. + * onMouseUp is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onMouseUpCaptured( tracker, event ) { + handleMouseUp( tracker, event ); + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handleMouseUp( tracker, event ) { + var gPoint; + + event = $.getEvent( event ); + + gPoint = { + id: $.MouseTracker.mousePointerId, + type: 'mouse', + isPrimary: true, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + if ( updatePointersUp( tracker, event, [ gPoint ], getStandardizedButton( event.button ) ) ) { + releasePointer( tracker, 'mouse' ); + } + } + + + /** + * @private + * @inner + */ + function onMouseMove( tracker, event ) { + handleMouseMove( tracker, event ); + } + + + /** + * This handler is attached to the window object (on the capture phase) to emulate mouse capture. + * onMouseMove is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onMouseMoveCaptured( tracker, event ) { + handleMouseMove( tracker, event ); + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handleMouseMove( tracker, event ) { + var gPoint; + + event = $.getEvent( event ); + + gPoint = { + id: $.MouseTracker.mousePointerId, + type: 'mouse', + isPrimary: true, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersMove( tracker, event, [ gPoint ] ); + } + + + /** + * @private + * @inner + */ + function abortTouchContacts( tracker, event, pointsList ) { + var i, + gPointCount = pointsList.getLength(), + abortGPoints = []; + + for ( i = 0; i < gPointCount; i++ ) { + abortGPoints.push( pointsList.getByIndex( i ) ); + } + + if ( abortGPoints.length > 0 ) { + // simulate touchend + updatePointersUp( tracker, event, abortGPoints, 0 ); // 0 means primary button press/release or touch contact + // release pointer capture + pointsList.captureCount = 1; + releasePointer( tracker, 'touch' ); + // simulate touchleave + updatePointersExit( tracker, event, abortGPoints ); + } + } + + + /** + * @private + * @inner + */ + function onTouchStart( tracker, event ) { + var time, + i, + j, + touchCount = event.changedTouches.length, + gPoints = [], + parentGPoints, + pointsList = tracker.getActivePointersListByType( 'touch' ); + + time = $.now(); + + if ( pointsList.getLength() > event.touches.length - touchCount ) { + $.console.warn('Tracked touch contact count doesn\'t match event.touches.length. Removing all tracked touch pointers.'); + abortTouchContacts( tracker, event, pointsList ); + } + + for ( i = 0; i < touchCount; i++ ) { + gPoints.push( { + id: event.changedTouches[ i ].identifier, + type: 'touch', + // isPrimary not set - let the updatePointers functions determine it + currentPos: getMouseAbsolute( event.changedTouches[ i ] ), + currentTime: time + } ); + } + + // simulate touchenter on our tracked element + updatePointersEnter( tracker, event, gPoints ); + + // simulate touchenter on our tracked element's tracked ancestor elements + for ( i = 0; i < MOUSETRACKERS.length; i++ ) { + if ( MOUSETRACKERS[ i ] !== tracker && MOUSETRACKERS[ i ].isTracking() && isParentChild( MOUSETRACKERS[ i ].element, tracker.element ) ) { + parentGPoints = []; + for ( j = 0; j < touchCount; j++ ) { + parentGPoints.push( { + id: event.changedTouches[ j ].identifier, + type: 'touch', + // isPrimary not set - let the updatePointers functions determine it + currentPos: getMouseAbsolute( event.changedTouches[ j ] ), + currentTime: time + } ); + } + updatePointersEnter( MOUSETRACKERS[ i ], event, parentGPoints ); + } + } + + if ( updatePointersDown( tracker, event, gPoints, 0 ) ) { // 0 means primary button press/release or touch contact + $.stopEvent( event ); + capturePointer( tracker, 'touch', touchCount ); + } + + $.cancelEvent( event ); + } + + + /** + * @private + * @inner + */ + function onTouchEnd( tracker, event ) { + handleTouchEnd( tracker, event ); + } + + + /** + * This handler is attached to the window object (on the capture phase) to emulate pointer capture. + * onTouchEnd is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onTouchEndCaptured( tracker, event ) { + handleTouchEnd( tracker, event ); + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handleTouchEnd( tracker, event ) { + var time, + i, + j, + touchCount = event.changedTouches.length, + gPoints = [], + parentGPoints; + + time = $.now(); + + for ( i = 0; i < touchCount; i++ ) { + gPoints.push( { + id: event.changedTouches[ i ].identifier, + type: 'touch', + // isPrimary not set - let the updatePointers functions determine it + currentPos: getMouseAbsolute( event.changedTouches[ i ] ), + currentTime: time + } ); + } + + if ( updatePointersUp( tracker, event, gPoints, 0 ) ) { + releasePointer( tracker, 'touch', touchCount ); + } + + // simulate touchleave on our tracked element + updatePointersExit( tracker, event, gPoints ); + + // simulate touchleave on our tracked element's tracked ancestor elements + for ( i = 0; i < MOUSETRACKERS.length; i++ ) { + if ( MOUSETRACKERS[ i ] !== tracker && MOUSETRACKERS[ i ].isTracking() && isParentChild( MOUSETRACKERS[ i ].element, tracker.element ) ) { + parentGPoints = []; + for ( j = 0; j < touchCount; j++ ) { + parentGPoints.push( { + id: event.changedTouches[ j ].identifier, + type: 'touch', + // isPrimary not set - let the updatePointers functions determine it + currentPos: getMouseAbsolute( event.changedTouches[ j ] ), + currentTime: time + } ); + } + updatePointersExit( MOUSETRACKERS[ i ], event, parentGPoints ); + } + } + + $.cancelEvent( event ); + } + + + /** + * @private + * @inner + */ + function onTouchMove( tracker, event ) { + handleTouchMove( tracker, event ); + } + + + /** + * This handler is attached to the window object (on the capture phase) to emulate pointer capture. + * onTouchMove is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onTouchMoveCaptured( tracker, event ) { + handleTouchMove( tracker, event ); + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handleTouchMove( tracker, event ) { + var i, + touchCount = event.changedTouches.length, + gPoints = []; + + for ( i = 0; i < touchCount; i++ ) { + gPoints.push( { + id: event.changedTouches[ i ].identifier, + type: 'touch', + // isPrimary not set - let the updatePointers functions determine it + currentPos: getMouseAbsolute( event.changedTouches[ i ] ), + currentTime: $.now() + } ); + } + + updatePointersMove( tracker, event, gPoints ); + + $.cancelEvent( event ); + } + + + /** + * @private + * @inner + */ + function onTouchCancel( tracker, event ) { + var i, + touchCount = event.changedTouches.length, + gPoints = [], + pointsList = tracker.getActivePointersListByType( 'touch' ); + + abortTouchContacts( tracker, event, pointsList ); + } + + + /** + * @private + * @inner + */ + function onGestureStart( tracker, event ) { + event.stopPropagation(); + event.preventDefault(); + return false; + } + + + /** + * @private + * @inner + */ + function onGestureChange( tracker, event ) { + event.stopPropagation(); + event.preventDefault(); + return false; + } + + + /** + * @private + * @inner + */ + function onPointerOver( tracker, event ) { + var gPoint; + + if ( event.currentTarget === event.relatedTarget || isParentChild( event.currentTarget, event.relatedTarget ) ) { + return; + } + + gPoint = { + id: event.pointerId, + type: getPointerType( event ), + isPrimary: event.isPrimary, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersEnter( tracker, event, [ gPoint ] ); + } + + + /** + * @private + * @inner + */ + function onPointerOut( tracker, event ) { + var gPoint; + + if ( event.currentTarget === event.relatedTarget || isParentChild( event.currentTarget, event.relatedTarget ) ) { + return; + } + + gPoint = { + id: event.pointerId, + type: getPointerType( event ), + isPrimary: event.isPrimary, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersExit( tracker, event, [ gPoint ] ); + } + + + /** + * @private + * @inner + */ + function onPointerDown( tracker, event ) { + var gPoint; + + gPoint = { + id: event.pointerId, + type: getPointerType( event ), + isPrimary: event.isPrimary, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + if ( updatePointersDown( tracker, event, [ gPoint ], event.button ) ) { + $.stopEvent( event ); + capturePointer( tracker, gPoint.type ); + } + + if ( tracker.clickHandler || tracker.dblClickHandler || tracker.pressHandler || tracker.dragHandler || tracker.dragEndHandler || tracker.pinchHandler ) { + $.cancelEvent( event ); + } + } + + + /** + * @private + * @inner + */ + function onPointerUp( tracker, event ) { + handlePointerUp( tracker, event ); + } + + + /** + * This handler is attached to the window object (on the capture phase) to emulate mouse capture. + * onPointerUp is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onPointerUpCaptured( tracker, event ) { + var pointsList = tracker.getActivePointersListByType( getPointerType( event ) ); + if ( pointsList.getById( event.pointerId ) ) { + handlePointerUp( tracker, event ); + } + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handlePointerUp( tracker, event ) { + var gPoint; + + gPoint = { + id: event.pointerId, + type: getPointerType( event ), + isPrimary: event.isPrimary, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + if ( updatePointersUp( tracker, event, [ gPoint ], event.button ) ) { + releasePointer( tracker, gPoint.type ); + } + } + + + /** + * @private + * @inner + */ + function onPointerMove( tracker, event ) { + handlePointerMove( tracker, event ); + } + + + /** + * This handler is attached to the window object (on the capture phase) to emulate mouse capture. + * onPointerMove is still attached to the tracked element, so stop propagation to avoid processing twice. + * + * @private + * @inner + */ + function onPointerMoveCaptured( tracker, event ) { + var pointsList = tracker.getActivePointersListByType( getPointerType( event ) ); + if ( pointsList.getById( event.pointerId ) ) { + handlePointerMove( tracker, event ); + } + $.stopEvent( event ); + } + + + /** + * @private + * @inner + */ + function handlePointerMove( tracker, event ) { + // Pointer changed coordinates, button state, pressure, tilt, or contact geometry (e.g. width and height) + var gPoint; + + gPoint = { + id: event.pointerId, + type: getPointerType( event ), + isPrimary: event.isPrimary, + currentPos: getMouseAbsolute( event ), + currentTime: $.now() + }; + + updatePointersMove( tracker, event, [ gPoint ] ); + } + + + /** + * @private + * @inner + */ + function onPointerCancel( tracker, event ) { + var gPoint; + + gPoint = { + id: event.pointerId, + type: getPointerType( event ) + }; + + updatePointersCancel( tracker, event, [ gPoint ] ); + } + + +/////////////////////////////////////////////////////////////////////////////// +// Device-agnostic DOM event handlers +/////////////////////////////////////////////////////////////////////////////// + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker.GesturePointList} pointsList + * The GesturePointList to track the pointer in. + * @param {OpenSeadragon.MouseTracker.GesturePoint} gPoint + * Gesture point to track. + * @returns {Number} Number of gesture points in pointsList. + */ + function startTrackingPointer( pointsList, gPoint ) { + + // If isPrimary is not known for the pointer then set it according to our rules: + // true if the first pointer in the gesture, otherwise false + if ( !gPoint.hasOwnProperty( 'isPrimary' ) ) { + if ( pointsList.getLength() === 0 ) { + gPoint.isPrimary = true; + } else { + gPoint.isPrimary = false; + } + } + gPoint.speed = 0; + gPoint.direction = 0; + gPoint.contactPos = gPoint.currentPos; + gPoint.contactTime = gPoint.currentTime; + gPoint.lastPos = gPoint.currentPos; + gPoint.lastTime = gPoint.currentTime; + + return pointsList.add( gPoint ); + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker.GesturePointList} pointsList + * The GesturePointList to stop tracking the pointer on. + * @param {OpenSeadragon.MouseTracker.GesturePoint} gPoint + * Gesture point to stop tracking. + * @returns {Number} Number of gesture points in pointsList. + */ + function stopTrackingPointer( pointsList, gPoint ) { + var listLength, + primaryPoint; + + if ( pointsList.getById( gPoint.id ) ) { + listLength = pointsList.removeById( gPoint.id ); + + // If isPrimary is not known for the pointer and we just removed the primary pointer from the list then we need to set another pointer as primary + if ( !gPoint.hasOwnProperty( 'isPrimary' ) ) { + primaryPoint = pointsList.getPrimary(); + if ( !primaryPoint ) { + primaryPoint = pointsList.getByIndex( 0 ); + if ( primaryPoint ) { + primaryPoint.isPrimary = true; + } + } + } + } else { + listLength = pointsList.getLength(); + } + + return listLength; + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + */ + function updatePointersEnter( tracker, event, gPoints ) { + var pointsList = tracker.getActivePointersListByType( gPoints[ 0 ].type ), + i, + gPointCount = gPoints.length, + curGPoint, + updateGPoint, + propagate; + + for ( i = 0; i < gPointCount; i++ ) { + curGPoint = gPoints[ i ]; + updateGPoint = pointsList.getById( curGPoint.id ); + + if ( updateGPoint ) { + // Already tracking the pointer...update it + updateGPoint.insideElement = true; + updateGPoint.lastPos = updateGPoint.currentPos; + updateGPoint.lastTime = updateGPoint.currentTime; + updateGPoint.currentPos = curGPoint.currentPos; + updateGPoint.currentTime = curGPoint.currentTime; + + curGPoint = updateGPoint; + } else { + // Initialize for tracking and add to the tracking list + curGPoint.captured = false; + curGPoint.insideElementPressed = false; + curGPoint.insideElement = true; + startTrackingPointer( pointsList, curGPoint ); + } + + // Enter + if ( tracker.enterHandler ) { + propagate = tracker.enterHandler( + { + eventSource: tracker, + pointerType: curGPoint.type, + position: getPointRelativeToAbsolute( curGPoint.currentPos, tracker.element ), + buttons: pointsList.buttons, + pointers: tracker.getActivePointerCount(), + insideElementPressed: curGPoint.insideElementPressed, + buttonDownAny: pointsList.buttons !== 0, + isTouchEvent: curGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + */ + function updatePointersExit( tracker, event, gPoints ) { + var delegate = THIS[ tracker.hash ], + pointsList = tracker.getActivePointersListByType( gPoints[ 0 ].type ), + i, + gPointCount = gPoints.length, + curGPoint, + updateGPoint, + propagate; + + for ( i = 0; i < gPointCount; i++ ) { + curGPoint = gPoints[ i ]; + updateGPoint = pointsList.getById( curGPoint.id ); + + if ( updateGPoint ) { + // Already tracking the pointer. If captured then update it, else stop tracking it + if ( updateGPoint.captured ) { + updateGPoint.insideElement = false; + updateGPoint.lastPos = updateGPoint.currentPos; + updateGPoint.lastTime = updateGPoint.currentTime; + updateGPoint.currentPos = curGPoint.currentPos; + updateGPoint.currentTime = curGPoint.currentTime; + } else { + stopTrackingPointer( pointsList, updateGPoint ); + } + + curGPoint = updateGPoint; + } + + // Exit + if ( tracker.exitHandler ) { + propagate = tracker.exitHandler( + { + eventSource: tracker, + pointerType: curGPoint.type, + position: getPointRelativeToAbsolute( curGPoint.currentPos, tracker.element ), + buttons: pointsList.buttons, + pointers: tracker.getActivePointerCount(), + insideElementPressed: updateGPoint ? updateGPoint.insideElementPressed : false, + buttonDownAny: pointsList.buttons !== 0, + isTouchEvent: curGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + * @param {Number} buttonChanged + * The button involved in the event: -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * Note on chorded button presses (a button pressed when another button is already pressed): In the W3C Pointer Events model, + * only one pointerdown/pointerup event combo is fired. Chorded button state changes instead fire pointermove events. + * + * @returns {Boolean} True if pointers should be captured to the tracked element, otherwise false. + */ + function updatePointersDown( tracker, event, gPoints, buttonChanged ) { + var delegate = THIS[ tracker.hash ], + propagate, + pointsList = tracker.getActivePointersListByType( gPoints[ 0 ].type ), + i, + gPointCount = gPoints.length, + curGPoint, + updateGPoint; + + if ( typeof event.buttons !== 'undefined' ) { + pointsList.buttons = event.buttons; + } else { + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + if ( buttonChanged === 0 ) { + // Primary + pointsList.buttons += 1; + } else if ( buttonChanged === 1 ) { + // Aux + pointsList.buttons += 4; + } else if ( buttonChanged === 2 ) { + // Secondary + pointsList.buttons += 2; + } else if ( buttonChanged === 3 ) { + // X1 (Back) + pointsList.buttons += 8; + } else if ( buttonChanged === 4 ) { + // X2 (Forward) + pointsList.buttons += 16; + } else if ( buttonChanged === 5 ) { + // Pen Eraser + pointsList.buttons += 32; + } + } else { + if ( buttonChanged === 0 ) { + // Primary + pointsList.buttons |= 1; + } else if ( buttonChanged === 1 ) { + // Aux + pointsList.buttons |= 4; + } else if ( buttonChanged === 2 ) { + // Secondary + pointsList.buttons |= 2; + } else if ( buttonChanged === 3 ) { + // X1 (Back) + pointsList.buttons |= 8; + } else if ( buttonChanged === 4 ) { + // X2 (Forward) + pointsList.buttons |= 16; + } else if ( buttonChanged === 5 ) { + // Pen Eraser + pointsList.buttons |= 32; + } + } + } + + // Only capture and track primary button, pen, and touch contacts + if ( buttonChanged !== 0 ) { + // Aux Press + if ( tracker.nonPrimaryPressHandler ) { + propagate = tracker.nonPrimaryPressHandler( + { + eventSource: tracker, + pointerType: gPoints[ 0 ].type, + position: getPointRelativeToAbsolute( gPoints[ 0 ].currentPos, tracker.element ), + button: buttonChanged, + buttons: pointsList.buttons, + isTouchEvent: gPoints[ 0 ].type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + return false; + } + + for ( i = 0; i < gPointCount; i++ ) { + curGPoint = gPoints[ i ]; + updateGPoint = pointsList.getById( curGPoint.id ); + + if ( updateGPoint ) { + // Already tracking the pointer...update it + updateGPoint.captured = true; + updateGPoint.insideElementPressed = true; + updateGPoint.insideElement = true; + updateGPoint.contactPos = curGPoint.currentPos; + updateGPoint.contactTime = curGPoint.currentTime; + updateGPoint.lastPos = updateGPoint.currentPos; + updateGPoint.lastTime = updateGPoint.currentTime; + updateGPoint.currentPos = curGPoint.currentPos; + updateGPoint.currentTime = curGPoint.currentTime; + + curGPoint = updateGPoint; + } else { + // Initialize for tracking and add to the tracking list (no pointerover or pointermove event occurred before this) + curGPoint.captured = true; + curGPoint.insideElementPressed = true; + curGPoint.insideElement = true; + startTrackingPointer( pointsList, curGPoint ); + } + + pointsList.contacts++; + //$.console.log('contacts++ ', pointsList.contacts); + + if ( tracker.dragHandler || tracker.dragEndHandler || tracker.pinchHandler ) { + $.MouseTracker.gesturePointVelocityTracker.addPoint( tracker, curGPoint ); + } + + if ( pointsList.contacts === 1 ) { + // Press + if ( tracker.pressHandler ) { + propagate = tracker.pressHandler( + { + eventSource: tracker, + pointerType: curGPoint.type, + position: getPointRelativeToAbsolute( curGPoint.contactPos, tracker.element ), + buttons: pointsList.buttons, + isTouchEvent: curGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } else if ( pointsList.contacts === 2 ) { + if ( tracker.pinchHandler && curGPoint.type === 'touch' ) { + // Initialize for pinch + delegate.pinchGPoints = pointsList.asArray(); + delegate.lastPinchDist = delegate.currentPinchDist = delegate.pinchGPoints[ 0 ].currentPos.distanceTo( delegate.pinchGPoints[ 1 ].currentPos ); + delegate.lastPinchCenter = delegate.currentPinchCenter = getCenterPoint( delegate.pinchGPoints[ 0 ].currentPos, delegate.pinchGPoints[ 1 ].currentPos ); + } + } + } + + return true; + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + * @param {Number} buttonChanged + * The button involved in the event: -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * Note on chorded button presses (a button pressed when another button is already pressed): In the W3C Pointer Events model, + * only one pointerdown/pointerup event combo is fired. Chorded button state changes instead fire pointermove events. + * + * @returns {Boolean} True if pointer capture should be released from the tracked element, otherwise false. + */ + function updatePointersUp( tracker, event, gPoints, buttonChanged ) { + var delegate = THIS[ tracker.hash ], + pointsList = tracker.getActivePointersListByType( gPoints[ 0 ].type ), + propagate, + insideElementReleased, + releasePoint, + releaseTime, + i, + gPointCount = gPoints.length, + curGPoint, + updateGPoint, + releaseCapture = false, + wasCaptured = false, + quick; + + if ( typeof event.buttons !== 'undefined' ) { + pointsList.buttons = event.buttons; + } else { + if ( $.Browser.vendor === $.BROWSERS.IE && $.Browser.version < 9 ) { + if ( buttonChanged === 0 ) { + // Primary + pointsList.buttons -= 1; + } else if ( buttonChanged === 1 ) { + // Aux + pointsList.buttons -= 4; + } else if ( buttonChanged === 2 ) { + // Secondary + pointsList.buttons -= 2; + } else if ( buttonChanged === 3 ) { + // X1 (Back) + pointsList.buttons -= 8; + } else if ( buttonChanged === 4 ) { + // X2 (Forward) + pointsList.buttons -= 16; + } else if ( buttonChanged === 5 ) { + // Pen Eraser + pointsList.buttons -= 32; + } + } else { + if ( buttonChanged === 0 ) { + // Primary + pointsList.buttons ^= ~1; + } else if ( buttonChanged === 1 ) { + // Aux + pointsList.buttons ^= ~4; + } else if ( buttonChanged === 2 ) { + // Secondary + pointsList.buttons ^= ~2; + } else if ( buttonChanged === 3 ) { + // X1 (Back) + pointsList.buttons ^= ~8; + } else if ( buttonChanged === 4 ) { + // X2 (Forward) + pointsList.buttons ^= ~16; + } else if ( buttonChanged === 5 ) { + // Pen Eraser + pointsList.buttons ^= ~32; + } + } + } + + // Only capture and track primary button, pen, and touch contacts + if ( buttonChanged !== 0 ) { + // Aux Release + if ( tracker.nonPrimaryReleaseHandler ) { + propagate = tracker.nonPrimaryReleaseHandler( + { + eventSource: tracker, + pointerType: gPoints[ 0 ].type, + position: getPointRelativeToAbsolute( gPoints[ 0 ].currentPos, tracker.element ), + button: buttonChanged, + buttons: pointsList.buttons, + isTouchEvent: gPoints[ 0 ].type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + return false; + } + + for ( i = 0; i < gPointCount; i++ ) { + curGPoint = gPoints[ i ]; + updateGPoint = pointsList.getById( curGPoint.id ); + + if ( updateGPoint ) { + // Update the pointer, stop tracking it if not still in this element + if ( updateGPoint.captured ) { + updateGPoint.captured = false; + releaseCapture = true; + wasCaptured = true; + } + updateGPoint.lastPos = updateGPoint.currentPos; + updateGPoint.lastTime = updateGPoint.currentTime; + updateGPoint.currentPos = curGPoint.currentPos; + updateGPoint.currentTime = curGPoint.currentTime; + if ( !updateGPoint.insideElement ) { + stopTrackingPointer( pointsList, updateGPoint ); + } + + releasePoint = updateGPoint.currentPos; + releaseTime = updateGPoint.currentTime; + + if ( wasCaptured ) { + // Pointer was activated in our element but could have been removed in any element since events are captured to our element + + pointsList.contacts--; + //$.console.log('contacts-- ', pointsList.contacts); + + if ( tracker.dragHandler || tracker.dragEndHandler || tracker.pinchHandler ) { + $.MouseTracker.gesturePointVelocityTracker.removePoint( tracker, updateGPoint ); + } + + if ( pointsList.contacts === 0 ) { + + // Release (pressed in our element) + if ( tracker.releaseHandler ) { + propagate = tracker.releaseHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( releasePoint, tracker.element ), + buttons: pointsList.buttons, + insideElementPressed: updateGPoint.insideElementPressed, + insideElementReleased: updateGPoint.insideElement, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + // Drag End + if ( tracker.dragEndHandler && !updateGPoint.currentPos.equals( updateGPoint.contactPos ) ) { + propagate = tracker.dragEndHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( updateGPoint.currentPos, tracker.element ), + speed: updateGPoint.speed, + direction: updateGPoint.direction, + shift: event.shiftKey, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + // Click / Double-Click + if ( ( tracker.clickHandler || tracker.dblClickHandler ) && updateGPoint.insideElement ) { + quick = releaseTime - updateGPoint.contactTime <= tracker.clickTimeThreshold && + updateGPoint.contactPos.distanceTo( releasePoint ) <= tracker.clickDistThreshold; + + // Click + if ( tracker.clickHandler ) { + propagate = tracker.clickHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( updateGPoint.currentPos, tracker.element ), + quick: quick, + shift: event.shiftKey, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + // Double-Click + if ( tracker.dblClickHandler && quick ) { + pointsList.clicks++; + if ( pointsList.clicks === 1 ) { + delegate.lastClickPos = releasePoint; + /*jshint loopfunc:true*/ + delegate.dblClickTimeOut = setTimeout( function() { + pointsList.clicks = 0; + }, tracker.dblClickTimeThreshold ); + /*jshint loopfunc:false*/ + } else if ( pointsList.clicks === 2 ) { + clearTimeout( delegate.dblClickTimeOut ); + pointsList.clicks = 0; + if ( delegate.lastClickPos.distanceTo( releasePoint ) <= tracker.dblClickDistThreshold ) { + propagate = tracker.dblClickHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( updateGPoint.currentPos, tracker.element ), + shift: event.shiftKey, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + delegate.lastClickPos = null; + } + } + } + } else if ( pointsList.contacts === 2 ) { + if ( tracker.pinchHandler && updateGPoint.type === 'touch' ) { + // Reset for pinch + delegate.pinchGPoints = pointsList.asArray(); + delegate.lastPinchDist = delegate.currentPinchDist = delegate.pinchGPoints[ 0 ].currentPos.distanceTo( delegate.pinchGPoints[ 1 ].currentPos ); + delegate.lastPinchCenter = delegate.currentPinchCenter = getCenterPoint( delegate.pinchGPoints[ 0 ].currentPos, delegate.pinchGPoints[ 1 ].currentPos ); + } + } + } else { + // Pointer was activated in another element but removed in our element + + // Release (pressed in another element) + if ( tracker.releaseHandler ) { + propagate = tracker.releaseHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( releasePoint, tracker.element ), + buttons: pointsList.buttons, + insideElementPressed: updateGPoint.insideElementPressed, + insideElementReleased: updateGPoint.insideElement, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + } + } + + return releaseCapture; + } + + + /** + * Call when pointer(s) change coordinates, button state, pressure, tilt, or contact geometry (e.g. width and height) + * + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + */ + function updatePointersMove( tracker, event, gPoints ) { + var delegate = THIS[ tracker.hash ], + pointsList = tracker.getActivePointersListByType( gPoints[ 0 ].type ), + i, + gPointCount = gPoints.length, + curGPoint, + updateGPoint, + gPointArray, + delta, + propagate; + + if ( typeof event.buttons !== 'undefined' ) { + pointsList.buttons = event.buttons; + } + + for ( i = 0; i < gPointCount; i++ ) { + curGPoint = gPoints[ i ]; + updateGPoint = pointsList.getById( curGPoint.id ); + + if ( updateGPoint ) { + // Already tracking the pointer...update it + if ( curGPoint.hasOwnProperty( 'isPrimary' ) ) { + updateGPoint.isPrimary = curGPoint.isPrimary; + } + updateGPoint.lastPos = updateGPoint.currentPos; + updateGPoint.lastTime = updateGPoint.currentTime; + updateGPoint.currentPos = curGPoint.currentPos; + updateGPoint.currentTime = curGPoint.currentTime; + } else { + // Initialize for tracking and add to the tracking list (no pointerover or pointerdown event occurred before this) + curGPoint.captured = false; + curGPoint.insideElementPressed = false; + curGPoint.insideElement = true; + startTrackingPointer( pointsList, curGPoint ); + } + } + + // Stop (mouse only) + if ( tracker.stopHandler && gPoints[ 0 ].type === 'mouse' ) { + clearTimeout( tracker.stopTimeOut ); + tracker.stopTimeOut = setTimeout( function() { + handlePointerStop( tracker, event, gPoints[ 0 ].type ); + }, tracker.stopDelay ); + } + + if ( pointsList.contacts === 0 ) { + // Move (no contacts: hovering mouse or other hover-capable device) + if ( tracker.moveHandler ) { + propagate = tracker.moveHandler( + { + eventSource: tracker, + pointerType: gPoints[ 0 ].type, + position: getPointRelativeToAbsolute( gPoints[ 0 ].currentPos, tracker.element ), + buttons: pointsList.buttons, + isTouchEvent: gPoints[ 0 ].type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } else if ( pointsList.contacts === 1 ) { + // Move (1 contact) + if ( tracker.moveHandler ) { + updateGPoint = pointsList.asArray()[ 0 ]; + propagate = tracker.moveHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( updateGPoint.currentPos, tracker.element ), + buttons: pointsList.buttons, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + // Drag + if ( tracker.dragHandler ) { + updateGPoint = pointsList.asArray()[ 0 ]; + delta = updateGPoint.currentPos.minus( updateGPoint.lastPos ); + propagate = tracker.dragHandler( + { + eventSource: tracker, + pointerType: updateGPoint.type, + position: getPointRelativeToAbsolute( updateGPoint.currentPos, tracker.element ), + buttons: pointsList.buttons, + delta: delta, + speed: updateGPoint.speed, + direction: updateGPoint.direction, + shift: event.shiftKey, + isTouchEvent: updateGPoint.type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } else if ( pointsList.contacts === 2 ) { + // Move (2 contacts, use center) + if ( tracker.moveHandler ) { + gPointArray = pointsList.asArray(); + propagate = tracker.moveHandler( + { + eventSource: tracker, + pointerType: gPointArray[ 0 ].type, + position: getPointRelativeToAbsolute( getCenterPoint( gPointArray[ 0 ].currentPos, gPointArray[ 1 ].currentPos ), tracker.element ), + buttons: pointsList.buttons, + isTouchEvent: gPointArray[ 0 ].type === 'touch', + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + + // Pinch + if ( tracker.pinchHandler && gPoints[ 0 ].type === 'touch' ) { + delta = delegate.pinchGPoints[ 0 ].currentPos.distanceTo( delegate.pinchGPoints[ 1 ].currentPos ); + if ( delta != delegate.currentPinchDist ) { + delegate.lastPinchDist = delegate.currentPinchDist; + delegate.currentPinchDist = delta; + delegate.lastPinchCenter = delegate.currentPinchCenter; + delegate.currentPinchCenter = getCenterPoint( delegate.pinchGPoints[ 0 ].currentPos, delegate.pinchGPoints[ 1 ].currentPos ); + propagate = tracker.pinchHandler( + { + eventSource: tracker, + pointerType: 'touch', + gesturePoints: delegate.pinchGPoints, + lastCenter: getPointRelativeToAbsolute( delegate.lastPinchCenter, tracker.element ), + center: getPointRelativeToAbsolute( delegate.currentPinchCenter, tracker.element ), + lastDistance: delegate.lastPinchDist, + distance: delegate.currentPinchDist, + shift: event.shiftKey, + originalEvent: event, + preventDefaultAction: false, + userData: tracker.userData + } + ); + if ( propagate === false ) { + $.cancelEvent( event ); + } + } + } + } + } + + + /** + * @function + * @private + * @inner + * @param {OpenSeadragon.MouseTracker} tracker + * A reference to the MouseTracker instance. + * @param {Object} event + * A reference to the originating DOM event. + * @param {Array.} gPoints + * Gesture points associated with the event. + */ + function updatePointersCancel( tracker, event, gPoints ) { + updatePointersUp( tracker, event, gPoints, 0 ); + updatePointersExit( tracker, event, gPoints ); + } + + + /** + * @private + * @inner + */ + function handlePointerStop( tracker, originalMoveEvent, pointerType ) { + if ( tracker.stopHandler ) { + tracker.stopHandler( { + eventSource: tracker, + pointerType: pointerType, + position: getMouseRelative( originalMoveEvent, tracker.element ), + buttons: tracker.getActivePointersListByType( pointerType ).buttons, + isTouchEvent: pointerType === 'touch', + originalEvent: originalMoveEvent, + preventDefaultAction: false, + userData: tracker.userData + } ); + } + } + + // True if inside an iframe, otherwise false. + // @member {Boolean} isInIframe + // @private + // @inner + var isInIframe = (function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + })(); + + // @function + // @private + // @inner + // @returns {Boolean} True if the target has access rights to events, otherwise false. + function canAccessEvents (target) { + try { + return target.addEventListener && target.removeEventListener; + } catch (e) { + return false; + } + } + +} ( OpenSeadragon ) ); + +/* + * OpenSeadragon - Control + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * An enumeration of supported locations where controls can be anchored. + * The anchoring is always relative to the container. + * @member ControlAnchor + * @memberof OpenSeadragon + * @static + * @type {Object} + * @property {Number} NONE + * @property {Number} TOP_LEFT + * @property {Number} TOP_RIGHT + * @property {Number} BOTTOM_LEFT + * @property {Number} BOTTOM_RIGHT + * @property {Number} ABSOLUTE + */ +$.ControlAnchor = { + NONE: 0, + TOP_LEFT: 1, + TOP_RIGHT: 2, + BOTTOM_RIGHT: 3, + BOTTOM_LEFT: 4, + ABSOLUTE: 5 +}; + +/** + * @class Control + * @classdesc A Control represents any interface element which is meant to allow the user + * to interact with the zoomable interface. Any control can be anchored to any + * element. + * + * @memberof OpenSeadragon + * @param {Element} element - the control element to be anchored in the container. + * @param {Object } options - All required and optional settings for configuring a control element. + * @param {OpenSeadragon.ControlAnchor} [options.anchor=OpenSeadragon.ControlAnchor.NONE] - the position of the control + * relative to the container. + * @param {Boolean} [options.attachToViewer=true] - Whether the control should be added directly to the viewer, or + * directly to the container + * @param {Boolean} [options.autoFade=true] - Whether the control should have the autofade behavior + * @param {Element} container - the element to control will be anchored too. + */ +$.Control = function ( element, options, container ) { + var parent = element.parentNode; + if (typeof options === 'number') + { + $.console.error("Passing an anchor directly into the OpenSeadragon.Control constructor is deprecated; " + + "please use an options object instead. " + + "Support for this deprecated variant is scheduled for removal in December 2013"); + options = {anchor: options}; + } + options.attachToViewer = (typeof options.attachToViewer === 'undefined') ? true : options.attachToViewer; + /** + * True if the control should have autofade behavior. + * @member {Boolean} autoFade + * @memberof OpenSeadragon.Control# + */ + this.autoFade = (typeof options.autoFade === 'undefined') ? true : options.autoFade; + /** + * The element providing the user interface with some type of control (e.g. a zoom-in button). + * @member {Element} element + * @memberof OpenSeadragon.Control# + */ + this.element = element; + /** + * The position of the Control relative to its container. + * @member {OpenSeadragon.ControlAnchor} anchor + * @memberof OpenSeadragon.Control# + */ + this.anchor = options.anchor; + /** + * The Control's containing element. + * @member {Element} container + * @memberof OpenSeadragon.Control# + */ + this.container = container; + /** + * A neutral element surrounding the control element. + * @member {Element} wrapper + * @memberof OpenSeadragon.Control# + */ + if ( this.anchor == $.ControlAnchor.ABSOLUTE ) { + this.wrapper = $.makeNeutralElement( "div" ); + this.wrapper.style.position = "absolute"; + this.wrapper.style.top = typeof ( options.top ) == "number" ? ( options.top + 'px' ) : options.top; + this.wrapper.style.left = typeof ( options.left ) == "number" ? (options.left + 'px' ) : options.left; + this.wrapper.style.height = typeof ( options.height ) == "number" ? ( options.height + 'px' ) : options.height; + this.wrapper.style.width = typeof ( options.width ) == "number" ? ( options.width + 'px' ) : options.width; + this.wrapper.style.margin = "0px"; + this.wrapper.style.padding = "0px"; + + this.element.style.position = "relative"; + this.element.style.top = "0px"; + this.element.style.left = "0px"; + this.element.style.height = "100%"; + this.element.style.width = "100%"; + } else { + this.wrapper = $.makeNeutralElement( "div" ); + this.wrapper.style.display = "inline-block"; + if ( this.anchor == $.ControlAnchor.NONE ) { + // IE6 fix + this.wrapper.style.width = this.wrapper.style.height = "100%"; + } + } + this.wrapper.appendChild( this.element ); + + if (options.attachToViewer ) { + if ( this.anchor == $.ControlAnchor.TOP_RIGHT || + this.anchor == $.ControlAnchor.BOTTOM_RIGHT ) { + this.container.insertBefore( + this.wrapper, + this.container.firstChild + ); + } else { + this.container.appendChild( this.wrapper ); + } + } else { + parent.appendChild( this.wrapper ); + } +}; + +/** @lends OpenSeadragon.Control.prototype */ +$.Control.prototype = { + + /** + * Removes the control from the container. + * @function + */ + destroy: function() { + this.wrapper.removeChild( this.element ); + this.container.removeChild( this.wrapper ); + }, + + /** + * Determines if the control is currently visible. + * @function + * @return {Boolean} true if currenly visible, false otherwise. + */ + isVisible: function() { + return this.wrapper.style.display != "none"; + }, + + /** + * Toggles the visibility of the control. + * @function + * @param {Boolean} visible - true to make visible, false to hide. + */ + setVisible: function( visible ) { + this.wrapper.style.display = visible ? + ( this.anchor == $.ControlAnchor.ABSOLUTE ? 'block' : 'inline-block' ) : + "none"; + }, + + /** + * Sets the opacity level for the control. + * @function + * @param {Number} opactiy - a value between 1 and 0 inclusively. + */ + setOpacity: function( opacity ) { + if ( this.element[ $.SIGNAL ] && $.Browser.vendor == $.BROWSERS.IE ) { + $.setElementOpacity( this.element, opacity, true ); + } else { + $.setElementOpacity( this.wrapper, opacity, true ); + } + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - ControlDock + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + /** + * @class ControlDock + * @classdesc Provides a container element (a <form> element) with support for the layout of control elements. + * + * @memberof OpenSeadragon + */ + $.ControlDock = function( options ){ + var layouts = [ 'topleft', 'topright', 'bottomright', 'bottomleft'], + layout, + i; + + $.extend( true, this, { + id: 'controldock-'+$.now()+'-'+Math.floor(Math.random()*1000000), + container: $.makeNeutralElement( 'div' ), + controls: [] + }, options ); + + // Disable the form's submit; otherwise button clicks and return keys + // can trigger it. + this.container.onsubmit = function() { + return false; + }; + + if( this.element ){ + this.element = $.getElement( this.element ); + this.element.appendChild( this.container ); + this.element.style.position = 'relative'; + this.container.style.width = '100%'; + this.container.style.height = '100%'; + } + + for( i = 0; i < layouts.length; i++ ){ + layout = layouts[ i ]; + this.controls[ layout ] = $.makeNeutralElement( "div" ); + this.controls[ layout ].style.position = 'absolute'; + if ( layout.match( 'left' ) ){ + this.controls[ layout ].style.left = '0px'; + } + if ( layout.match( 'right' ) ){ + this.controls[ layout ].style.right = '0px'; + } + if ( layout.match( 'top' ) ){ + this.controls[ layout ].style.top = '0px'; + } + if ( layout.match( 'bottom' ) ){ + this.controls[ layout ].style.bottom = '0px'; + } + } + + this.container.appendChild( this.controls.topleft ); + this.container.appendChild( this.controls.topright ); + this.container.appendChild( this.controls.bottomright ); + this.container.appendChild( this.controls.bottomleft ); + }; + + /** @lends OpenSeadragon.ControlDock.prototype */ + $.ControlDock.prototype = { + + /** + * @function + */ + addControl: function ( element, controlOptions ) { + element = $.getElement( element ); + var div = null; + + if ( getControlIndex( this, element ) >= 0 ) { + return; // they're trying to add a duplicate control + } + + switch ( controlOptions.anchor ) { + case $.ControlAnchor.TOP_RIGHT: + div = this.controls.topright; + element.style.position = "relative"; + element.style.paddingRight = "0px"; + element.style.paddingTop = "0px"; + break; + case $.ControlAnchor.BOTTOM_RIGHT: + div = this.controls.bottomright; + element.style.position = "relative"; + element.style.paddingRight = "0px"; + element.style.paddingBottom = "0px"; + break; + case $.ControlAnchor.BOTTOM_LEFT: + div = this.controls.bottomleft; + element.style.position = "relative"; + element.style.paddingLeft = "0px"; + element.style.paddingBottom = "0px"; + break; + case $.ControlAnchor.TOP_LEFT: + div = this.controls.topleft; + element.style.position = "relative"; + element.style.paddingLeft = "0px"; + element.style.paddingTop = "0px"; + break; + case $.ControlAnchor.ABSOLUTE: + div = this.container; + element.style.margin = "0px"; + element.style.padding = "0px"; + break; + default: + case $.ControlAnchor.NONE: + div = this.container; + element.style.margin = "0px"; + element.style.padding = "0px"; + break; + } + + this.controls.push( + new $.Control( element, controlOptions, div ) + ); + element.style.display = "inline-block"; + }, + + + /** + * @function + * @return {OpenSeadragon.ControlDock} Chainable. + */ + removeControl: function ( element ) { + element = $.getElement( element ); + var i = getControlIndex( this, element ); + + if ( i >= 0 ) { + this.controls[ i ].destroy(); + this.controls.splice( i, 1 ); + } + + return this; + }, + + /** + * @function + * @return {OpenSeadragon.ControlDock} Chainable. + */ + clearControls: function () { + while ( this.controls.length > 0 ) { + this.controls.pop().destroy(); + } + + return this; + }, + + + /** + * @function + * @return {Boolean} + */ + areControlsEnabled: function () { + var i; + + for ( i = this.controls.length - 1; i >= 0; i-- ) { + if ( this.controls[ i ].isVisible() ) { + return true; + } + } + + return false; + }, + + + /** + * @function + * @return {OpenSeadragon.ControlDock} Chainable. + */ + setControlsEnabled: function( enabled ) { + var i; + + for ( i = this.controls.length - 1; i >= 0; i-- ) { + this.controls[ i ].setVisible( enabled ); + } + + return this; + } + + }; + + + /////////////////////////////////////////////////////////////////////////////// + // Utility methods + /////////////////////////////////////////////////////////////////////////////// + function getControlIndex( dock, element ) { + var controls = dock.controls, + i; + + for ( i = controls.length - 1; i >= 0; i-- ) { + if ( controls[ i ].element == element ) { + return i; + } + } + + return -1; + } + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Placement + * + * Copyright (C) 2010-2016 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function($) { + + /** + * An enumeration of positions to anchor an element. + * @member Placement + * @memberOf OpenSeadragon + * @static + * @readonly + * @property {OpenSeadragon.Placement} CENTER + * @property {OpenSeadragon.Placement} TOP_LEFT + * @property {OpenSeadragon.Placement} TOP + * @property {OpenSeadragon.Placement} TOP_RIGHT + * @property {OpenSeadragon.Placement} RIGHT + * @property {OpenSeadragon.Placement} BOTTOM_RIGHT + * @property {OpenSeadragon.Placement} BOTTOM + * @property {OpenSeadragon.Placement} BOTTOM_LEFT + * @property {OpenSeadragon.Placement} LEFT + */ + $.Placement = $.freezeObject({ + CENTER: 0, + TOP_LEFT: 1, + TOP: 2, + TOP_RIGHT: 3, + RIGHT: 4, + BOTTOM_RIGHT: 5, + BOTTOM: 6, + BOTTOM_LEFT: 7, + LEFT: 8, + properties: { + 0: { + isLeft: false, + isHorizontallyCentered: true, + isRight: false, + isTop: false, + isVerticallyCentered: true, + isBottom: false + }, + 1: { + isLeft: true, + isHorizontallyCentered: false, + isRight: false, + isTop: true, + isVerticallyCentered: false, + isBottom: false + }, + 2: { + isLeft: false, + isHorizontallyCentered: true, + isRight: false, + isTop: true, + isVerticallyCentered: false, + isBottom: false + }, + 3: { + isLeft: false, + isHorizontallyCentered: false, + isRight: true, + isTop: true, + isVerticallyCentered: false, + isBottom: false + }, + 4: { + isLeft: false, + isHorizontallyCentered: false, + isRight: true, + isTop: false, + isVerticallyCentered: true, + isBottom: false + }, + 5: { + isLeft: false, + isHorizontallyCentered: false, + isRight: true, + isTop: false, + isVerticallyCentered: false, + isBottom: true + }, + 6: { + isLeft: false, + isHorizontallyCentered: true, + isRight: false, + isTop: false, + isVerticallyCentered: false, + isBottom: true + }, + 7: { + isLeft: true, + isHorizontallyCentered: false, + isRight: false, + isTop: false, + isVerticallyCentered: false, + isBottom: true + }, + 8: { + isLeft: true, + isHorizontallyCentered: false, + isRight: false, + isTop: false, + isVerticallyCentered: true, + isBottom: false + } + } + }); + +}(OpenSeadragon)); + +/* + * OpenSeadragon - Viewer + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +// dictionary from hash to private properties +var THIS = {}; +var nextHash = 1; + +/** + * + * The main point of entry into creating a zoomable image on the page.
+ *
+ * We have provided an idiomatic javascript constructor which takes + * a single object, but still support the legacy positional arguments.
+ *
+ * The options below are given in order that they appeared in the constructor + * as arguments and we translate a positional call into an idiomatic call.
+ *
+ * To create a viewer, you can use either of this methods:
+ *
    + *
  • var viewer = new OpenSeadragon.Viewer(options);
  • + *
  • var viewer = OpenSeadragon(options);
  • + *
+ * @class Viewer + * @classdesc The main OpenSeadragon viewer class. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.EventSource + * @extends OpenSeadragon.ControlDock + * @param {OpenSeadragon.Options} options - Viewer options. + * + **/ +$.Viewer = function( options ) { + + var args = arguments, + _this = this, + i; + + + //backward compatibility for positional args while prefering more + //idiomatic javascript options object as the only argument + if( !$.isPlainObject( options ) ){ + options = { + id: args[ 0 ], + xmlPath: args.length > 1 ? args[ 1 ] : undefined, + prefixUrl: args.length > 2 ? args[ 2 ] : undefined, + controls: args.length > 3 ? args[ 3 ] : undefined, + overlays: args.length > 4 ? args[ 4 ] : undefined + }; + } + + //options.config and the general config argument are deprecated + //in favor of the more direct specification of optional settings + //being pass directly on the options object + if ( options.config ){ + $.extend( true, options, options.config ); + delete options.config; + } + + //Public properties + //Allow the options object to override global defaults + $.extend( true, this, { + + //internal state and dom identifiers + id: options.id, + hash: options.hash || nextHash++, + + //dom nodes + /** + * The parent element of this Viewer instance, passed in when the Viewer was created. + * @member {Element} element + * @memberof OpenSeadragon.Viewer# + */ + element: null, + /** + * A <div> element (provided by {@link OpenSeadragon.ControlDock}), the base element of this Viewer instance.

+ * Child element of {@link OpenSeadragon.Viewer#element}. + * @member {Element} container + * @memberof OpenSeadragon.Viewer# + */ + container: null, + /** + * A <div> element, the element where user-input events are handled for panning and zooming.

+ * Child element of {@link OpenSeadragon.Viewer#container}, + * positioned on top of {@link OpenSeadragon.Viewer#keyboardCommandArea}.

+ * The parent of {@link OpenSeadragon.Drawer#canvas} instances. + * @member {Element} canvas + * @memberof OpenSeadragon.Viewer# + */ + canvas: null, + + // Overlays list. An overlay allows to add html on top of the viewer. + overlays: [], + // Container inside the canvas where overlays are drawn. + overlaysContainer: null, + + //private state properties + previousBody: [], + + //This was originally initialized in the constructor and so could never + //have anything in it. now it can because we allow it to be specified + //in the options and is only empty by default if not specified. Also + //this array was returned from get_controls which I find confusing + //since this object has a controls property which is treated in other + //functions like clearControls. I'm removing the accessors. + customControls: [], + + //These are originally not part options but declared as members + //in initialize. It's still considered idiomatic to put them here + source: null, + /** + * Handles rendering of tiles in the viewer. Created for each TileSource opened. + * @member {OpenSeadragon.Drawer} drawer + * @memberof OpenSeadragon.Viewer# + */ + drawer: null, + world: null, + /** + * Handles coordinate-related functionality - zoom, pan, rotation, etc. Created for each TileSource opened. + * @member {OpenSeadragon.Viewport} viewport + * @memberof OpenSeadragon.Viewer# + */ + viewport: null, + /** + * @member {OpenSeadragon.Navigator} navigator + * @memberof OpenSeadragon.Viewer# + */ + navigator: null, + + //A collection viewport is a separate viewport used to provide + //simultaneous rendering of sets of tiles + collectionViewport: null, + collectionDrawer: null, + + //UI image resources + //TODO: rename navImages to uiImages + navImages: null, + + //interface button controls + buttons: null, + + //TODO: this is defunct so safely remove it + profiler: null + + }, $.DEFAULT_SETTINGS, options ); + + if ( typeof( this.hash) === "undefined" ) { + throw new Error("A hash must be defined, either by specifying options.id or options.hash."); + } + if ( typeof( THIS[ this.hash ] ) !== "undefined" ) { + // We don't want to throw an error here, as the user might have discarded + // the previous viewer with the same hash and now want to recreate it. + $.console.warn("Hash " + this.hash + " has already been used."); + } + + //Private state properties + THIS[ this.hash ] = { + "fsBoundsDelta": new $.Point( 1, 1 ), + "prevContainerSize": null, + "animating": false, + "forceRedraw": false, + "mouseInside": false, + "group": null, + // whether we should be continuously zooming + "zooming": false, + // how much we should be continuously zooming by + "zoomFactor": null, + "lastZoomTime": null, + "fullPage": false, + "onfullscreenchange": null + }; + + this._sequenceIndex = 0; + this._firstOpen = true; + this._updateRequestId = null; + this._loadQueue = []; + this.currentOverlays = []; + + this._lastScrollTime = $.now(); // variable used to help normalize the scroll event speed of different devices + + //Inherit some behaviors and properties + $.EventSource.call( this ); + + this.addHandler( 'open-failed', function ( event ) { + var msg = $.getString( "Errors.OpenFailed", event.eventSource, event.message); + _this._showMessage( msg ); + }); + + $.ControlDock.call( this, options ); + + //Deal with tile sources + if ( this.xmlPath ){ + //Deprecated option. Now it is preferred to use the tileSources option + this.tileSources = [ this.xmlPath ]; + } + + this.element = this.element || document.getElementById( this.id ); + this.canvas = $.makeNeutralElement( "div" ); + + this.canvas.className = "openseadragon-canvas"; + (function( style ){ + style.width = "100%"; + style.height = "100%"; + style.overflow = "hidden"; + style.position = "absolute"; + style.top = "0px"; + style.left = "0px"; + }(this.canvas.style)); + $.setElementTouchActionNone( this.canvas ); + if (options.tabIndex !== "") { + this.canvas.tabIndex = (options.tabIndex === undefined ? 0 : options.tabIndex); + } + + //the container is created through applying the ControlDock constructor above + this.container.className = "openseadragon-container"; + (function( style ){ + style.width = "100%"; + style.height = "100%"; + style.position = "relative"; + style.overflow = "hidden"; + style.left = "0px"; + style.top = "0px"; + style.textAlign = "left"; // needed to protect against + }( this.container.style )); + + this.container.insertBefore( this.canvas, this.container.firstChild ); + this.element.appendChild( this.container ); + + //Used for toggling between fullscreen and default container size + //TODO: these can be closure private and shared across Viewer + // instances. + this.bodyWidth = document.body.style.width; + this.bodyHeight = document.body.style.height; + this.bodyOverflow = document.body.style.overflow; + this.docOverflow = document.documentElement.style.overflow; + + this.innerTracker = new $.MouseTracker({ + element: this.canvas, + startDisabled: this.mouseNavEnabled ? false : true, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + dblClickTimeThreshold: this.dblClickTimeThreshold, + dblClickDistThreshold: this.dblClickDistThreshold, + keyDownHandler: $.delegate( this, onCanvasKeyDown ), + keyHandler: $.delegate( this, onCanvasKeyPress ), + clickHandler: $.delegate( this, onCanvasClick ), + dblClickHandler: $.delegate( this, onCanvasDblClick ), + dragHandler: $.delegate( this, onCanvasDrag ), + dragEndHandler: $.delegate( this, onCanvasDragEnd ), + enterHandler: $.delegate( this, onCanvasEnter ), + exitHandler: $.delegate( this, onCanvasExit ), + pressHandler: $.delegate( this, onCanvasPress ), + releaseHandler: $.delegate( this, onCanvasRelease ), + nonPrimaryPressHandler: $.delegate( this, onCanvasNonPrimaryPress ), + nonPrimaryReleaseHandler: $.delegate( this, onCanvasNonPrimaryRelease ), + scrollHandler: $.delegate( this, onCanvasScroll ), + pinchHandler: $.delegate( this, onCanvasPinch ) + }); + + this.outerTracker = new $.MouseTracker({ + element: this.container, + startDisabled: this.mouseNavEnabled ? false : true, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + dblClickTimeThreshold: this.dblClickTimeThreshold, + dblClickDistThreshold: this.dblClickDistThreshold, + enterHandler: $.delegate( this, onContainerEnter ), + exitHandler: $.delegate( this, onContainerExit ) + }); + + if( this.toolbar ){ + this.toolbar = new $.ControlDock({ element: this.toolbar }); + } + + this.bindStandardControls(); + + THIS[ this.hash ].prevContainerSize = _getSafeElemSize( this.container ); + + // Create the world + this.world = new $.World({ + viewer: this + }); + + this.world.addHandler('add-item', function(event) { + // For backwards compatibility, we maintain the source property + _this.source = _this.world.getItemAt(0).source; + + THIS[ _this.hash ].forceRedraw = true; + + if (!_this._updateRequestId) { + _this._updateRequestId = scheduleUpdate( _this, updateMulti ); + } + }); + + this.world.addHandler('remove-item', function(event) { + // For backwards compatibility, we maintain the source property + if (_this.world.getItemCount()) { + _this.source = _this.world.getItemAt(0).source; + } else { + _this.source = null; + } + + THIS[ _this.hash ].forceRedraw = true; + }); + + this.world.addHandler('metrics-change', function(event) { + if (_this.viewport) { + _this.viewport._setContentBounds(_this.world.getHomeBounds(), _this.world.getContentFactor()); + } + }); + + this.world.addHandler('item-index-change', function(event) { + // For backwards compatibility, we maintain the source property + _this.source = _this.world.getItemAt(0).source; + }); + + // Create the viewport + this.viewport = new $.Viewport({ + containerSize: THIS[ this.hash ].prevContainerSize, + springStiffness: this.springStiffness, + animationTime: this.animationTime, + minZoomImageRatio: this.minZoomImageRatio, + maxZoomPixelRatio: this.maxZoomPixelRatio, + visibilityRatio: this.visibilityRatio, + wrapHorizontal: this.wrapHorizontal, + wrapVertical: this.wrapVertical, + defaultZoomLevel: this.defaultZoomLevel, + minZoomLevel: this.minZoomLevel, + maxZoomLevel: this.maxZoomLevel, + viewer: this, + degrees: this.degrees, + navigatorRotate: this.navigatorRotate, + homeFillsViewer: this.homeFillsViewer, + margins: this.viewportMargins + }); + + this.viewport._setContentBounds(this.world.getHomeBounds(), this.world.getContentFactor()); + + // Create the image loader + this.imageLoader = new $.ImageLoader({ + jobLimit: this.imageLoaderLimit + }); + + // Create the tile cache + this.tileCache = new $.TileCache({ + maxImageCacheCount: this.maxImageCacheCount + }); + + // Create the drawer + this.drawer = new $.Drawer({ + viewer: this, + viewport: this.viewport, + element: this.canvas, + debugGridColor: this.debugGridColor + }); + + // Overlay container + this.overlaysContainer = $.makeNeutralElement( "div" ); + this.canvas.appendChild( this.overlaysContainer ); + + // Now that we have a drawer, see if it supports rotate. If not we need to remove the rotate buttons + if (!this.drawer.canRotate()) { + // Disable/remove the rotate left/right buttons since they aren't supported + if (this.rotateLeft) { + i = this.buttons.buttons.indexOf(this.rotateLeft); + this.buttons.buttons.splice(i, 1); + this.buttons.element.removeChild(this.rotateLeft.element); + } + if (this.rotateRight) { + i = this.buttons.buttons.indexOf(this.rotateRight); + this.buttons.buttons.splice(i, 1); + this.buttons.element.removeChild(this.rotateRight.element); + } + } + + //Instantiate a navigator if configured + if ( this.showNavigator){ + this.navigator = new $.Navigator({ + id: this.navigatorId, + position: this.navigatorPosition, + sizeRatio: this.navigatorSizeRatio, + maintainSizeRatio: this.navigatorMaintainSizeRatio, + top: this.navigatorTop, + left: this.navigatorLeft, + width: this.navigatorWidth, + height: this.navigatorHeight, + autoResize: this.navigatorAutoResize, + autoFade: this.navigatorAutoFade, + prefixUrl: this.prefixUrl, + viewer: this, + navigatorRotate: this.navigatorRotate, + crossOriginPolicy: this.crossOriginPolicy + }); + } + + // Sequence mode + if (this.sequenceMode) { + this.bindSequenceControls(); + } + + // Open initial tilesources + if (this.tileSources) { + this.open( this.tileSources ); + } + + // Add custom controls + for ( i = 0; i < this.customControls.length; i++ ) { + this.addControl( + this.customControls[ i ].id, + {anchor: this.customControls[ i ].anchor} + ); + } + + // Initial fade out + $.requestAnimationFrame( function(){ + beginControlsAutoHide( _this ); + } ); +}; + +$.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, /** @lends OpenSeadragon.Viewer.prototype */{ + + + /** + * @function + * @return {Boolean} + */ + isOpen: function () { + return !!this.world.getItemCount(); + }, + + // deprecated + openDzi: function ( dzi ) { + $.console.error( "[Viewer.openDzi] this function is deprecated; use Viewer.open() instead." ); + return this.open( dzi ); + }, + + // deprecated + openTileSource: function ( tileSource ) { + $.console.error( "[Viewer.openTileSource] this function is deprecated; use Viewer.open() instead." ); + return this.open( tileSource ); + }, + + /** + * Open tiled images into the viewer, closing any others. + * @function + * @param {Array|String|Object|Function} tileSources - This can be a TiledImage + * specifier, a TileSource specifier, or an array of either. A TiledImage specifier + * is the same as the options parameter for {@link OpenSeadragon.Viewer#addTiledImage}, + * except for the index property; images are added in sequence. + * A TileSource specifier is anything you could pass as the tileSource property + * of the options parameter for {@link OpenSeadragon.Viewer#addTiledImage}. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:open + * @fires OpenSeadragon.Viewer.event:open-failed + */ + open: function (tileSources) { + var _this = this; + + this.close(); + + if (!tileSources) { + return; + } + + if (this.sequenceMode && $.isArray(tileSources)) { + if (this.referenceStrip) { + this.referenceStrip.destroy(); + this.referenceStrip = null; + } + + this.tileSources = tileSources; + this._sequenceIndex = Math.max(0, Math.min(this.tileSources.length - 1, this.initialPage)); + if (this.tileSources.length) { + this.open(this.tileSources[this._sequenceIndex]); + + if ( this.showReferenceStrip ){ + this.referenceStrip = new $.ReferenceStrip({ + id: this.referenceStripElement, + position: this.referenceStripPosition, + sizeRatio: this.referenceStripSizeRatio, + scroll: this.referenceStripScroll, + height: this.referenceStripHeight, + width: this.referenceStripWidth, + tileSources: this.tileSources, + prefixUrl: this.prefixUrl, + viewer: this + }); + } + } + + this._updateSequenceButtons( this._sequenceIndex ); + return; + } + + if (!$.isArray(tileSources)) { + tileSources = [tileSources]; + } + + if (!tileSources.length) { + return; + } + + this._opening = true; + + var expected = tileSources.length; + var successes = 0; + var failures = 0; + var failEvent; + + var checkCompletion = function() { + if (successes + failures === expected) { + if (successes) { + if (_this._firstOpen || !_this.preserveViewport) { + _this.viewport.goHome( true ); + _this.viewport.update(); + } + + _this._firstOpen = false; + + var source = tileSources[0]; + if (source.tileSource) { + source = source.tileSource; + } + + // Global overlays + if( _this.overlays && !_this.preserveOverlays ){ + for ( var i = 0; i < _this.overlays.length; i++ ) { + _this.currentOverlays[ i ] = getOverlayObject( _this, _this.overlays[ i ] ); + } + } + + _this._drawOverlays(); + _this._opening = false; + + /** + * Raised when the viewer has opened and loaded one or more TileSources. + * + * @event open + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.TileSource} source - The tile source that was opened. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + // TODO: what if there are multiple sources? + _this.raiseEvent( 'open', { source: source } ); + } else { + _this._opening = false; + + /** + * Raised when an error occurs loading a TileSource. + * + * @event open-failed + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {String} message - Information about what failed. + * @property {String} source - The tile source that failed. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'open-failed', failEvent ); + } + } + }; + + var doOne = function(options) { + if (!$.isPlainObject(options) || !options.tileSource) { + options = { + tileSource: options + }; + } + + if (options.index !== undefined) { + $.console.error('[Viewer.open] setting indexes here is not supported; use addTiledImage instead'); + delete options.index; + } + + if (options.collectionImmediately === undefined) { + options.collectionImmediately = true; + } + + var originalSuccess = options.success; + options.success = function(event) { + successes++; + + // TODO: now that options has other things besides tileSource, the overlays + // should probably be at the options level, not the tileSource level. + if (options.tileSource.overlays) { + for (var i = 0; i < options.tileSource.overlays.length; i++) { + _this.addOverlay(options.tileSource.overlays[i]); + } + } + + if (originalSuccess) { + originalSuccess(event); + } + + checkCompletion(); + }; + + var originalError = options.error; + options.error = function(event) { + failures++; + + if (!failEvent) { + failEvent = event; + } + + if (originalError) { + originalError(event); + } + + checkCompletion(); + }; + + _this.addTiledImage(options); + }; + + // TileSources + for (var i = 0; i < tileSources.length; i++) { + doOne(tileSources[i]); + } + + return this; + }, + + + /** + * @function + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:close + */ + close: function ( ) { + if ( !THIS[ this.hash ] ) { + //this viewer has already been destroyed: returning immediately + return this; + } + + this._opening = false; + + if ( this.navigator ) { + this.navigator.close(); + } + + if( ! this.preserveOverlays) { + this.clearOverlays(); + this.overlaysContainer.innerHTML = ""; + } + + THIS[ this.hash ].animating = false; + this.world.removeAll(); + this.imageLoader.clear(); + + /** + * Raised when the viewer is closed (see {@link OpenSeadragon.Viewer#close}). + * + * @event close + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'close' ); + + return this; + }, + + + /** + * Function to destroy the viewer and clean up everything created by OpenSeadragon. + * + * Example: + * var viewer = OpenSeadragon({ + * [...] + * }); + * + * //when you are done with the viewer: + * viewer.destroy(); + * viewer = null; //important + * + * @function + */ + destroy: function( ) { + if ( !THIS[ this.hash ] ) { + //this viewer has already been destroyed: returning immediately + return; + } + + this.close(); + + this.clearOverlays(); + this.overlaysContainer.innerHTML = ""; + + //TODO: implement this... + //this.unbindSequenceControls() + //this.unbindStandardControls() + + if (this.referenceStrip) { + this.referenceStrip.destroy(); + this.referenceStrip = null; + } + + if ( this._updateRequestId !== null ) { + $.cancelAnimationFrame( this._updateRequestId ); + this._updateRequestId = null; + } + + if ( this.drawer ) { + this.drawer.destroy(); + } + + this.removeAllHandlers(); + + // Go through top element (passed to us) and remove all children + // Use removeChild to make sure it handles SVG or any non-html + // also it performs better - http://jsperf.com/innerhtml-vs-removechild/15 + if (this.element){ + while (this.element.firstChild) { + this.element.removeChild(this.element.firstChild); + } + } + + // destroy the mouse trackers + if (this.innerTracker){ + this.innerTracker.destroy(); + } + if (this.outerTracker){ + this.outerTracker.destroy(); + } + + THIS[ this.hash ] = null; + delete THIS[ this.hash ]; + + // clear all our references to dom objects + this.canvas = null; + this.container = null; + + // clear our reference to the main element - they will need to pass it in again, creating a new viewer + this.element = null; + }, + + /** + * @function + * @return {Boolean} + */ + isMouseNavEnabled: function () { + return this.innerTracker.isTracking(); + }, + + /** + * @function + * @param {Boolean} enabled - true to enable, false to disable + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:mouse-enabled + */ + setMouseNavEnabled: function( enabled ){ + this.innerTracker.setTracking( enabled ); + this.outerTracker.setTracking( enabled ); + /** + * Raised when mouse/touch navigation is enabled or disabled (see {@link OpenSeadragon.Viewer#setMouseNavEnabled}). + * + * @event mouse-enabled + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} enabled + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'mouse-enabled', { enabled: enabled } ); + return this; + }, + + + /** + * @function + * @return {Boolean} + */ + areControlsEnabled: function () { + var enabled = this.controls.length, + i; + for( i = 0; i < this.controls.length; i++ ){ + enabled = enabled && this.controls[ i ].isVisibile(); + } + return enabled; + }, + + + /** + * Shows or hides the controls (e.g. the default navigation buttons). + * + * @function + * @param {Boolean} true to show, false to hide. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:controls-enabled + */ + setControlsEnabled: function( enabled ) { + if( enabled ){ + abortControlsAutoHide( this ); + } else { + beginControlsAutoHide( this ); + } + /** + * Raised when the navigation controls are shown or hidden (see {@link OpenSeadragon.Viewer#setControlsEnabled}). + * + * @event controls-enabled + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} enabled + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'controls-enabled', { enabled: enabled } ); + return this; + }, + + /** + * @function + * @return {Boolean} + */ + isFullPage: function () { + return THIS[ this.hash ].fullPage; + }, + + + /** + * Toggle full page mode. + * @function + * @param {Boolean} fullPage + * If true, enter full page mode. If false, exit full page mode. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:pre-full-page + * @fires OpenSeadragon.Viewer.event:full-page + */ + setFullPage: function( fullPage ) { + + var body = document.body, + bodyStyle = body.style, + docStyle = document.documentElement.style, + _this = this, + hash, + nodes, + i; + + //dont bother modifying the DOM if we are already in full page mode. + if ( fullPage == this.isFullPage() ) { + return this; + } + + var fullPageEventArgs = { + fullPage: fullPage, + preventDefaultAction: false + }; + /** + * Raised when the viewer is about to change to/from full-page mode (see {@link OpenSeadragon.Viewer#setFullPage}). + * + * @event pre-full-page + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} fullPage - True if entering full-page mode, false if exiting full-page mode. + * @property {Boolean} preventDefaultAction - Set to true to prevent full-page mode change. Default: false. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'pre-full-page', fullPageEventArgs ); + if ( fullPageEventArgs.preventDefaultAction ) { + return this; + } + + if ( fullPage ) { + + this.elementSize = $.getElementSize( this.element ); + this.pageScroll = $.getPageScroll(); + + this.elementMargin = this.element.style.margin; + this.element.style.margin = "0"; + this.elementPadding = this.element.style.padding; + this.element.style.padding = "0"; + + this.bodyMargin = bodyStyle.margin; + this.docMargin = docStyle.margin; + bodyStyle.margin = "0"; + docStyle.margin = "0"; + + this.bodyPadding = bodyStyle.padding; + this.docPadding = docStyle.padding; + bodyStyle.padding = "0"; + docStyle.padding = "0"; + + this.bodyWidth = bodyStyle.width; + this.docWidth = docStyle.width; + bodyStyle.width = "100%"; + docStyle.width = "100%"; + + this.bodyHeight = bodyStyle.height; + this.docHeight = docStyle.height; + bodyStyle.height = "100%"; + docStyle.height = "100%"; + + //when entering full screen on the ipad it wasnt sufficient to leave + //the body intact as only only the top half of the screen would + //respond to touch events on the canvas, while the bottom half treated + //them as touch events on the document body. Thus we remove and store + //the bodies elements and replace them when we leave full screen. + this.previousBody = []; + THIS[ this.hash ].prevElementParent = this.element.parentNode; + THIS[ this.hash ].prevNextSibling = this.element.nextSibling; + THIS[ this.hash ].prevElementWidth = this.element.style.width; + THIS[ this.hash ].prevElementHeight = this.element.style.height; + nodes = body.childNodes.length; + for ( i = 0; i < nodes; i++ ) { + this.previousBody.push( body.childNodes[ 0 ] ); + body.removeChild( body.childNodes[ 0 ] ); + } + + //If we've got a toolbar, we need to enable the user to use css to + //preserve it in fullpage mode + if ( this.toolbar && this.toolbar.element ) { + //save a reference to the parent so we can put it back + //in the long run we need a better strategy + this.toolbar.parentNode = this.toolbar.element.parentNode; + this.toolbar.nextSibling = this.toolbar.element.nextSibling; + body.appendChild( this.toolbar.element ); + + //Make sure the user has some ability to style the toolbar based + //on the mode + $.addClass( this.toolbar.element, 'fullpage' ); + } + + $.addClass( this.element, 'fullpage' ); + body.appendChild( this.element ); + + this.element.style.height = $.getWindowSize().y + 'px'; + this.element.style.width = $.getWindowSize().x + 'px'; + + if ( this.toolbar && this.toolbar.element ) { + this.element.style.height = ( + $.getElementSize( this.element ).y - $.getElementSize( this.toolbar.element ).y + ) + 'px'; + } + + THIS[ this.hash ].fullPage = true; + + // mouse will be inside container now + $.delegate( this, onContainerEnter )( {} ); + + } else { + + this.element.style.margin = this.elementMargin; + this.element.style.padding = this.elementPadding; + + bodyStyle.margin = this.bodyMargin; + docStyle.margin = this.docMargin; + + bodyStyle.padding = this.bodyPadding; + docStyle.padding = this.docPadding; + + bodyStyle.width = this.bodyWidth; + docStyle.width = this.docWidth; + + bodyStyle.height = this.bodyHeight; + docStyle.height = this.docHeight; + + body.removeChild( this.element ); + nodes = this.previousBody.length; + for ( i = 0; i < nodes; i++ ) { + body.appendChild( this.previousBody.shift() ); + } + + $.removeClass( this.element, 'fullpage' ); + THIS[ this.hash ].prevElementParent.insertBefore( + this.element, + THIS[ this.hash ].prevNextSibling + ); + + //If we've got a toolbar, we need to enable the user to use css to + //reset it to its original state + if ( this.toolbar && this.toolbar.element ) { + body.removeChild( this.toolbar.element ); + + //Make sure the user has some ability to style the toolbar based + //on the mode + $.removeClass( this.toolbar.element, 'fullpage' ); + + this.toolbar.parentNode.insertBefore( + this.toolbar.element, + this.toolbar.nextSibling + ); + delete this.toolbar.parentNode; + delete this.toolbar.nextSibling; + } + + this.element.style.width = THIS[ this.hash ].prevElementWidth; + this.element.style.height = THIS[ this.hash ].prevElementHeight; + + // After exiting fullPage or fullScreen, it can take some time + // before the browser can actually set the scroll. + var restoreScrollCounter = 0; + var restoreScroll = function() { + $.setPageScroll( _this.pageScroll ); + var pageScroll = $.getPageScroll(); + restoreScrollCounter++; + if ( restoreScrollCounter < 10 && + pageScroll.x !== _this.pageScroll.x || + pageScroll.y !== _this.pageScroll.y ) { + $.requestAnimationFrame( restoreScroll ); + } + }; + $.requestAnimationFrame( restoreScroll ); + + THIS[ this.hash ].fullPage = false; + + // mouse will likely be outside now + $.delegate( this, onContainerExit )( { } ); + + } + + if ( this.navigator && this.viewport ) { + this.navigator.update( this.viewport ); + } + + /** + * Raised when the viewer has changed to/from full-page mode (see {@link OpenSeadragon.Viewer#setFullPage}). + * + * @event full-page + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} fullPage - True if changed to full-page mode, false if exited full-page mode. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'full-page', { fullPage: fullPage } ); + + return this; + }, + + /** + * Toggle full screen mode if supported. Toggle full page mode otherwise. + * @function + * @param {Boolean} fullScreen + * If true, enter full screen mode. If false, exit full screen mode. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:pre-full-screen + * @fires OpenSeadragon.Viewer.event:full-screen + */ + setFullScreen: function( fullScreen ) { + var _this = this; + + if ( !$.supportsFullScreen ) { + return this.setFullPage( fullScreen ); + } + + if ( $.isFullScreen() === fullScreen ) { + return this; + } + + var fullScreeEventArgs = { + fullScreen: fullScreen, + preventDefaultAction: false + }; + /** + * Raised when the viewer is about to change to/from full-screen mode (see {@link OpenSeadragon.Viewer#setFullScreen}). + * Note: the pre-full-screen event is not raised when the user is exiting + * full-screen mode by pressing the Esc key. In that case, consider using + * the full-screen, pre-full-page or full-page events. + * + * @event pre-full-screen + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} fullScreen - True if entering full-screen mode, false if exiting full-screen mode. + * @property {Boolean} preventDefaultAction - Set to true to prevent full-screen mode change. Default: false. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'pre-full-screen', fullScreeEventArgs ); + if ( fullScreeEventArgs.preventDefaultAction ) { + return this; + } + + if ( fullScreen ) { + + this.setFullPage( true ); + // If the full page mode is not actually entered, we need to prevent + // the full screen mode. + if ( !this.isFullPage() ) { + return this; + } + + this.fullPageStyleWidth = this.element.style.width; + this.fullPageStyleHeight = this.element.style.height; + this.element.style.width = '100%'; + this.element.style.height = '100%'; + + var onFullScreenChange = function() { + var isFullScreen = $.isFullScreen(); + if ( !isFullScreen ) { + $.removeEvent( document, $.fullScreenEventName, onFullScreenChange ); + $.removeEvent( document, $.fullScreenErrorEventName, onFullScreenChange ); + + _this.setFullPage( false ); + if ( _this.isFullPage() ) { + _this.element.style.width = _this.fullPageStyleWidth; + _this.element.style.height = _this.fullPageStyleHeight; + } + } + if ( _this.navigator && _this.viewport ) { + _this.navigator.update( _this.viewport ); + } + /** + * Raised when the viewer has changed to/from full-screen mode (see {@link OpenSeadragon.Viewer#setFullScreen}). + * + * @event full-screen + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} fullScreen - True if changed to full-screen mode, false if exited full-screen mode. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'full-screen', { fullScreen: isFullScreen } ); + }; + $.addEvent( document, $.fullScreenEventName, onFullScreenChange ); + $.addEvent( document, $.fullScreenErrorEventName, onFullScreenChange ); + + $.requestFullScreen( document.body ); + + } else { + $.exitFullScreen(); + } + return this; + }, + + /** + * @function + * @return {Boolean} + */ + isVisible: function () { + return this.container.style.visibility != "hidden"; + }, + + + /** + * @function + * @param {Boolean} visible + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:visible + */ + setVisible: function( visible ){ + this.container.style.visibility = visible ? "" : "hidden"; + /** + * Raised when the viewer is shown or hidden (see {@link OpenSeadragon.Viewer#setVisible}). + * + * @event visible + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Boolean} visible + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'visible', { visible: visible } ); + return this; + }, + + /** + * Add a tiled image to the viewer. + * options.tileSource can be anything that {@link OpenSeadragon.Viewer#open} + * supports except arrays of images. + * Note that you can specify options.width or options.height, but not both. + * The other dimension will be calculated according to the item's aspect ratio. + * If collectionMode is on (see {@link OpenSeadragon.Options}), the new image is + * automatically arranged with the others. + * @function + * @param {Object} options + * @param {String|Object|Function} options.tileSource - The TileSource specifier. + * A String implies a url used to determine the tileSource implementation + * based on the file extension of url. JSONP is implied by *.js, + * otherwise the url is retrieved as text and the resulting text is + * introspected to determine if its json, xml, or text and parsed. + * An Object implies an inline configuration which has a single + * property sufficient for being able to determine tileSource + * implementation. If the object has a property which is a function + * named 'getTileUrl', it is treated as a custom TileSource. + * @param {Number} [options.index] The index of the item. Added on top of + * all other items if not specified. + * @param {Boolean} [options.replace=false] If true, the item at options.index will be + * removed and the new item is added in its place. options.tileSource will be + * interpreted and fetched if necessary before the old item is removed to avoid leaving + * a gap in the world. + * @param {Number} [options.x=0] The X position for the image in viewport coordinates. + * @param {Number} [options.y=0] The Y position for the image in viewport coordinates. + * @param {Number} [options.width=1] The width for the image in viewport coordinates. + * @param {Number} [options.height] The height for the image in viewport coordinates. + * @param {OpenSeadragon.Rect} [options.fitBounds] The bounds in viewport coordinates + * to fit the image into. If specified, x, y, width and height get ignored. + * @param {OpenSeadragon.Placement} [options.fitBoundsPlacement=OpenSeadragon.Placement.CENTER] + * How to anchor the image in the bounds if options.fitBounds is set. + * @param {OpenSeadragon.Rect} [options.clip] - An area, in image pixels, to clip to + * (portions of the image outside of this area will not be visible). Only works on + * browsers that support the HTML5 canvas. + * @param {Number} [options.opacity] Opacity the tiled image should be drawn at by default. + * @param {String} [options.compositeOperation] How the image is composited onto other images. + * @param {Function} [options.success] A function that gets called when the image is + * successfully added. It's passed the event object which contains a single property: + * "item", the resulting TiledImage. + * @param {Function} [options.error] A function that gets called if the image is + * unable to be added. It's passed the error event object, which contains "message" + * and "source" properties. + * @param {Boolean} [options.collectionImmediately=false] If collectionMode is on, + * specifies whether to snap to the new arrangement immediately or to animate to it. + * @param {String|CanvasGradient|CanvasPattern|Function} [options.placeholderFillStyle] - See {@link OpenSeadragon.Options}. + * @fires OpenSeadragon.World.event:add-item + * @fires OpenSeadragon.Viewer.event:add-item-failed + */ + addTiledImage: function( options ) { + $.console.assert(options, "[Viewer.addTiledImage] options is required"); + $.console.assert(options.tileSource, "[Viewer.addTiledImage] options.tileSource is required"); + $.console.assert(!options.replace || (options.index > -1 && options.index < this.world.getItemCount()), + "[Viewer.addTiledImage] if options.replace is used, options.index must be a valid index in Viewer.world"); + + var _this = this; + + if (options.replace) { + options.replaceItem = _this.world.getItemAt(options.index); + } + + this._hideMessage(); + + if (options.placeholderFillStyle === undefined) { + options.placeholderFillStyle = this.placeholderFillStyle; + } + if (options.opacity === undefined) { + options.opacity = this.opacity; + } + if (options.compositeOperation === undefined) { + options.compositeOperation = this.compositeOperation; + } + + var myQueueItem = { + options: options + }; + + function raiseAddItemFailed( event ) { + for (var i = 0; i < _this._loadQueue.length; i++) { + if (_this._loadQueue[i] === myQueueItem) { + _this._loadQueue.splice(i, 1); + break; + } + } + + if (_this._loadQueue.length === 0) { + refreshWorld(myQueueItem); + } + + /** + * Raised when an error occurs while adding a item. + * @event add-item-failed + * @memberOf OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {String} message + * @property {String} source + * @property {Object} options The options passed to the addTiledImage method. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'add-item-failed', event ); + + if (options.error) { + options.error(event); + } + } + + function refreshWorld(theItem) { + if (_this.collectionMode) { + _this.world.arrange({ + immediately: theItem.options.collectionImmediately, + rows: _this.collectionRows, + columns: _this.collectionColumns, + layout: _this.collectionLayout, + tileSize: _this.collectionTileSize, + tileMargin: _this.collectionTileMargin + }); + _this.world.setAutoRefigureSizes(true); + } + } + + if ($.isArray(options.tileSource)) { + setTimeout(function() { + raiseAddItemFailed({ + message: "[Viewer.addTiledImage] Sequences can not be added; add them one at a time instead.", + source: options.tileSource, + options: options + }); + }); + return; + } + + this._loadQueue.push(myQueueItem); + + getTileSourceImplementation( this, options.tileSource, function( tileSource ) { + + myQueueItem.tileSource = tileSource; + + // add everybody at the front of the queue that's ready to go + var queueItem, tiledImage, optionsClone; + while (_this._loadQueue.length) { + queueItem = _this._loadQueue[0]; + if (!queueItem.tileSource) { + break; + } + + _this._loadQueue.splice(0, 1); + + if (queueItem.options.replace) { + var newIndex = _this.world.getIndexOfItem(queueItem.options.replaceItem); + if (newIndex != -1) { + queueItem.options.index = newIndex; + } + _this.world.removeItem(queueItem.options.replaceItem); + } + + tiledImage = new $.TiledImage({ + viewer: _this, + source: queueItem.tileSource, + viewport: _this.viewport, + drawer: _this.drawer, + tileCache: _this.tileCache, + imageLoader: _this.imageLoader, + x: queueItem.options.x, + y: queueItem.options.y, + width: queueItem.options.width, + height: queueItem.options.height, + fitBounds: queueItem.options.fitBounds, + fitBoundsPlacement: queueItem.options.fitBoundsPlacement, + clip: queueItem.options.clip, + placeholderFillStyle: queueItem.options.placeholderFillStyle, + opacity: queueItem.options.opacity, + compositeOperation: queueItem.options.compositeOperation, + springStiffness: _this.springStiffness, + animationTime: _this.animationTime, + minZoomImageRatio: _this.minZoomImageRatio, + wrapHorizontal: _this.wrapHorizontal, + wrapVertical: _this.wrapVertical, + immediateRender: _this.immediateRender, + blendTime: _this.blendTime, + alwaysBlend: _this.alwaysBlend, + minPixelRatio: _this.minPixelRatio, + smoothTileEdgesMinZoom: _this.smoothTileEdgesMinZoom, + iOSDevice: _this.iOSDevice, + crossOriginPolicy: _this.crossOriginPolicy, + debugMode: _this.debugMode + }); + + if (_this.collectionMode) { + _this.world.setAutoRefigureSizes(false); + } + _this.world.addItem( tiledImage, { + index: queueItem.options.index + }); + + if (_this._loadQueue.length === 0) { + //this restores the autoRefigureSizes flag to true. + refreshWorld(queueItem); + } + + if (_this.world.getItemCount() === 1 && !_this.preserveViewport) { + _this.viewport.goHome(true); + } + + if (_this.navigator) { + optionsClone = $.extend({}, queueItem.options, { + replace: false, // navigator already removed the layer, nothing to replace + originalTiledImage: tiledImage, + tileSource: queueItem.tileSource + }); + + _this.navigator.addTiledImage(optionsClone); + } + + if (queueItem.options.success) { + queueItem.options.success({ + item: tiledImage + }); + } + } + }, function( event ) { + event.options = options; + raiseAddItemFailed(event); + } ); + }, + + /** + * Add a simple image to the viewer. + * The options are the same as the ones in {@link OpenSeadragon.Viewer#addTiledImage} + * except for options.tileSource which is replaced by options.url. + * @function + * @param {Object} options - See {@link OpenSeadragon.Viewer#addTiledImage} + * for all the options + * @param {String} options.url - The URL of the image to add. + * @fires OpenSeadragon.World.event:add-item + * @fires OpenSeadragon.Viewer.event:add-item-failed + */ + addSimpleImage: function(options) { + $.console.assert(options, "[Viewer.addSimpleImage] options is required"); + $.console.assert(options.url, "[Viewer.addSimpleImage] options.url is required"); + + var opts = $.extend({}, options, { + tileSource: { + type: 'image', + url: options.url + } + }); + delete opts.url; + this.addTiledImage(opts); + }, + + // deprecated + addLayer: function( options ) { + var _this = this; + + $.console.error( "[Viewer.addLayer] this function is deprecated; use Viewer.addTiledImage() instead." ); + + var optionsClone = $.extend({}, options, { + success: function(event) { + _this.raiseEvent("add-layer", { + options: options, + drawer: event.item + }); + }, + error: function(event) { + _this.raiseEvent("add-layer-failed", event); + } + }); + + this.addTiledImage(optionsClone); + return this; + }, + + // deprecated + getLayerAtLevel: function( level ) { + $.console.error( "[Viewer.getLayerAtLevel] this function is deprecated; use World.getItemAt() instead." ); + return this.world.getItemAt(level); + }, + + // deprecated + getLevelOfLayer: function( drawer ) { + $.console.error( "[Viewer.getLevelOfLayer] this function is deprecated; use World.getIndexOfItem() instead." ); + return this.world.getIndexOfItem(drawer); + }, + + // deprecated + getLayersCount: function() { + $.console.error( "[Viewer.getLayersCount] this function is deprecated; use World.getItemCount() instead." ); + return this.world.getItemCount(); + }, + + // deprecated + setLayerLevel: function( drawer, level ) { + $.console.error( "[Viewer.setLayerLevel] this function is deprecated; use World.setItemIndex() instead." ); + return this.world.setItemIndex(drawer, level); + }, + + // deprecated + removeLayer: function( drawer ) { + $.console.error( "[Viewer.removeLayer] this function is deprecated; use World.removeItem() instead." ); + return this.world.removeItem(drawer); + }, + + /** + * Force the viewer to redraw its contents. + * @returns {OpenSeadragon.Viewer} Chainable. + */ + forceRedraw: function() { + THIS[ this.hash ].forceRedraw = true; + return this; + }, + + /** + * @function + * @return {OpenSeadragon.Viewer} Chainable. + */ + bindSequenceControls: function(){ + + ////////////////////////////////////////////////////////////////////////// + // Image Sequence Controls + ////////////////////////////////////////////////////////////////////////// + var onFocusHandler = $.delegate( this, onFocus ), + onBlurHandler = $.delegate( this, onBlur ), + onNextHandler = $.delegate( this, onNext ), + onPreviousHandler = $.delegate( this, onPrevious ), + navImages = this.navImages, + useGroup = true ; + + if( this.showSequenceControl ){ + + if( this.previousButton || this.nextButton ){ + //if we are binding to custom buttons then layout and + //grouping is the responsibility of the page author + useGroup = false; + } + + this.previousButton = new $.Button({ + element: this.previousButton ? $.getElement( this.previousButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.PreviousPage" ), + srcRest: resolveUrl( this.prefixUrl, navImages.previous.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.previous.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.previous.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.previous.DOWN ), + onRelease: onPreviousHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + }); + + this.nextButton = new $.Button({ + element: this.nextButton ? $.getElement( this.nextButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.NextPage" ), + srcRest: resolveUrl( this.prefixUrl, navImages.next.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.next.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.next.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.next.DOWN ), + onRelease: onNextHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + }); + + if( !this.navPrevNextWrap ){ + this.previousButton.disable(); + } + + if (!this.tileSources || !this.tileSources.length) { + this.nextButton.disable(); + } + + if( useGroup ){ + this.paging = new $.ButtonGroup({ + buttons: [ + this.previousButton, + this.nextButton + ], + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold + }); + + this.pagingControl = this.paging.element; + + if( this.toolbar ){ + this.toolbar.addControl( + this.pagingControl, + {anchor: $.ControlAnchor.BOTTOM_RIGHT} + ); + }else{ + this.addControl( + this.pagingControl, + {anchor: this.sequenceControlAnchor || $.ControlAnchor.TOP_LEFT} + ); + } + } + } + return this; + }, + + + /** + * @function + * @return {OpenSeadragon.Viewer} Chainable. + */ + bindStandardControls: function(){ + ////////////////////////////////////////////////////////////////////////// + // Navigation Controls + ////////////////////////////////////////////////////////////////////////// + var beginZoomingInHandler = $.delegate( this, beginZoomingIn ), + endZoomingHandler = $.delegate( this, endZooming ), + doSingleZoomInHandler = $.delegate( this, doSingleZoomIn ), + beginZoomingOutHandler = $.delegate( this, beginZoomingOut ), + doSingleZoomOutHandler = $.delegate( this, doSingleZoomOut ), + onHomeHandler = $.delegate( this, onHome ), + onFullScreenHandler = $.delegate( this, onFullScreen ), + onRotateLeftHandler = $.delegate( this, onRotateLeft ), + onRotateRightHandler = $.delegate( this, onRotateRight ), + onFocusHandler = $.delegate( this, onFocus ), + onBlurHandler = $.delegate( this, onBlur ), + navImages = this.navImages, + buttons = [], + useGroup = true ; + + + if ( this.showNavigationControl ) { + + if( this.zoomInButton || this.zoomOutButton || + this.homeButton || this.fullPageButton || + this.rotateLeftButton || this.rotateRightButton ) { + //if we are binding to custom buttons then layout and + //grouping is the responsibility of the page author + useGroup = false; + } + + if ( this.showZoomControl ) { + buttons.push( this.zoomInButton = new $.Button({ + element: this.zoomInButton ? $.getElement( this.zoomInButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.ZoomIn" ), + srcRest: resolveUrl( this.prefixUrl, navImages.zoomIn.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.zoomIn.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.zoomIn.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.zoomIn.DOWN ), + onPress: beginZoomingInHandler, + onRelease: endZoomingHandler, + onClick: doSingleZoomInHandler, + onEnter: beginZoomingInHandler, + onExit: endZoomingHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + + buttons.push( this.zoomOutButton = new $.Button({ + element: this.zoomOutButton ? $.getElement( this.zoomOutButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.ZoomOut" ), + srcRest: resolveUrl( this.prefixUrl, navImages.zoomOut.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.zoomOut.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.zoomOut.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.zoomOut.DOWN ), + onPress: beginZoomingOutHandler, + onRelease: endZoomingHandler, + onClick: doSingleZoomOutHandler, + onEnter: beginZoomingOutHandler, + onExit: endZoomingHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + } + + if ( this.showHomeControl ) { + buttons.push( this.homeButton = new $.Button({ + element: this.homeButton ? $.getElement( this.homeButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.Home" ), + srcRest: resolveUrl( this.prefixUrl, navImages.home.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.home.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.home.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.home.DOWN ), + onRelease: onHomeHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + } + + if ( this.showFullPageControl ) { + buttons.push( this.fullPageButton = new $.Button({ + element: this.fullPageButton ? $.getElement( this.fullPageButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.FullPage" ), + srcRest: resolveUrl( this.prefixUrl, navImages.fullpage.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.fullpage.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.fullpage.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.fullpage.DOWN ), + onRelease: onFullScreenHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + } + + if ( this.showRotationControl ) { + buttons.push( this.rotateLeftButton = new $.Button({ + element: this.rotateLeftButton ? $.getElement( this.rotateLeftButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.RotateLeft" ), + srcRest: resolveUrl( this.prefixUrl, navImages.rotateleft.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.rotateleft.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.rotateleft.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.rotateleft.DOWN ), + onRelease: onRotateLeftHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + + buttons.push( this.rotateRightButton = new $.Button({ + element: this.rotateRightButton ? $.getElement( this.rotateRightButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.RotateRight" ), + srcRest: resolveUrl( this.prefixUrl, navImages.rotateright.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.rotateright.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.rotateright.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.rotateright.DOWN ), + onRelease: onRotateRightHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); + + } + + if ( useGroup ) { + this.buttons = new $.ButtonGroup({ + buttons: buttons, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold + }); + + this.navControl = this.buttons.element; + this.addHandler( 'open', $.delegate( this, lightUp ) ); + + if( this.toolbar ){ + this.toolbar.addControl( + this.navControl, + {anchor: $.ControlAnchor.TOP_LEFT} + ); + } else { + this.addControl( + this.navControl, + {anchor: this.navigationControlAnchor || $.ControlAnchor.TOP_LEFT} + ); + } + } + + } + return this; + }, + + /** + * Gets the active page of a sequence + * @function + * @return {Number} + */ + currentPage: function() { + return this._sequenceIndex; + }, + + /** + * @function + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:page + */ + goToPage: function( page ){ + if( this.tileSources && page >= 0 && page < this.tileSources.length ){ + /** + * Raised when the page is changed on a viewer configured with multiple image sources (see {@link OpenSeadragon.Viewer#goToPage}). + * + * @event page + * @memberof OpenSeadragon.Viewer + * @type {Object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Number} page - The page index. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'page', { page: page } ); + + this._sequenceIndex = page; + + this._updateSequenceButtons( page ); + + this.open( this.tileSources[ page ] ); + + if( this.referenceStrip ){ + this.referenceStrip.setFocus( page ); + } + } + + return this; + }, + + /** + * Adds an html element as an overlay to the current viewport. Useful for + * highlighting words or areas of interest on an image or other zoomable + * interface. The overlays added via this method are removed when the viewport + * is closed which include when changing page. + * @method + * @param {Element|String|Object} element - A reference to an element or an id for + * the element which will be overlayed. Or an Object specifying the configuration for the overlay. + * If using an object, see {@link OpenSeadragon.Overlay} for a list of + * all available options. + * @param {OpenSeadragon.Point|OpenSeadragon.Rect} location - The point or + * rectangle which will be overlayed. This is a viewport relative location. + * @param {OpenSeadragon.Placement} placement - The position of the + * viewport which the location coordinates will be treated as relative + * to. + * @param {function} onDraw - If supplied the callback is called when the overlay + * needs to be drawn. It it the responsibility of the callback to do any drawing/positioning. + * It is passed position, size and element. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:add-overlay + */ + addOverlay: function( element, location, placement, onDraw ) { + var options; + if( $.isPlainObject( element ) ){ + options = element; + } else { + options = { + element: element, + location: location, + placement: placement, + onDraw: onDraw + }; + } + + element = $.getElement( options.element ); + + if ( getOverlayIndex( this.currentOverlays, element ) >= 0 ) { + // they're trying to add a duplicate overlay + return this; + } + + var overlay = getOverlayObject( this, options); + this.currentOverlays.push(overlay); + overlay.drawHTML( this.overlaysContainer, this.viewport ); + + /** + * Raised when an overlay is added to the viewer (see {@link OpenSeadragon.Viewer#addOverlay}). + * + * @event add-overlay + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Element} element - The overlay element. + * @property {OpenSeadragon.Point|OpenSeadragon.Rect} location + * @property {OpenSeadragon.Placement} placement + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'add-overlay', { + element: element, + location: options.location, + placement: options.placement + }); + return this; + }, + + /** + * Updates the overlay represented by the reference to the element or + * element id moving it to the new location, relative to the new placement. + * @method + * @param {Element|String} element - A reference to an element or an id for + * the element which is overlayed. + * @param {OpenSeadragon.Point|OpenSeadragon.Rect} location - The point or + * rectangle which will be overlayed. This is a viewport relative location. + * @param {OpenSeadragon.Placement} placement - The position of the + * viewport which the location coordinates will be treated as relative + * to. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:update-overlay + */ + updateOverlay: function( element, location, placement ) { + var i; + + element = $.getElement( element ); + i = getOverlayIndex( this.currentOverlays, element ); + + if ( i >= 0 ) { + this.currentOverlays[ i ].update( location, placement ); + THIS[ this.hash ].forceRedraw = true; + /** + * Raised when an overlay's location or placement changes + * (see {@link OpenSeadragon.Viewer#updateOverlay}). + * + * @event update-overlay + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the + * Viewer which raised the event. + * @property {Element} element + * @property {OpenSeadragon.Point|OpenSeadragon.Rect} location + * @property {OpenSeadragon.Placement} placement + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'update-overlay', { + element: element, + location: location, + placement: placement + }); + } + return this; + }, + + /** + * Removes an overlay identified by the reference element or element id + * and schedules an update. + * @method + * @param {Element|String} element - A reference to the element or an + * element id which represent the ovelay content to be removed. + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:remove-overlay + */ + removeOverlay: function( element ) { + var i; + + element = $.getElement( element ); + i = getOverlayIndex( this.currentOverlays, element ); + + if ( i >= 0 ) { + this.currentOverlays[ i ].destroy(); + this.currentOverlays.splice( i, 1 ); + THIS[ this.hash ].forceRedraw = true; + /** + * Raised when an overlay is removed from the viewer + * (see {@link OpenSeadragon.Viewer#removeOverlay}). + * + * @event remove-overlay + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the + * Viewer which raised the event. + * @property {Element} element - The overlay element. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'remove-overlay', { + element: element + }); + } + return this; + }, + + /** + * Removes all currently configured Overlays from this Viewer and schedules + * an update. + * @method + * @return {OpenSeadragon.Viewer} Chainable. + * @fires OpenSeadragon.Viewer.event:clear-overlay + */ + clearOverlays: function() { + while ( this.currentOverlays.length > 0 ) { + this.currentOverlays.pop().destroy(); + } + THIS[ this.hash ].forceRedraw = true; + /** + * Raised when all overlays are removed from the viewer (see {@link OpenSeadragon.Drawer#clearOverlays}). + * + * @event clear-overlay + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'clear-overlay', {} ); + return this; + }, + + /** + * Finds an overlay identified by the reference element or element id + * and returns it as an object, return null if not found. + * @method + * @param {Element|String} element - A reference to the element or an + * element id which represents the overlay content. + * @return {OpenSeadragon.Overlay} the matching overlay or null if none found. + */ + getOverlayById: function( element ) { + var i; + + element = $.getElement( element ); + i = getOverlayIndex( this.currentOverlays, element ); + + if (i>=0) { + return this.currentOverlays[i]; + } else { + return null; + } + }, + + /** + * Updates the sequence buttons. + * @function OpenSeadragon.Viewer.prototype._updateSequenceButtons + * @private + * @param {Number} Sequence Value + */ + _updateSequenceButtons: function( page ) { + + if ( this.nextButton ) { + if(!this.tileSources || this.tileSources.length - 1 === page) { + //Disable next button + if ( !this.navPrevNextWrap ) { + this.nextButton.disable(); + } + } else { + this.nextButton.enable(); + } + } + if ( this.previousButton ) { + if ( page > 0 ) { + //Enable previous button + this.previousButton.enable(); + } else { + if ( !this.navPrevNextWrap ) { + this.previousButton.disable(); + } + } + } + }, + + /** + * Display a message in the viewport + * @function OpenSeadragon.Viewer.prototype._showMessage + * @private + * @param {String} text message + */ + _showMessage: function ( message ) { + this._hideMessage(); + + var div = $.makeNeutralElement( "div" ); + div.appendChild( document.createTextNode( message ) ); + + this.messageDiv = $.makeCenteredNode( div ); + + $.addClass(this.messageDiv, "openseadragon-message"); + + this.container.appendChild( this.messageDiv ); + }, + + /** + * Hide any currently displayed viewport message + * @function OpenSeadragon.Viewer.prototype._hideMessage + * @private + */ + _hideMessage: function () { + var div = this.messageDiv; + if (div) { + div.parentNode.removeChild(div); + delete this.messageDiv; + } + }, + + /** + * Gets this viewer's gesture settings for the given pointer device type. + * @method + * @param {String} type - The pointer device type to get the gesture settings for ("mouse", "touch", "pen", etc.). + * @return {OpenSeadragon.GestureSettings} + */ + gestureSettingsByDeviceType: function ( type ) { + switch ( type ) { + case 'mouse': + return this.gestureSettingsMouse; + case 'touch': + return this.gestureSettingsTouch; + case 'pen': + return this.gestureSettingsPen; + default: + return this.gestureSettingsUnknown; + } + }, + + // private + _drawOverlays: function() { + var i, + length = this.currentOverlays.length; + for ( i = 0; i < length; i++ ) { + this.currentOverlays[ i ].drawHTML( this.overlaysContainer, this.viewport ); + } + }, + + /** + * Cancel the "in flight" images. + */ + _cancelPendingImages: function() { + this._loadQueue = []; + } +}); + + +/** + * _getSafeElemSize is like getElementSize(), but refuses to return 0 for x or y, + * which was causing some calling operations to return NaN. + * @returns {Point} + * @private + */ +function _getSafeElemSize (oElement) { + oElement = $.getElement( oElement ); + + return new $.Point( + (oElement.clientWidth === 0 ? 1 : oElement.clientWidth), + (oElement.clientHeight === 0 ? 1 : oElement.clientHeight) + ); +} + +/** + * @function + * @private + */ +function getTileSourceImplementation( viewer, tileSource, successCallback, + failCallback ) { + var _this = viewer; + + //allow plain xml strings or json strings to be parsed here + if ( $.type( tileSource ) == 'string' ) { + if ( tileSource.match( /\s*<.*/ ) ) { + tileSource = $.parseXml( tileSource ); + } else if ( tileSource.match( /\s*[\{\[].*/ ) ) { + tileSource = $.parseJSON(tileSource); + } + } + + function waitUntilReady(tileSource, originalTileSource) { + if (tileSource.ready) { + successCallback(tileSource); + } else { + tileSource.addHandler('ready', function () { + successCallback(tileSource); + }); + tileSource.addHandler('open-failed', function (event) { + failCallback({ + message: event.message, + source: originalTileSource + }); + }); + } + } + + setTimeout( function() { + if ( $.type( tileSource ) == 'string' ) { + //If its still a string it means it must be a url at this point + tileSource = new $.TileSource({ + url: tileSource, + crossOriginPolicy: viewer.crossOriginPolicy, + ajaxWithCredentials: viewer.ajaxWithCredentials, + useCanvas: viewer.useCanvas, + success: function( event ) { + successCallback( event.tileSource ); + } + }); + tileSource.addHandler( 'open-failed', function( event ) { + failCallback( event ); + } ); + + } else if ($.isPlainObject(tileSource) || tileSource.nodeType) { + if (!tileSource.crossOriginPolicy && viewer.crossOriginPolicy) { + tileSource.crossOriginPolicy = viewer.crossOriginPolicy; + } + if (tileSource.ajaxWithCredentials === undefined) { + tileSource.ajaxWithCredentials = viewer.ajaxWithCredentials; + } + if (tileSource.useCanvas === undefined) { + tileSource.useCanvas = viewer.useCanvas; + } + + if ( $.isFunction( tileSource.getTileUrl ) ) { + //Custom tile source + var customTileSource = new $.TileSource( tileSource ); + customTileSource.getTileUrl = tileSource.getTileUrl; + successCallback( customTileSource ); + } else { + //inline configuration + var $TileSource = $.TileSource.determineType( _this, tileSource ); + if ( !$TileSource ) { + failCallback( { + message: "Unable to load TileSource", + source: tileSource + }); + return; + } + var options = $TileSource.prototype.configure.apply( _this, [ tileSource ] ); + waitUntilReady(new $TileSource(options), tileSource); + } + } else { + //can assume it's already a tile source implementation + waitUntilReady(tileSource, tileSource); + } + }); +} + +function getOverlayObject( viewer, overlay ) { + if ( overlay instanceof $.Overlay ) { + return overlay; + } + + var element = null; + if ( overlay.element ) { + element = $.getElement( overlay.element ); + } else { + var id = overlay.id ? + overlay.id : + "openseadragon-overlay-" + Math.floor( Math.random() * 10000000 ); + + element = $.getElement( overlay.id ); + if ( !element ) { + element = document.createElement( "a" ); + element.href = "#/overlay/" + id; + } + element.id = id; + $.addClass( element, overlay.className ? + overlay.className : + "openseadragon-overlay" + ); + } + + var location = overlay.location; + var width = overlay.width; + var height = overlay.height; + if (!location) { + var x = overlay.x; + var y = overlay.y; + if (overlay.px !== undefined) { + var rect = viewer.viewport.imageToViewportRectangle(new $.Rect( + overlay.px, + overlay.py, + width || 0, + height || 0)); + x = rect.x; + y = rect.y; + width = width !== undefined ? rect.width : undefined; + height = height !== undefined ? rect.height : undefined; + } + location = new $.Point(x, y); + } + + var placement = overlay.placement; + if (placement && $.type(placement) === "string") { + placement = $.Placement[overlay.placement.toUpperCase()]; + } + + return new $.Overlay({ + element: element, + location: location, + placement: placement, + onDraw: overlay.onDraw, + checkResize: overlay.checkResize, + width: width, + height: height, + rotationMode: overlay.rotationMode + }); +} + +/** + * @private + * @inner + * Determines the index of the given overlay in the given overlays array. + */ +function getOverlayIndex( overlays, element ) { + var i; + for ( i = overlays.length - 1; i >= 0; i-- ) { + if ( overlays[ i ].element === element ) { + return i; + } + } + + return -1; +} + +/////////////////////////////////////////////////////////////////////////////// +// Schedulers provide the general engine for animation +/////////////////////////////////////////////////////////////////////////////// +function scheduleUpdate( viewer, updateFunc ){ + return $.requestAnimationFrame( function(){ + updateFunc( viewer ); + } ); +} + + +//provides a sequence in the fade animation +function scheduleControlsFade( viewer ) { + $.requestAnimationFrame( function(){ + updateControlsFade( viewer ); + }); +} + + +//initiates an animation to hide the controls +function beginControlsAutoHide( viewer ) { + if ( !viewer.autoHideControls ) { + return; + } + viewer.controlsShouldFade = true; + viewer.controlsFadeBeginTime = + $.now() + + viewer.controlsFadeDelay; + + window.setTimeout( function(){ + scheduleControlsFade( viewer ); + }, viewer.controlsFadeDelay ); +} + + +//determines if fade animation is done or continues the animation +function updateControlsFade( viewer ) { + var currentTime, + deltaTime, + opacity, + i; + if ( viewer.controlsShouldFade ) { + currentTime = $.now(); + deltaTime = currentTime - viewer.controlsFadeBeginTime; + opacity = 1.0 - deltaTime / viewer.controlsFadeLength; + + opacity = Math.min( 1.0, opacity ); + opacity = Math.max( 0.0, opacity ); + + for ( i = viewer.controls.length - 1; i >= 0; i--) { + if (viewer.controls[ i ].autoFade) { + viewer.controls[ i ].setOpacity( opacity ); + } + } + + if ( opacity > 0 ) { + // fade again + scheduleControlsFade( viewer ); + } + } +} + + +//stop the fade animation on the controls and show them +function abortControlsAutoHide( viewer ) { + var i; + viewer.controlsShouldFade = false; + for ( i = viewer.controls.length - 1; i >= 0; i-- ) { + viewer.controls[ i ].setOpacity( 1.0 ); + } +} + + + +/////////////////////////////////////////////////////////////////////////////// +// Default view event handlers. +/////////////////////////////////////////////////////////////////////////////// +function onFocus(){ + abortControlsAutoHide( this ); +} + +function onBlur(){ + beginControlsAutoHide( this ); + +} + +function onCanvasKeyDown( event ) { + if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + switch( event.keyCode ){ + case 38://up arrow + if ( event.shift ) { + this.viewport.zoomBy(1.1); + } else { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, -40))); + } + this.viewport.applyConstraints(); + return false; + case 40://down arrow + if ( event.shift ) { + this.viewport.zoomBy(0.9); + } else { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, 40))); + } + this.viewport.applyConstraints(); + return false; + case 37://left arrow + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-40, 0))); + this.viewport.applyConstraints(); + return false; + case 39://right arrow + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(40, 0))); + this.viewport.applyConstraints(); + return false; + default: + //console.log( 'navigator keycode %s', event.keyCode ); + return true; + } + } else { + return true; + } +} + +function onCanvasKeyPress( event ) { + if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + switch( event.keyCode ){ + case 43://=|+ + case 61://=|+ + this.viewport.zoomBy(1.1); + this.viewport.applyConstraints(); + return false; + case 45://-|_ + this.viewport.zoomBy(0.9); + this.viewport.applyConstraints(); + return false; + case 48://0|) + this.viewport.goHome(); + this.viewport.applyConstraints(); + return false; + case 119://w + case 87://W + if ( event.shift ) { + this.viewport.zoomBy(1.1); + } else { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, -40))); + } + this.viewport.applyConstraints(); + return false; + case 115://s + case 83://S + if ( event.shift ) { + this.viewport.zoomBy(0.9); + } else { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, 40))); + } + this.viewport.applyConstraints(); + return false; + case 97://a + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-40, 0))); + this.viewport.applyConstraints(); + return false; + case 100://d + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(40, 0))); + this.viewport.applyConstraints(); + return false; + default: + //console.log( 'navigator keycode %s', event.keyCode ); + return true; + } + } else { + return true; + } +} + +function onCanvasClick( event ) { + var gestureSettings; + + var haveKeyboardFocus = document.activeElement == this.canvas; + + // If we don't have keyboard focus, request it. + if ( !haveKeyboardFocus ) { + this.canvas.focus(); + } + + if ( !event.preventDefaultAction && this.viewport && event.quick ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.clickToZoom ) { + this.viewport.zoomBy( + event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, + this.viewport.pointFromPixel( event.position, true ) + ); + this.viewport.applyConstraints(); + } + } + /** + * Raised when a mouse press/release or touch/remove occurs on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-click + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Boolean} quick - True only if the clickDistThreshold and clickTimeThreshold are both passed. Useful for differentiating between clicks and drags. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-click', { + tracker: event.eventSource, + position: event.position, + quick: event.quick, + shift: event.shift, + originalEvent: event.originalEvent + }); +} + +function onCanvasDblClick( event ) { + var gestureSettings; + + if ( !event.preventDefaultAction && this.viewport ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.dblClickToZoom ) { + this.viewport.zoomBy( + event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, + this.viewport.pointFromPixel( event.position, true ) + ); + this.viewport.applyConstraints(); + } + } + /** + * Raised when a double mouse press/release or touch/remove occurs on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-double-click + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-double-click', { + tracker: event.eventSource, + position: event.position, + shift: event.shift, + originalEvent: event.originalEvent + }); +} + +function onCanvasDrag( event ) { + var gestureSettings; + + if ( !event.preventDefaultAction && this.viewport ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if( !this.panHorizontal ){ + event.delta.x = 0; + } + if( !this.panVertical ){ + event.delta.y = 0; + } + this.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta.negate() ), gestureSettings.flickEnabled ); + if( this.constrainDuringPan ){ + this.viewport.applyConstraints(); + } + } + /** + * Raised when a mouse or touch drag operation occurs on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-drag + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {OpenSeadragon.Point} delta - The x,y components of the difference between start drag and end drag. + * @property {Number} speed - Current computed speed, in pixels per second. + * @property {Number} direction - Current computed direction, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-drag', { + tracker: event.eventSource, + position: event.position, + delta: event.delta, + speed: event.speed, + direction: event.direction, + shift: event.shift, + originalEvent: event.originalEvent + }); +} + +function onCanvasDragEnd( event ) { + if (!event.preventDefaultAction && this.viewport) { + var gestureSettings = this.gestureSettingsByDeviceType(event.pointerType); + if (gestureSettings.flickEnabled && + event.speed >= gestureSettings.flickMinSpeed) { + var amplitudeX = 0; + if (this.panHorizontal) { + amplitudeX = gestureSettings.flickMomentum * event.speed * + Math.cos(event.direction); + } + var amplitudeY = 0; + if (this.panVertical) { + amplitudeY = gestureSettings.flickMomentum * event.speed * + Math.sin(event.direction); + } + var center = this.viewport.pixelFromPoint( + this.viewport.getCenter(true)); + var target = this.viewport.pointFromPixel( + new $.Point(center.x - amplitudeX, center.y - amplitudeY)); + this.viewport.panTo(target, false); + } + this.viewport.applyConstraints(); + } + /** + * Raised when a mouse or touch drag operation ends on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-drag-end + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} speed - Speed at the end of a drag gesture, in pixels per second. + * @property {Number} direction - Direction at the end of a drag gesture, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent('canvas-drag-end', { + tracker: event.eventSource, + position: event.position, + speed: event.speed, + direction: event.direction, + shift: event.shift, + originalEvent: event.originalEvent + }); +} + +function onCanvasEnter( event ) { + /** + * Raised when a pointer enters the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-enter + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} buttons - Current buttons pressed. A combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Number} pointers - Number of pointers (all types) active in the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} buttonDownAny - Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-enter', { + tracker: event.eventSource, + pointerType: event.pointerType, + position: event.position, + buttons: event.buttons, + pointers: event.pointers, + insideElementPressed: event.insideElementPressed, + buttonDownAny: event.buttonDownAny, + originalEvent: event.originalEvent + }); +} + +function onCanvasExit( event ) { + /** + * Raised when a pointer leaves the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-exit + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} buttons - Current buttons pressed. A combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Number} pointers - Number of pointers (all types) active in the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} buttonDownAny - Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-exit', { + tracker: event.eventSource, + pointerType: event.pointerType, + position: event.position, + buttons: event.buttons, + pointers: event.pointers, + insideElementPressed: event.insideElementPressed, + buttonDownAny: event.buttonDownAny, + originalEvent: event.originalEvent + }); +} + +function onCanvasPress( event ) { + /** + * Raised when the primary mouse button is pressed or touch starts on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-press + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} insideElementReleased - True if the cursor still inside the tracked element when the button was released. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-press', { + tracker: event.eventSource, + pointerType: event.pointerType, + position: event.position, + insideElementPressed: event.insideElementPressed, + insideElementReleased: event.insideElementReleased, + originalEvent: event.originalEvent + }); +} + +function onCanvasRelease( event ) { + /** + * Raised when the primary mouse button is released or touch ends on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-release + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} insideElementReleased - True if the cursor still inside the tracked element when the button was released. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-release', { + tracker: event.eventSource, + pointerType: event.pointerType, + position: event.position, + insideElementPressed: event.insideElementPressed, + insideElementReleased: event.insideElementReleased, + originalEvent: event.originalEvent + }); +} + +function onCanvasNonPrimaryPress( event ) { + /** + * Raised when any non-primary pointer button is pressed on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-nonprimary-press + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {Number} button - Button which caused the event. + * -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * @property {Number} buttons - Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-nonprimary-press', { + tracker: event.eventSource, + position: event.position, + pointerType: event.pointerType, + button: event.button, + buttons: event.buttons, + originalEvent: event.originalEvent + }); +} + +function onCanvasNonPrimaryRelease( event ) { + /** + * Raised when any non-primary pointer button is released on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-nonprimary-release + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {String} pointerType - "mouse", "touch", "pen", etc. + * @property {Number} button - Button which caused the event. + * -1: none, 0: primary/left, 1: aux/middle, 2: secondary/right, 3: X1/back, 4: X2/forward, 5: pen eraser. + * @property {Number} buttons - Current buttons pressed. + * Combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-nonprimary-release', { + tracker: event.eventSource, + position: event.position, + pointerType: event.pointerType, + button: event.button, + buttons: event.buttons, + originalEvent: event.originalEvent + }); +} + +function onCanvasPinch( event ) { + var gestureSettings, + centerPt, + lastCenterPt, + panByPt; + + if ( !event.preventDefaultAction && this.viewport ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.pinchToZoom ) { + centerPt = this.viewport.pointFromPixel( event.center, true ); + lastCenterPt = this.viewport.pointFromPixel( event.lastCenter, true ); + panByPt = lastCenterPt.minus( centerPt ); + if( !this.panHorizontal ) { + panByPt.x = 0; + } + if( !this.panVertical ) { + panByPt.y = 0; + } + this.viewport.zoomBy( event.distance / event.lastDistance, centerPt, true ); + this.viewport.panBy( panByPt, true ); + this.viewport.applyConstraints(); + } + if ( gestureSettings.pinchRotate ) { + // Pinch rotate + var angle1 = Math.atan2(event.gesturePoints[0].currentPos.y - event.gesturePoints[1].currentPos.y, + event.gesturePoints[0].currentPos.x - event.gesturePoints[1].currentPos.x); + var angle2 = Math.atan2(event.gesturePoints[0].lastPos.y - event.gesturePoints[1].lastPos.y, + event.gesturePoints[0].lastPos.x - event.gesturePoints[1].lastPos.x); + this.viewport.setRotation(this.viewport.getRotation() + ((angle1 - angle2) * (180 / Math.PI))); + } + } + /** + * Raised when a pinch event occurs on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-pinch + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {Array.} gesturePoints - Gesture points associated with the gesture. Velocity data can be found here. + * @property {OpenSeadragon.Point} lastCenter - The previous center point of the two pinch contact points relative to the tracked element. + * @property {OpenSeadragon.Point} center - The center point of the two pinch contact points relative to the tracked element. + * @property {Number} lastDistance - The previous distance between the two pinch contact points in CSS pixels. + * @property {Number} distance - The distance between the two pinch contact points in CSS pixels. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent('canvas-pinch', { + tracker: event.eventSource, + gesturePoints: event.gesturePoints, + lastCenter: event.lastCenter, + center: event.center, + lastDistance: event.lastDistance, + distance: event.distance, + shift: event.shift, + originalEvent: event.originalEvent + }); + //cancels event + return false; +} + +function onCanvasScroll( event ) { + var gestureSettings, + factor, + thisScrollTime, + deltaScrollTime; + + /* Certain scroll devices fire the scroll event way too fast so we are injecting a simple adjustment to keep things + * partially normalized. If we have already fired an event within the last 'minScrollDelta' milliseconds we skip + * this one and wait for the next event. */ + thisScrollTime = $.now(); + deltaScrollTime = thisScrollTime - this._lastScrollTime; + if (deltaScrollTime > this.minScrollDeltaTime) { + this._lastScrollTime = thisScrollTime; + + if ( !event.preventDefaultAction && this.viewport ) { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if ( gestureSettings.scrollToZoom ) { + factor = Math.pow( this.zoomPerScroll, event.scroll ); + this.viewport.zoomBy( + factor, + this.viewport.pointFromPixel( event.position, true ) + ); + this.viewport.applyConstraints(); + } + } + /** + * Raised when a scroll event occurs on the {@link OpenSeadragon.Viewer#canvas} element (mouse wheel). + * + * @event canvas-scroll + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} scroll - The scroll delta for the event. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-scroll', { + tracker: event.eventSource, + position: event.position, + scroll: event.scroll, + shift: event.shift, + originalEvent: event.originalEvent + }); + if (gestureSettings && gestureSettings.scrollToZoom) { + //cancels event + return false; + } + } + else { + gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); + if (gestureSettings && gestureSettings.scrollToZoom) { + return false; // We are swallowing this event + } + } +} + +function onContainerEnter( event ) { + THIS[ this.hash ].mouseInside = true; + abortControlsAutoHide( this ); + /** + * Raised when the cursor enters the {@link OpenSeadragon.Viewer#container} element. + * + * @event container-enter + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} buttons - Current buttons pressed. A combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Number} pointers - Number of pointers (all types) active in the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} buttonDownAny - Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'container-enter', { + tracker: event.eventSource, + position: event.position, + buttons: event.buttons, + pointers: event.pointers, + insideElementPressed: event.insideElementPressed, + buttonDownAny: event.buttonDownAny, + originalEvent: event.originalEvent + }); +} + +function onContainerExit( event ) { + if ( event.pointers < 1 ) { + THIS[ this.hash ].mouseInside = false; + if ( !THIS[ this.hash ].animating ) { + beginControlsAutoHide( this ); + } + } + /** + * Raised when the cursor leaves the {@link OpenSeadragon.Viewer#container} element. + * + * @event container-exit + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} buttons - Current buttons pressed. A combination of bit flags 0: none, 1: primary (or touch contact), 2: secondary, 4: aux (often middle), 8: X1 (often back), 16: X2 (often forward), 32: pen eraser. + * @property {Number} pointers - Number of pointers (all types) active in the tracked element. + * @property {Boolean} insideElementPressed - True if the left mouse button is currently being pressed and was initiated inside the tracked element, otherwise false. + * @property {Boolean} buttonDownAny - Was the button down anywhere in the screen during the event. Deprecated. Use buttons instead. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'container-exit', { + tracker: event.eventSource, + position: event.position, + buttons: event.buttons, + pointers: event.pointers, + insideElementPressed: event.insideElementPressed, + buttonDownAny: event.buttonDownAny, + originalEvent: event.originalEvent + }); +} + + +/////////////////////////////////////////////////////////////////////////////// +// Page update routines ( aka Views - for future reference ) +/////////////////////////////////////////////////////////////////////////////// + +function updateMulti( viewer ) { + updateOnce( viewer ); + + // Request the next frame, unless we've been closed + if ( viewer.isOpen() ) { + viewer._updateRequestId = scheduleUpdate( viewer, updateMulti ); + } else { + viewer._updateRequestId = false; + } +} + +function updateOnce( viewer ) { + + //viewer.profiler.beginUpdate(); + + if (viewer._opening) { + return; + } + + if (viewer.autoResize) { + var containerSize = _getSafeElemSize(viewer.container); + var prevContainerSize = THIS[viewer.hash].prevContainerSize; + if (!containerSize.equals(prevContainerSize)) { + var viewport = viewer.viewport; + if (viewer.preserveImageSizeOnResize) { + var resizeRatio = prevContainerSize.x / containerSize.x; + var zoom = viewport.getZoom() * resizeRatio; + var center = viewport.getCenter(); + viewport.resize(containerSize, false); + viewport.zoomTo(zoom, null, true); + viewport.panTo(center, true); + } else { + // maintain image position + var oldBounds = viewport.getBounds(); + viewport.resize(containerSize, true); + viewport.fitBoundsWithConstraints(oldBounds, true); + } + THIS[viewer.hash].prevContainerSize = containerSize; + THIS[viewer.hash].forceRedraw = true; + } + } + + var viewportChange = viewer.viewport.update(); + var animated = viewer.world.update() || viewportChange; + + if (viewportChange) { + /** + * Raised when any spring animation update occurs (zoom, pan, etc.), + * before the viewer has drawn the new location. + * + * @event viewport-change + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + viewer.raiseEvent('viewport-change'); + } + + if( viewer.referenceStrip ){ + animated = viewer.referenceStrip.update( viewer.viewport ) || animated; + } + + if ( !THIS[ viewer.hash ].animating && animated ) { + /** + * Raised when any spring animation starts (zoom, pan, etc.). + * + * @event animation-start + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + viewer.raiseEvent( "animation-start" ); + abortControlsAutoHide( viewer ); + } + + if ( animated || THIS[ viewer.hash ].forceRedraw || viewer.world.needsDraw() ) { + drawWorld( viewer ); + viewer._drawOverlays(); + if( viewer.navigator ){ + viewer.navigator.update( viewer.viewport ); + } + + THIS[ viewer.hash ].forceRedraw = false; + + if (animated) { + /** + * Raised when any spring animation update occurs (zoom, pan, etc.), + * after the viewer has drawn the new location. + * + * @event animation + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + viewer.raiseEvent( "animation" ); + } + } + + if ( THIS[ viewer.hash ].animating && !animated ) { + /** + * Raised when any spring animation ends (zoom, pan, etc.). + * + * @event animation-finish + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + viewer.raiseEvent( "animation-finish" ); + + if ( !THIS[ viewer.hash ].mouseInside ) { + beginControlsAutoHide( viewer ); + } + } + + THIS[ viewer.hash ].animating = animated; + + //viewer.profiler.endUpdate(); +} + +function drawWorld( viewer ) { + viewer.imageLoader.clear(); + viewer.drawer.clear(); + viewer.world.draw(); + + /** + * - Needs documentation - + * + * @event update-viewport + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + viewer.raiseEvent( 'update-viewport', {} ); +} + +/////////////////////////////////////////////////////////////////////////////// +// Navigation Controls +/////////////////////////////////////////////////////////////////////////////// +function resolveUrl( prefix, url ) { + return prefix ? prefix + url : url; +} + + + +function beginZoomingIn() { + THIS[ this.hash ].lastZoomTime = $.now(); + THIS[ this.hash ].zoomFactor = this.zoomPerSecond; + THIS[ this.hash ].zooming = true; + scheduleZoom( this ); +} + + +function beginZoomingOut() { + THIS[ this.hash ].lastZoomTime = $.now(); + THIS[ this.hash ].zoomFactor = 1.0 / this.zoomPerSecond; + THIS[ this.hash ].zooming = true; + scheduleZoom( this ); +} + + +function endZooming() { + THIS[ this.hash ].zooming = false; +} + + +function scheduleZoom( viewer ) { + $.requestAnimationFrame( $.delegate( viewer, doZoom ) ); +} + + +function doZoom() { + var currentTime, + deltaTime, + adjustedFactor; + + if ( THIS[ this.hash ].zooming && this.viewport) { + currentTime = $.now(); + deltaTime = currentTime - THIS[ this.hash ].lastZoomTime; + adjustedFactor = Math.pow( THIS[ this.hash ].zoomFactor, deltaTime / 1000 ); + + this.viewport.zoomBy( adjustedFactor ); + this.viewport.applyConstraints(); + THIS[ this.hash ].lastZoomTime = currentTime; + scheduleZoom( this ); + } +} + + +function doSingleZoomIn() { + if ( this.viewport ) { + THIS[ this.hash ].zooming = false; + this.viewport.zoomBy( + this.zoomPerClick / 1.0 + ); + this.viewport.applyConstraints(); + } +} + + +function doSingleZoomOut() { + if ( this.viewport ) { + THIS[ this.hash ].zooming = false; + this.viewport.zoomBy( + 1.0 / this.zoomPerClick + ); + this.viewport.applyConstraints(); + } +} + + +function lightUp() { + this.buttons.emulateEnter(); + this.buttons.emulateExit(); +} + + +function onHome() { + if ( this.viewport ) { + this.viewport.goHome(); + } +} + + +function onFullScreen() { + if ( this.isFullPage() && !$.isFullScreen() ) { + // Is fullPage but not fullScreen + this.setFullPage( false ); + } else { + this.setFullScreen( !this.isFullPage() ); + } + // correct for no mouseout event on change + if ( this.buttons ) { + this.buttons.emulateExit(); + } + this.fullPageButton.element.focus(); + if ( this.viewport ) { + this.viewport.applyConstraints(); + } +} + +/** + * Note: The current rotation feature is limited to 90 degree turns. + */ +function onRotateLeft() { + if ( this.viewport ) { + var currRotation = this.viewport.getRotation(); + if (currRotation === 0) { + currRotation = 270; + } + else { + currRotation -= 90; + } + this.viewport.setRotation(currRotation); + } +} + +/** + * Note: The current rotation feature is limited to 90 degree turns. + */ +function onRotateRight() { + if ( this.viewport ) { + var currRotation = this.viewport.getRotation(); + if (currRotation === 270) { + currRotation = 0; + } + else { + currRotation += 90; + } + this.viewport.setRotation(currRotation); + } +} + + +function onPrevious(){ + var previous = this._sequenceIndex - 1; + if(this.navPrevNextWrap && previous < 0){ + previous += this.tileSources.length; + } + this.goToPage( previous ); +} + + +function onNext(){ + var next = this._sequenceIndex + 1; + if(this.navPrevNextWrap && next >= this.tileSources.length){ + next = 0; + } + this.goToPage( next ); +} + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Navigator + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class Navigator + * @classdesc The Navigator provides a small view of the current image as fixed + * while representing the viewport as a moving box serving as a frame + * of reference in the larger viewport as to which portion of the image + * is currently being examined. The navigator's viewport can be interacted + * with using the keyboard or the mouse. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.Viewer + * @extends OpenSeadragon.EventSource + * @param {Object} options + */ +$.Navigator = function( options ){ + + var viewer = options.viewer, + _this = this, + viewerSize, + navigatorSize; + + //We may need to create a new element and id if they did not + //provide the id for the existing element + if( !options.id ){ + options.id = 'navigator-' + $.now(); + this.element = $.makeNeutralElement( "div" ); + options.controlOptions = { + anchor: $.ControlAnchor.TOP_RIGHT, + attachToViewer: true, + autoFade: options.autoFade + }; + + if( options.position ){ + if( 'BOTTOM_RIGHT' == options.position ){ + options.controlOptions.anchor = $.ControlAnchor.BOTTOM_RIGHT; + } else if( 'BOTTOM_LEFT' == options.position ){ + options.controlOptions.anchor = $.ControlAnchor.BOTTOM_LEFT; + } else if( 'TOP_RIGHT' == options.position ){ + options.controlOptions.anchor = $.ControlAnchor.TOP_RIGHT; + } else if( 'TOP_LEFT' == options.position ){ + options.controlOptions.anchor = $.ControlAnchor.TOP_LEFT; + } else if( 'ABSOLUTE' == options.position ){ + options.controlOptions.anchor = $.ControlAnchor.ABSOLUTE; + options.controlOptions.top = options.top; + options.controlOptions.left = options.left; + options.controlOptions.height = options.height; + options.controlOptions.width = options.width; + } + } + + } else { + this.element = document.getElementById( options.id ); + options.controlOptions = { + anchor: $.ControlAnchor.NONE, + attachToViewer: false, + autoFade: false + }; + } + this.element.id = options.id; + this.element.className += ' navigator'; + + options = $.extend( true, { + sizeRatio: $.DEFAULT_SETTINGS.navigatorSizeRatio + }, options, { + element: this.element, + tabIndex: -1, // No keyboard navigation, omit from tab order + //These need to be overridden to prevent recursion since + //the navigator is a viewer and a viewer has a navigator + showNavigator: false, + mouseNavEnabled: false, + showNavigationControl: false, + showSequenceControl: false, + immediateRender: true, + blendTime: 0, + animationTime: 0, + autoResize: options.autoResize, + // prevent resizing the navigator from adding unwanted space around the image + minZoomImageRatio: 1.0 + }); + + options.minPixelRatio = this.minPixelRatio = viewer.minPixelRatio; + + $.setElementTouchActionNone( this.element ); + + this.borderWidth = 2; + //At some browser magnification levels the display regions lines up correctly, but at some there appears to + //be a one pixel gap. + this.fudge = new $.Point(1, 1); + this.totalBorderWidths = new $.Point(this.borderWidth*2, this.borderWidth*2).minus(this.fudge); + + + if ( options.controlOptions.anchor != $.ControlAnchor.NONE ) { + (function( style, borderWidth ){ + style.margin = '0px'; + style.border = borderWidth + 'px solid #555'; + style.padding = '0px'; + style.background = '#000'; + style.opacity = 0.8; + style.overflow = 'hidden'; + }( this.element.style, this.borderWidth)); + } + + this.displayRegion = $.makeNeutralElement( "div" ); + this.displayRegion.id = this.element.id + '-displayregion'; + this.displayRegion.className = 'displayregion'; + + (function( style, borderWidth ){ + style.position = 'relative'; + style.top = '0px'; + style.left = '0px'; + style.fontSize = '0px'; + style.overflow = 'hidden'; + style.border = borderWidth + 'px solid #900'; + style.margin = '0px'; + style.padding = '0px'; + //TODO: IE doesnt like this property being set + //try{ style.outline = '2px auto #909'; }catch(e){/*ignore*/} + + style.background = 'transparent'; + + // We use square bracket notation on the statement below, because float is a keyword. + // This is important for the Google Closure compiler, if nothing else. + /*jshint sub:true */ + style['float'] = 'left'; //Webkit + + style.cssFloat = 'left'; //Firefox + style.styleFloat = 'left'; //IE + style.zIndex = 999999999; + style.cursor = 'default'; + }( this.displayRegion.style, this.borderWidth )); + + this.displayRegionContainer = $.makeNeutralElement("div"); + this.displayRegionContainer.id = this.element.id + '-displayregioncontainer'; + this.displayRegionContainer.className = "displayregioncontainer"; + this.displayRegionContainer.style.width = "100%"; + this.displayRegionContainer.style.height = "100%"; + + viewer.addControl( + this.element, + options.controlOptions + ); + + this._resizeWithViewer = options.controlOptions.anchor != $.ControlAnchor.ABSOLUTE && + options.controlOptions.anchor != $.ControlAnchor.NONE; + + if ( this._resizeWithViewer ) { + if ( options.width && options.height ) { + this.element.style.height = typeof ( options.height ) == "number" ? ( options.height + 'px' ) : options.height; + this.element.style.width = typeof ( options.width ) == "number" ? ( options.width + 'px' ) : options.width; + } else { + viewerSize = $.getElementSize( viewer.element ); + this.element.style.height = Math.round( viewerSize.y * options.sizeRatio ) + 'px'; + this.element.style.width = Math.round( viewerSize.x * options.sizeRatio ) + 'px'; + this.oldViewerSize = viewerSize; + } + navigatorSize = $.getElementSize( this.element ); + this.elementArea = navigatorSize.x * navigatorSize.y; + } + + this.oldContainerSize = new $.Point( 0, 0 ); + + $.Viewer.apply( this, [ options ] ); + + this.displayRegionContainer.appendChild(this.displayRegion); + this.element.getElementsByTagName('div')[0].appendChild(this.displayRegionContainer); + + function rotate(degrees) { + _setTransformRotate(_this.displayRegionContainer, degrees); + _setTransformRotate(_this.displayRegion, -degrees); + _this.viewport.setRotation(degrees); + } + if (options.navigatorRotate) { + var degrees = options.viewer.viewport ? + options.viewer.viewport.getRotation() : + options.viewer.degrees || 0; + rotate(degrees); + options.viewer.addHandler("rotate", function (args) { + rotate(args.degrees); + }); + } + + // Remove the base class' (Viewer's) innerTracker and replace it with our own + this.innerTracker.destroy(); + this.innerTracker = new $.MouseTracker({ + element: this.element, + dragHandler: $.delegate( this, onCanvasDrag ), + clickHandler: $.delegate( this, onCanvasClick ), + releaseHandler: $.delegate( this, onCanvasRelease ), + scrollHandler: $.delegate( this, onCanvasScroll ) + }); + + this.addHandler("reset-size", function() { + if (_this.viewport) { + _this.viewport.goHome(true); + } + }); + + viewer.world.addHandler("item-index-change", function(event) { + var item = _this.world.getItemAt(event.previousIndex); + _this.world.setItemIndex(item, event.newIndex); + }); + + viewer.world.addHandler("remove-item", function(event) { + var theirItem = event.item; + var myItem = _this._getMatchingItem(theirItem); + if (myItem) { + _this.world.removeItem(myItem); + } + }); + + this.update(viewer.viewport); +}; + +$.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /** @lends OpenSeadragon.Navigator.prototype */{ + + /** + * Used to notify the navigator when its size has changed. + * Especially useful when {@link OpenSeadragon.Options}.navigatorAutoResize is set to false and the navigator is resizable. + * @function + */ + updateSize: function () { + if ( this.viewport ) { + var containerSize = new $.Point( + (this.container.clientWidth === 0 ? 1 : this.container.clientWidth), + (this.container.clientHeight === 0 ? 1 : this.container.clientHeight) + ); + + if ( !containerSize.equals( this.oldContainerSize ) ) { + this.viewport.resize( containerSize, true ); + this.viewport.goHome(true); + this.oldContainerSize = containerSize; + this.drawer.clear(); + this.world.draw(); + } + } + }, + + /** + * Used to update the navigator minimap's viewport rectangle when a change in the viewer's viewport occurs. + * @function + * @param {OpenSeadragon.Viewport} The viewport this navigator is tracking. + */ + update: function( viewport ) { + + var viewerSize, + newWidth, + newHeight, + bounds, + topleft, + bottomright; + + viewerSize = $.getElementSize( this.viewer.element ); + if ( this._resizeWithViewer && viewerSize.x && viewerSize.y && !viewerSize.equals( this.oldViewerSize ) ) { + this.oldViewerSize = viewerSize; + + if ( this.maintainSizeRatio || !this.elementArea) { + newWidth = viewerSize.x * this.sizeRatio; + newHeight = viewerSize.y * this.sizeRatio; + } else { + newWidth = Math.sqrt(this.elementArea * (viewerSize.x / viewerSize.y)); + newHeight = this.elementArea / newWidth; + } + + this.element.style.width = Math.round( newWidth ) + 'px'; + this.element.style.height = Math.round( newHeight ) + 'px'; + + if (!this.elementArea) { + this.elementArea = newWidth * newHeight; + } + + this.updateSize(); + } + + if (viewport && this.viewport) { + bounds = viewport.getBoundsNoRotate(true); + topleft = this.viewport.pixelFromPointNoRotate(bounds.getTopLeft(), false); + bottomright = this.viewport.pixelFromPointNoRotate(bounds.getBottomRight(), false) + .minus( this.totalBorderWidths ); + + //update style for navigator-box + var style = this.displayRegion.style; + style.display = this.world.getItemCount() ? 'block' : 'none'; + + style.top = Math.round( topleft.y ) + 'px'; + style.left = Math.round( topleft.x ) + 'px'; + + var width = Math.abs( topleft.x - bottomright.x ); + var height = Math.abs( topleft.y - bottomright.y ); + // make sure width and height are non-negative so IE doesn't throw + style.width = Math.round( Math.max( width, 0 ) ) + 'px'; + style.height = Math.round( Math.max( height, 0 ) ) + 'px'; + } + + }, + + // overrides Viewer.addTiledImage + addTiledImage: function(options) { + var _this = this; + + var original = options.originalTiledImage; + delete options.original; + + var optionsClone = $.extend({}, options, { + success: function(event) { + var myItem = event.item; + myItem._originalForNavigator = original; + _this._matchBounds(myItem, original, true); + + original.addHandler('bounds-change', function() { + _this._matchBounds(myItem, original); + }); + } + }); + + return $.Viewer.prototype.addTiledImage.apply(this, [optionsClone]); + }, + + // private + _getMatchingItem: function(theirItem) { + var count = this.world.getItemCount(); + var item; + for (var i = 0; i < count; i++) { + item = this.world.getItemAt(i); + if (item._originalForNavigator === theirItem) { + return item; + } + } + + return null; + }, + + // private + _matchBounds: function(myItem, theirItem, immediately) { + var bounds = theirItem.getBounds(); + myItem.setPosition(bounds.getTopLeft(), immediately); + myItem.setWidth(bounds.width, immediately); + } +}); + +/** + * @private + * @inner + * @function + */ +function onCanvasClick( event ) { + if ( event.quick && this.viewer.viewport ) { + this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); + this.viewer.viewport.applyConstraints(); + } +} + +/** + * @private + * @inner + * @function + */ +function onCanvasDrag( event ) { + if ( this.viewer.viewport ) { + if( !this.panHorizontal ){ + event.delta.x = 0; + } + if( !this.panVertical ){ + event.delta.y = 0; + } + this.viewer.viewport.panBy( + this.viewport.deltaPointsFromPixels( + event.delta + ) + ); + } +} + + +/** + * @private + * @inner + * @function + */ +function onCanvasRelease( event ) { + if ( event.insideElementPressed && this.viewer.viewport ) { + this.viewer.viewport.applyConstraints(); + } +} + + +/** + * @private + * @inner + * @function + */ +function onCanvasScroll( event ) { + /** + * Raised when a scroll event occurs on the {@link OpenSeadragon.Viewer#navigator} element (mouse wheel, touch pinch, etc.). + * + * @event navigator-scroll + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Number} scroll - The scroll delta for the event. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'navigator-scroll', { + tracker: event.eventSource, + position: event.position, + scroll: event.scroll, + shift: event.shift, + originalEvent: event.originalEvent + }); + + //dont scroll the page up and down if the user is scrolling + //in the navigator + return false; +} + +/** + * @function + * @private + * @param {Object} element + * @param {Number} degrees + */ +function _setTransformRotate (element, degrees) { + element.style.webkitTransform = "rotate(" + degrees + "deg)"; + element.style.mozTransform = "rotate(" + degrees + "deg)"; + element.style.msTransform = "rotate(" + degrees + "deg)"; + element.style.oTransform = "rotate(" + degrees + "deg)"; + element.style.transform = "rotate(" + degrees + "deg)"; +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - getString/setString + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +//TODO: I guess this is where the i18n needs to be reimplemented. I'll look +// into existing patterns for i18n in javascript but i think that mimicking +// pythons gettext might be a reasonable approach. +var I18N = { + Errors: { + Dzc: "Sorry, we don't support Deep Zoom Collections!", + Dzi: "Hmm, this doesn't appear to be a valid Deep Zoom Image.", + Xml: "Hmm, this doesn't appear to be a valid Deep Zoom Image.", + ImageFormat: "Sorry, we don't support {0}-based Deep Zoom Images.", + Security: "It looks like a security restriction stopped us from " + + "loading this Deep Zoom Image.", + Status: "This space unintentionally left blank ({0} {1}).", + OpenFailed: "Unable to open {0}: {1}" + }, + + Tooltips: { + FullPage: "Toggle full page", + Home: "Go home", + ZoomIn: "Zoom in", + ZoomOut: "Zoom out", + NextPage: "Next page", + PreviousPage: "Previous page", + RotateLeft: "Rotate left", + RotateRight: "Rotate right" + } +}; + +$.extend( $, /** @lends OpenSeadragon */{ + + /** + * @function + * @param {String} property + */ + getString: function( prop ) { + + var props = prop.split('.'), + string = null, + args = arguments, + container = I18N, + i; + + for ( i = 0; i < props.length-1; i++ ) { + // in case not a subproperty + container = container[ props[ i ] ] || {}; + } + string = container[ props[ i ] ]; + + if ( typeof( string ) != "string" ) { + $.console.debug( "Untranslated source string:", prop ); + string = ""; // FIXME: this breaks gettext()-style convention, which would return source + } + + return string.replace(/\{\d+\}/g, function(capture) { + var i = parseInt( capture.match( /\d+/ ), 10 ) + 1; + return i < args.length ? + args[ i ] : + ""; + }); + }, + + /** + * @function + * @param {String} property + * @param {*} value + */ + setString: function( prop, value ) { + + var props = prop.split('.'), + container = I18N, + i; + + for ( i = 0; i < props.length - 1; i++ ) { + if ( !container[ props[ i ] ] ) { + container[ props[ i ] ] = {}; + } + container = container[ props[ i ] ]; + } + + container[ props[ i ] ] = value; + } + +}); + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Point + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class Point + * @classdesc A Point is really used as a 2-dimensional vector, equally useful for + * representing a point on a plane, or the height and width of a plane + * not requiring any other frame of reference. + * + * @memberof OpenSeadragon + * @param {Number} [x] The vector component 'x'. Defaults to the origin at 0. + * @param {Number} [y] The vector component 'y'. Defaults to the origin at 0. + */ +$.Point = function( x, y ) { + /** + * The vector component 'x'. + * @member {Number} x + * @memberof OpenSeadragon.Point# + */ + this.x = typeof ( x ) == "number" ? x : 0; + /** + * The vector component 'y'. + * @member {Number} y + * @memberof OpenSeadragon.Point# + */ + this.y = typeof ( y ) == "number" ? y : 0; +}; + +/** @lends OpenSeadragon.Point.prototype */ +$.Point.prototype = { + /** + * @function + * @returns {OpenSeadragon.Point} a duplicate of this Point + */ + clone: function() { + return new $.Point(this.x, this.y); + }, + + /** + * Add another Point to this point and return a new Point. + * @function + * @param {OpenSeadragon.Point} point The point to add vector components. + * @returns {OpenSeadragon.Point} A new point representing the sum of the + * vector components + */ + plus: function( point ) { + return new $.Point( + this.x + point.x, + this.y + point.y + ); + }, + + /** + * Substract another Point to this point and return a new Point. + * @function + * @param {OpenSeadragon.Point} point The point to substract vector components. + * @returns {OpenSeadragon.Point} A new point representing the substraction of the + * vector components + */ + minus: function( point ) { + return new $.Point( + this.x - point.x, + this.y - point.y + ); + }, + + /** + * Multiply this point by a factor and return a new Point. + * @function + * @param {Number} factor The factor to multiply vector components. + * @returns {OpenSeadragon.Point} A new point representing the multiplication + * of the vector components by the factor + */ + times: function( factor ) { + return new $.Point( + this.x * factor, + this.y * factor + ); + }, + + /** + * Divide this point by a factor and return a new Point. + * @function + * @param {Number} factor The factor to divide vector components. + * @returns {OpenSeadragon.Point} A new point representing the division of the + * vector components by the factor + */ + divide: function( factor ) { + return new $.Point( + this.x / factor, + this.y / factor + ); + }, + + /** + * Compute the opposite of this point and return a new Point. + * @function + * @returns {OpenSeadragon.Point} A new point representing the opposite of the + * vector components + */ + negate: function() { + return new $.Point( -this.x, -this.y ); + }, + + /** + * Compute the distance between this point and another point. + * @function + * @param {OpenSeadragon.Point} point The point to compute the distance with. + * @returns {Number} The distance between the 2 points + */ + distanceTo: function( point ) { + return Math.sqrt( + Math.pow( this.x - point.x, 2 ) + + Math.pow( this.y - point.y, 2 ) + ); + }, + + /** + * Apply a function to each coordinate of this point and return a new point. + * @function + * @param {function} func The function to apply to each coordinate. + * @returns {OpenSeadragon.Point} A new point with the coordinates computed + * by the specified function + */ + apply: function( func ) { + return new $.Point( func( this.x ), func( this.y ) ); + }, + + /** + * Check if this point is equal to another one. + * @function + * @param {OpenSeadragon.Point} point The point to compare this point with. + * @returns {Boolean} true if they are equal, false otherwise. + */ + equals: function( point ) { + return ( + point instanceof $.Point + ) && ( + this.x === point.x + ) && ( + this.y === point.y + ); + }, + + /** + * Rotates the point around the specified pivot + * From http://stackoverflow.com/questions/4465931/rotate-rectangle-around-a-point + * @function + * @param {Number} degress to rotate around the pivot. + * @param {OpenSeadragon.Point} [pivot=(0,0)] Point around which to rotate. + * Defaults to the origin. + * @returns {OpenSeadragon.Point}. A new point representing the point rotated around the specified pivot + */ + rotate: function (degrees, pivot) { + pivot = pivot || new $.Point(0, 0); + var cos; + var sin; + // Avoid float computations when possible + if (degrees % 90 === 0) { + var d = degrees % 360; + if (d < 0) { + d += 360; + } + switch (d) { + case 0: + cos = 1; + sin = 0; + break; + case 90: + cos = 0; + sin = 1; + break; + case 180: + cos = -1; + sin = 0; + break; + case 270: + cos = 0; + sin = -1; + break; + } + } else { + var angle = degrees * Math.PI / 180.0; + cos = Math.cos(angle); + sin = Math.sin(angle); + } + var x = cos * (this.x - pivot.x) - sin * (this.y - pivot.y) + pivot.x; + var y = sin * (this.x - pivot.x) + cos * (this.y - pivot.y) + pivot.y; + return new $.Point(x, y); + }, + + /** + * Convert this point to a string in the format (x,y) where x and y are + * rounded to the nearest integer. + * @function + * @returns {String} A string representation of this point. + */ + toString: function() { + return "(" + (Math.round(this.x * 100) / 100) + "," + (Math.round(this.y * 100) / 100) + ")"; + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - TileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + + +/** + * @class TileSource + * @classdesc The TileSource contains the most basic implementation required to create a + * smooth transition between layers in an image pyramid. It has only a single key + * interface that must be implemented to complete its key functionality: + * 'getTileUrl'. It also has several optional interfaces that can be + * implemented if a new TileSource wishes to support configuration via a simple + * object or array ('configure') and if the tile source supports or requires + * configuration via retrieval of a document on the network ala AJAX or JSONP, + * ('getImageInfo'). + *
+ * By default the image pyramid is split into N layers where the image's longest + * side in M (in pixels), where N is the smallest integer which satisfies + * 2^(N+1) >= M. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.EventSource + * @param {Object} options + * You can either specify a URL, or literally define the TileSource (by specifying + * width, height, tileSize, tileOverlap, minLevel, and maxLevel). For the former, + * the extending class is expected to implement 'getImageInfo' and 'configure'. + * For the latter, the construction is assumed to occur through + * the extending classes implementation of 'configure'. + * @param {String} [options.url] + * The URL for the data necessary for this TileSource. + * @param {Function} [options.success] + * A function to be called upon successful creation. + * @param {Boolean} [options.ajaxWithCredentials] + * If this TileSource needs to make an AJAX call, this specifies whether to set + * the XHR's withCredentials (for accessing secure data). + * @param {Number} [options.width] + * Width of the source image at max resolution in pixels. + * @param {Number} [options.height] + * Height of the source image at max resolution in pixels. + * @param {Number} [options.tileSize] + * The size of the tiles to assumed to make up each pyramid layer in pixels. + * Tile size determines the point at which the image pyramid must be + * divided into a matrix of smaller images. + * Use options.tileWidth and options.tileHeight to support non-square tiles. + * @param {Number} [options.tileWidth] + * The width of the tiles to assumed to make up each pyramid layer in pixels. + * @param {Number} [options.tileHeight] + * The height of the tiles to assumed to make up each pyramid layer in pixels. + * @param {Number} [options.tileOverlap] + * The number of pixels each tile is expected to overlap touching tiles. + * @param {Number} [options.minLevel] + * The minimum level to attempt to load. + * @param {Number} [options.maxLevel] + * The maximum level to attempt to load. + */ +$.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLevel ) { + var _this = this; + + var args = arguments, + options, + i; + + if( $.isPlainObject( width ) ){ + options = width; + }else{ + options = { + width: args[0], + height: args[1], + tileSize: args[2], + tileOverlap: args[3], + minLevel: args[4], + maxLevel: args[5] + }; + } + + //Tile sources supply some events, namely 'ready' when they must be configured + //by asynchronously fetching their configuration data. + $.EventSource.call( this ); + + //we allow options to override anything we dont treat as + //required via idiomatic options or which is functionally + //set depending on the state of the readiness of this tile + //source + $.extend( true, this, options ); + + if (!this.success) { + //Any functions that are passed as arguments are bound to the ready callback + for ( i = 0; i < arguments.length; i++ ) { + if ( $.isFunction( arguments[ i ] ) ) { + this.success = arguments[ i ]; + //only one callback per constructor + break; + } + } + } + + if (this.success) { + this.addHandler( 'ready', function ( event ) { + _this.success( event ); + } ); + } + + /** + * Ratio of width to height + * @member {Number} aspectRatio + * @memberof OpenSeadragon.TileSource# + */ + /** + * Vector storing x and y dimensions ( width and height respectively ). + * @member {OpenSeadragon.Point} dimensions + * @memberof OpenSeadragon.TileSource# + */ + /** + * The overlap in pixels each tile shares with its adjacent neighbors. + * @member {Number} tileOverlap + * @memberof OpenSeadragon.TileSource# + */ + /** + * The minimum pyramid level this tile source supports or should attempt to load. + * @member {Number} minLevel + * @memberof OpenSeadragon.TileSource# + */ + /** + * The maximum pyramid level this tile source supports or should attempt to load. + * @member {Number} maxLevel + * @memberof OpenSeadragon.TileSource# + */ + /** + * + * @member {Boolean} ready + * @memberof OpenSeadragon.TileSource# + */ + + if( 'string' == $.type( arguments[ 0 ] ) ){ + this.url = arguments[0]; + } + + if (this.url) { + //in case the getImageInfo method is overriden and/or implies an + //async mechanism set some safe defaults first + this.aspectRatio = 1; + this.dimensions = new $.Point( 10, 10 ); + this._tileWidth = 0; + this._tileHeight = 0; + this.tileOverlap = 0; + this.minLevel = 0; + this.maxLevel = 0; + this.ready = false; + //configuration via url implies the extending class + //implements and 'configure' + this.getImageInfo( this.url ); + + } else { + + //explicit configuration via positional args in constructor + //or the more idiomatic 'options' object + this.ready = true; + this.aspectRatio = ( options.width && options.height ) ? + ( options.width / options.height ) : 1; + this.dimensions = new $.Point( options.width, options.height ); + + if ( this.tileSize ){ + this._tileWidth = this._tileHeight = this.tileSize; + delete this.tileSize; + } else { + if( this.tileWidth ){ + // We were passed tileWidth in options, but we want to rename it + // with a leading underscore to make clear that it is not safe to directly modify it + this._tileWidth = this.tileWidth; + delete this.tileWidth; + } else { + this._tileWidth = 0; + } + + if( this.tileHeight ){ + // See note above about renaming this.tileWidth + this._tileHeight = this.tileHeight; + delete this.tileHeight; + } else { + this._tileHeight = 0; + } + } + + this.tileOverlap = options.tileOverlap ? options.tileOverlap : 0; + this.minLevel = options.minLevel ? options.minLevel : 0; + this.maxLevel = ( undefined !== options.maxLevel && null !== options.maxLevel ) ? + options.maxLevel : ( + ( options.width && options.height ) ? Math.ceil( + Math.log( Math.max( options.width, options.height ) ) / + Math.log( 2 ) + ) : 0 + ); + if( this.success && $.isFunction( this.success ) ){ + this.success( this ); + } + } + + +}; + +/** @lends OpenSeadragon.TileSource.prototype */ +$.TileSource.prototype = { + + getTileSize: function( level ) { + $.console.error( + "[TileSource.getTileSize] is deprecated." + + "Use TileSource.getTileWidth() and TileSource.getTileHeight() instead" + ); + return this._tileWidth; + }, + + /** + * Return the tileWidth for a given level. + * Subclasses should override this if tileWidth can be different at different levels + * such as in IIIFTileSource. Code should use this function rather than reading + * from ._tileWidth directly. + * @function + * @param {Number} level + */ + getTileWidth: function( level ) { + if (!this._tileWidth) { + return this.getTileSize(level); + } + return this._tileWidth; + }, + + /** + * Return the tileHeight for a given level. + * Subclasses should override this if tileHeight can be different at different levels + * such as in IIIFTileSource. Code should use this function rather than reading + * from ._tileHeight directly. + * @function + * @param {Number} level + */ + getTileHeight: function( level ) { + if (!this._tileHeight) { + return this.getTileSize(level); + } + return this._tileHeight; + }, + + /** + * @function + * @param {Number} level + */ + getLevelScale: function( level ) { + + // see https://github.com/openseadragon/openseadragon/issues/22 + // we use the tilesources implementation of getLevelScale to generate + // a memoized re-implementation + var levelScaleCache = {}, + i; + for( i = 0; i <= this.maxLevel; i++ ){ + levelScaleCache[ i ] = 1 / Math.pow(2, this.maxLevel - i); + } + this.getLevelScale = function( _level ){ + return levelScaleCache[ _level ]; + }; + return this.getLevelScale( level ); + }, + + /** + * @function + * @param {Number} level + */ + getNumTiles: function( level ) { + var scale = this.getLevelScale( level ), + x = Math.ceil( scale * this.dimensions.x / this.getTileWidth(level) ), + y = Math.ceil( scale * this.dimensions.y / this.getTileHeight(level) ); + + return new $.Point( x, y ); + }, + + /** + * @function + * @param {Number} level + */ + getPixelRatio: function( level ) { + var imageSizeScaled = this.dimensions.times( this.getLevelScale( level ) ), + rx = 1.0 / imageSizeScaled.x, + ry = 1.0 / imageSizeScaled.y; + + return new $.Point(rx, ry); + }, + + + /** + * @function + * @param {Number} level + */ + getClosestLevel: function( rect ) { + var i, + tilesPerSide, + tiles; + + for( i = this.minLevel; i < this.maxLevel; i++ ){ + tiles = this.getNumTiles( i ); + tilesPerSide = new $.Point( + Math.floor( rect.x / this.getTileWidth(i) ), + Math.floor( rect.y / this.getTileHeight(i) ) + ); + + if( tiles.x + 1 >= tilesPerSide.x && tiles.y + 1 >= tilesPerSide.y ){ + break; + } + } + return Math.max( 0, i - 1 ); + }, + + /** + * @function + * @param {Number} level + * @param {OpenSeadragon.Point} point + */ + getTileAtPoint: function( level, point ) { + var pixel = point.times( this.dimensions.x ).times( this.getLevelScale(level) ), + tx = Math.floor( pixel.x / this.getTileWidth(level) ), + ty = Math.floor( pixel.y / this.getTileHeight(level) ); + + return new $.Point( tx, ty ); + }, + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + getTileBounds: function( level, x, y ) { + var dimensionsScaled = this.dimensions.times( this.getLevelScale( level ) ), + tileWidth = this.getTileWidth(level), + tileHeight = this.getTileHeight(level), + px = ( x === 0 ) ? 0 : tileWidth * x - this.tileOverlap, + py = ( y === 0 ) ? 0 : tileHeight * y - this.tileOverlap, + sx = tileWidth + ( x === 0 ? 1 : 2 ) * this.tileOverlap, + sy = tileHeight + ( y === 0 ? 1 : 2 ) * this.tileOverlap, + scale = 1.0 / dimensionsScaled.x; + + sx = Math.min( sx, dimensionsScaled.x - px ); + sy = Math.min( sy, dimensionsScaled.y - py ); + + return new $.Rect( px * scale, py * scale, sx * scale, sy * scale ); + }, + + + /** + * Responsible for retrieving, and caching the + * image metadata pertinent to this TileSources implementation. + * @function + * @param {String} url + * @throws {Error} + */ + getImageInfo: function( url ) { + var _this = this, + callbackName, + callback, + readySource, + options, + urlParts, + filename, + lastDot; + + + if( url ) { + urlParts = url.split( '/' ); + filename = urlParts[ urlParts.length - 1 ]; + lastDot = filename.lastIndexOf( '.' ); + if ( lastDot > -1 ) { + urlParts[ urlParts.length - 1 ] = filename.slice( 0, lastDot ); + } + } + + callback = function( data ){ + if( typeof(data) === "string" ) { + data = $.parseXml( data ); + } + var $TileSource = $.TileSource.determineType( _this, data, url ); + if ( !$TileSource ) { + /** + * Raised when an error occurs loading a TileSource. + * + * @event open-failed + * @memberof OpenSeadragon.TileSource + * @type {object} + * @property {OpenSeadragon.TileSource} eventSource - A reference to the TileSource which raised the event. + * @property {String} message + * @property {String} source + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'open-failed', { message: "Unable to load TileSource", source: url } ); + return; + } + + options = $TileSource.prototype.configure.apply( _this, [ data, url ]); + if (options.ajaxWithCredentials === undefined) { + options.ajaxWithCredentials = _this.ajaxWithCredentials; + } + + readySource = new $TileSource( options ); + _this.ready = true; + /** + * Raised when a TileSource is opened and initialized. + * + * @event ready + * @memberof OpenSeadragon.TileSource + * @type {object} + * @property {OpenSeadragon.TileSource} eventSource - A reference to the TileSource which raised the event. + * @property {Object} tileSource + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'ready', { tileSource: readySource } ); + }; + + if( url.match(/\.js$/) ){ + //TODO: Its not very flexible to require tile sources to end jsonp + // request for info with a url that ends with '.js' but for + // now it's the only way I see to distinguish uniformly. + callbackName = url.split( '/' ).pop().replace('.js',''); + $.jsonp({ + url: url, + async: false, + callbackName: callbackName, + callback: callback + }); + } else { + // request info via xhr asynchronously. + $.makeAjaxRequest( { + url: url, + withCredentials: this.ajaxWithCredentials, + success: function( xhr ) { + var data = processResponse( xhr ); + callback( data ); + }, + error: function ( xhr, exc ) { + var msg; + + /* + IE < 10 will block XHR requests to different origins. Any property access on the request + object will raise an exception which we'll attempt to handle by formatting the original + exception rather than the second one raised when we try to access xhr.status + */ + try { + msg = "HTTP " + xhr.status + " attempting to load TileSource"; + } catch ( e ) { + var formattedExc; + if ( typeof( exc ) == "undefined" || !exc.toString ) { + formattedExc = "Unknown error"; + } else { + formattedExc = exc.toString(); + } + + msg = formattedExc + " attempting to load TileSource"; + } + + /*** + * Raised when an error occurs loading a TileSource. + * + * @event open-failed + * @memberof OpenSeadragon.TileSource + * @type {object} + * @property {OpenSeadragon.TileSource} eventSource - A reference to the TileSource which raised the event. + * @property {String} message + * @property {String} source + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( 'open-failed', { + message: msg, + source: url + }); + } + }); + } + + }, + + /** + * Responsible determining if a the particular TileSource supports the + * data format ( and allowed to apply logic against the url the data was + * loaded from, if any ). Overriding implementations are expected to do + * something smart with data and / or url to determine support. Also + * understand that iteration order of TileSources is not guarunteed so + * please make sure your data or url is expressive enough to ensure a simple + * and sufficient mechanisim for clear determination. + * @function + * @param {String|Object|Array|Document} data + * @param {String} url - the url the data was loaded + * from if any. + * @return {Boolean} + */ + supports: function( data, url ) { + return false; + }, + + /** + * Responsible for parsing and configuring the + * image metadata pertinent to this TileSources implementation. + * This method is not implemented by this class other than to throw an Error + * announcing you have to implement it. Because of the variety of tile + * server technologies, and various specifications for building image + * pyramids, this method is here to allow easy integration. + * @function + * @param {String|Object|Array|Document} data + * @param {String} url - the url the data was loaded + * from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + * @throws {Error} + */ + configure: function( data, url ) { + throw new Error( "Method not implemented." ); + }, + + /** + * Responsible for retriving the url which will return an image for the + * region specified by the given x, y, and level components. + * This method is not implemented by this class other than to throw an Error + * announcing you have to implement it. Because of the variety of tile + * server technologies, and various specifications for building image + * pyramids, this method is here to allow easy integration. + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + * @throws {Error} + */ + getTileUrl: function( level, x, y ) { + throw new Error( "Method not implemented." ); + }, + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + tileExists: function( level, x, y ) { + var numTiles = this.getNumTiles( level ); + return level >= this.minLevel && + level <= this.maxLevel && + x >= 0 && + y >= 0 && + x < numTiles.x && + y < numTiles.y; + } +}; + + +$.extend( true, $.TileSource.prototype, $.EventSource.prototype ); + + +/** + * Decides whether to try to process the response as xml, json, or hand back + * the text + * @private + * @inner + * @function + * @param {XMLHttpRequest} xhr - the completed network request + */ +function processResponse( xhr ){ + var responseText = xhr.responseText, + status = xhr.status, + statusText, + data; + + if ( !xhr ) { + throw new Error( $.getString( "Errors.Security" ) ); + } else if ( xhr.status !== 200 && xhr.status !== 0 ) { + status = xhr.status; + statusText = ( status == 404 ) ? + "Not Found" : + xhr.statusText; + throw new Error( $.getString( "Errors.Status", status, statusText ) ); + } + + if( responseText.match(/\s*<.*/) ){ + try{ + data = ( xhr.responseXML && xhr.responseXML.documentElement ) ? + xhr.responseXML : + $.parseXml( responseText ); + } catch (e){ + data = xhr.responseText; + } + }else if( responseText.match(/\s*[\{\[].*/) ){ + data = $.parseJSON(responseText); + }else{ + data = responseText; + } + return data; +} + + +/** + * Determines the TileSource Implementation by introspection of OpenSeadragon + * namespace, calling each TileSource implementation of 'isType' + * @private + * @inner + * @function + * @param {Object|Array|Document} data - the tile source configuration object + * @param {String} url - the url where the tile source configuration object was + * loaded from, if any. + */ +$.TileSource.determineType = function( tileSource, data, url ){ + var property; + for( property in OpenSeadragon ){ + if( property.match(/.+TileSource$/) && + $.isFunction( OpenSeadragon[ property ] ) && + $.isFunction( OpenSeadragon[ property ].prototype.supports ) && + OpenSeadragon[ property ].prototype.supports.call( tileSource, data, url ) + ){ + return OpenSeadragon[ property ]; + } + } + + $.console.error( "No TileSource was able to open %s %s", url, data ); +}; + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - DziTileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class DziTileSource + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @param {Number|Object} width - the pixel width of the image or the idiomatic + * options object which is used instead of positional arguments. + * @param {Number} height + * @param {Number} tileSize + * @param {Number} tileOverlap + * @param {String} tilesUrl + * @param {String} fileFormat + * @param {OpenSeadragon.DisplayRect[]} displayRects + * @property {String} tilesUrl + * @property {String} fileFormat + * @property {OpenSeadragon.DisplayRect[]} displayRects + */ +$.DziTileSource = function( width, height, tileSize, tileOverlap, tilesUrl, fileFormat, displayRects, minLevel, maxLevel ) { + var i, + rect, + level, + options; + + if( $.isPlainObject( width ) ){ + options = width; + }else{ + options = { + width: arguments[ 0 ], + height: arguments[ 1 ], + tileSize: arguments[ 2 ], + tileOverlap: arguments[ 3 ], + tilesUrl: arguments[ 4 ], + fileFormat: arguments[ 5 ], + displayRects: arguments[ 6 ], + minLevel: arguments[ 7 ], + maxLevel: arguments[ 8 ] + }; + } + + this._levelRects = {}; + this.tilesUrl = options.tilesUrl; + this.fileFormat = options.fileFormat; + this.displayRects = options.displayRects; + + if ( this.displayRects ) { + for ( i = this.displayRects.length - 1; i >= 0; i-- ) { + rect = this.displayRects[ i ]; + for ( level = rect.minLevel; level <= rect.maxLevel; level++ ) { + if ( !this._levelRects[ level ] ) { + this._levelRects[ level ] = []; + } + this._levelRects[ level ].push( rect ); + } + } + } + + $.TileSource.apply( this, [ options ] ); + +}; + +$.extend( $.DziTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.DziTileSource.prototype */{ + + + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function( data, url ){ + var ns; + if ( data.Image ) { + ns = data.Image.xmlns; + } else if ( data.documentElement) { + if ("Image" == data.documentElement.localName || "Image" == data.documentElement.tagName) { + ns = data.documentElement.namespaceURI; + } + } + + return ( "http://schemas.microsoft.com/deepzoom/2008" == ns || + "http://schemas.microsoft.com/deepzoom/2009" == ns ); + }, + + /** + * + * @function + * @param {Object|XMLDocument} data - the raw configuration + * @param {String} url - the url the data was retreived from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + */ + configure: function( data, url ){ + + var options; + + if( !$.isPlainObject(data) ){ + + options = configureFromXML( this, data ); + + }else{ + + options = configureFromObject( this, data ); + } + + if (url && !options.tilesUrl) { + options.tilesUrl = url.replace( + /([^\/]+?)(\.(dzi|xml|js))?\/?(\?.*)?$/, '$1_files/'); + + if (url.search(/\.(dzi|xml|js)\?/) != -1) { + options.queryParams = url.match(/\?.*/); + }else{ + options.queryParams = ''; + } + } + + return options; + }, + + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + getTileUrl: function( level, x, y ) { + return [ this.tilesUrl, level, '/', x, '_', y, '.', this.fileFormat, this.queryParams ].join( '' ); + }, + + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + tileExists: function( level, x, y ) { + var rects = this._levelRects[ level ], + rect, + scale, + xMin, + yMin, + xMax, + yMax, + i; + + if ( !rects || !rects.length ) { + return true; + } + + for ( i = rects.length - 1; i >= 0; i-- ) { + rect = rects[ i ]; + + if ( level < rect.minLevel || level > rect.maxLevel ) { + continue; + } + + scale = this.getLevelScale( level ); + xMin = rect.x * scale; + yMin = rect.y * scale; + xMax = xMin + rect.width * scale; + yMax = yMin + rect.height * scale; + + xMin = Math.floor( xMin / this.tileSize ); + yMin = Math.floor( yMin / this.tileSize ); + xMax = Math.ceil( xMax / this.tileSize ); + yMax = Math.ceil( yMax / this.tileSize ); + + if ( xMin <= x && x < xMax && yMin <= y && y < yMax ) { + return true; + } + } + + return false; + } +}); + + +/** + * @private + * @inner + * @function + */ +function configureFromXML( tileSource, xmlDoc ){ + + if ( !xmlDoc || !xmlDoc.documentElement ) { + throw new Error( $.getString( "Errors.Xml" ) ); + } + + var root = xmlDoc.documentElement, + rootName = root.localName || root.tagName, + ns = xmlDoc.documentElement.namespaceURI, + configuration = null, + displayRects = [], + dispRectNodes, + dispRectNode, + rectNode, + sizeNode, + i; + + if ( rootName == "Image" ) { + + try { + sizeNode = root.getElementsByTagName("Size" )[ 0 ]; + if (sizeNode === undefined) { + sizeNode = root.getElementsByTagNameNS(ns, "Size" )[ 0 ]; + } + + configuration = { + Image: { + xmlns: "http://schemas.microsoft.com/deepzoom/2008", + Url: root.getAttribute( "Url" ), + Format: root.getAttribute( "Format" ), + DisplayRect: null, + Overlap: parseInt( root.getAttribute( "Overlap" ), 10 ), + TileSize: parseInt( root.getAttribute( "TileSize" ), 10 ), + Size: { + Height: parseInt( sizeNode.getAttribute( "Height" ), 10 ), + Width: parseInt( sizeNode.getAttribute( "Width" ), 10 ) + } + } + }; + + if ( !$.imageFormatSupported( configuration.Image.Format ) ) { + throw new Error( + $.getString( "Errors.ImageFormat", configuration.Image.Format.toUpperCase() ) + ); + } + + dispRectNodes = root.getElementsByTagName("DisplayRect" ); + if (dispRectNodes === undefined) { + dispRectNodes = root.getElementsByTagNameNS(ns, "DisplayRect" )[ 0 ]; + } + + for ( i = 0; i < dispRectNodes.length; i++ ) { + dispRectNode = dispRectNodes[ i ]; + rectNode = dispRectNode.getElementsByTagName("Rect" )[ 0 ]; + if (rectNode === undefined) { + rectNode = dispRectNode.getElementsByTagNameNS(ns, "Rect" )[ 0 ]; + } + + displayRects.push({ + Rect: { + X: parseInt( rectNode.getAttribute( "X" ), 10 ), + Y: parseInt( rectNode.getAttribute( "Y" ), 10 ), + Width: parseInt( rectNode.getAttribute( "Width" ), 10 ), + Height: parseInt( rectNode.getAttribute( "Height" ), 10 ), + MinLevel: parseInt( dispRectNode.getAttribute( "MinLevel" ), 10 ), + MaxLevel: parseInt( dispRectNode.getAttribute( "MaxLevel" ), 10 ) + } + }); + } + + if( displayRects.length ){ + configuration.Image.DisplayRect = displayRects; + } + + return configureFromObject( tileSource, configuration ); + + } catch ( e ) { + throw (e instanceof Error) ? + e : + new Error( $.getString("Errors.Dzi") ); + } + } else if ( rootName == "Collection" ) { + throw new Error( $.getString( "Errors.Dzc" ) ); + } else if ( rootName == "Error" ) { + var messageNode = root.getElementsByTagName("Message")[0]; + var message = messageNode.firstChild.nodeValue; + throw new Error(message); + } + + throw new Error( $.getString( "Errors.Dzi" ) ); +} + +/** + * @private + * @inner + * @function + */ +function configureFromObject( tileSource, configuration ){ + var imageData = configuration.Image, + tilesUrl = imageData.Url, + fileFormat = imageData.Format, + sizeData = imageData.Size, + dispRectData = imageData.DisplayRect || [], + width = parseInt( sizeData.Width, 10 ), + height = parseInt( sizeData.Height, 10 ), + tileSize = parseInt( imageData.TileSize, 10 ), + tileOverlap = parseInt( imageData.Overlap, 10 ), + displayRects = [], + rectData, + i; + + //TODO: need to figure out out to better handle image format compatibility + // which actually includes additional file formats like xml and pdf + // and plain text for various tilesource implementations to avoid low + // level errors. + // + // For now, just don't perform the check. + // + /*if ( !imageFormatSupported( fileFormat ) ) { + throw new Error( + $.getString( "Errors.ImageFormat", fileFormat.toUpperCase() ) + ); + }*/ + + for ( i = 0; i < dispRectData.length; i++ ) { + rectData = dispRectData[ i ].Rect; + + displayRects.push( new $.DisplayRect( + parseInt( rectData.X, 10 ), + parseInt( rectData.Y, 10 ), + parseInt( rectData.Width, 10 ), + parseInt( rectData.Height, 10 ), + parseInt( rectData.MinLevel, 10 ), + parseInt( rectData.MaxLevel, 10 ) + )); + } + + return $.extend(true, { + width: width, /* width *required */ + height: height, /* height *required */ + tileSize: tileSize, /* tileSize *required */ + tileOverlap: tileOverlap, /* tileOverlap *required */ + minLevel: null, /* minLevel */ + maxLevel: null, /* maxLevel */ + tilesUrl: tilesUrl, /* tilesUrl */ + fileFormat: fileFormat, /* fileFormat */ + displayRects: displayRects /* displayRects */ + }, configuration ); + +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - IIIFTileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class IIIFTileSource + * @classdesc A client implementation of the International Image Interoperability Framework + * Format: Image API 1.0 - 2.1 + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @see http://iiif.io/api/image/ + */ +$.IIIFTileSource = function( options ){ + + + $.extend( true, this, options ); + + if ( !( this.height && this.width && this['@id'] ) ) { + throw new Error( 'IIIF required parameters not provided.' ); + } + + options.tileSizePerScaleFactor = {}; + + // N.B. 2.0 renamed scale_factors to scaleFactors + if ( this.tile_width && this.tile_height ) { + options.tileWidth = this.tile_width; + options.tileHeight = this.tile_height; + } else if ( this.tile_width ) { + options.tileSize = this.tile_width; + } else if ( this.tile_height ) { + options.tileSize = this.tile_height; + } else if ( this.tiles ) { + // Version 2.0 forwards + if ( this.tiles.length == 1 ) { + options.tileWidth = this.tiles[0].width; + // Use height if provided, otherwise assume square tiles and use width. + options.tileHeight = this.tiles[0].height || this.tiles[0].width; + this.scale_factors = this.tiles[0].scaleFactors; + } else { + // Multiple tile sizes at different levels + this.scale_factors = []; + for (var t = 0; t < this.tiles.length; t++ ) { + for (var sf = 0; sf < this.tiles[t].scaleFactors.length; sf++) { + var scaleFactor = this.tiles[t].scaleFactors[sf]; + this.scale_factors.push(scaleFactor); + options.tileSizePerScaleFactor[scaleFactor] = { + width: this.tiles[t].width, + height: this.tiles[t].height || this.tiles[t].width + }; + } + } + } + } else if ( canBeTiled(options.profile) ) { + // use the largest of tileOptions that is smaller than the short dimension + var shortDim = Math.min( this.height, this.width ), + tileOptions = [256,512,1024], + smallerTiles = []; + + for ( var c = 0; c < tileOptions.length; c++ ) { + if ( tileOptions[c] <= shortDim ) { + smallerTiles.push( tileOptions[c] ); + } + } + + if ( smallerTiles.length > 0 ) { + options.tileSize = Math.max.apply( null, smallerTiles ); + } else { + // If we're smaller than 256, just use the short side. + options.tileSize = shortDim; + } + } else if (this.sizes && this.sizes.length > 0) { + // This info.json can't be tiled, but we can still construct a legacy pyramid from the sizes array. + // In this mode, IIIFTileSource will call functions from the abstract baseTileSource or the + // LegacyTileSource instead of performing IIIF tiling. + this.emulateLegacyImagePyramid = true; + + options.levels = constructLevels( this ); + // use the largest available size to define tiles + $.extend( true, options, { + width: options.levels[ options.levels.length - 1 ].width, + height: options.levels[ options.levels.length - 1 ].height, + tileSize: Math.max( options.height, options.width ), + tileOverlap: 0, + minLevel: 0, + maxLevel: options.levels.length - 1 + }); + this.levels = options.levels; + } else { + $.console.error("Nothing in the info.json to construct image pyramids from"); + } + + if (!options.maxLevel && !this.emulateLegacyImagePyramid) { + if (!this.scale_factors) { + options.maxLevel = Number(Math.ceil(Math.log(Math.max(this.width, this.height), 2))); + } else { + options.maxLevel = Math.floor(Math.pow(Math.max.apply(null, this.scale_factors), 0.5)); + } + } + + $.TileSource.apply( this, [ options ] ); +}; + +$.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.IIIFTileSource.prototype */{ + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + + supports: function( data, url ) { + // Version 2.0 and forwards + if (data.protocol && data.protocol == 'http://iiif.io/api/image') { + return true; + // Version 1.1 + } else if ( data['@context'] && ( + data['@context'] == "http://library.stanford.edu/iiif/image-api/1.1/context.json" || + data['@context'] == "http://iiif.io/api/image/1/context.json") ) { + // N.B. the iiif.io context is wrong, but where the representation lives so likely to be used + return true; + + // Version 1.0 + } else if ( data.profile && + data.profile.indexOf("http://library.stanford.edu/iiif/image-api/compliance.html") === 0) { + return true; + } else if ( data.identifier && data.width && data.height ) { + return true; + } else if ( data.documentElement && + "info" == data.documentElement.tagName && + "http://library.stanford.edu/iiif/image-api/ns/" == + data.documentElement.namespaceURI) { + return true; + + // Not IIIF + } else { + return false; + } + }, + + /** + * + * @function + * @param {Object} data - the raw configuration + * @example IIIF 1.1 Info Looks like this + * { + * "@context" : "http://library.stanford.edu/iiif/image-api/1.1/context.json", + * "@id" : "http://iiif.example.com/prefix/1E34750D-38DB-4825-A38A-B60A345E591C", + * "width" : 6000, + * "height" : 4000, + * "scale_factors" : [ 1, 2, 4 ], + * "tile_width" : 1024, + * "tile_height" : 1024, + * "formats" : [ "jpg", "png" ], + * "qualities" : [ "native", "grey" ], + * "profile" : "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0" + * } + */ + configure: function( data, url ){ + // Try to deduce our version and fake it upwards if needed + if ( !$.isPlainObject(data) ) { + var options = configureFromXml10( data ); + options['@context'] = "http://iiif.io/api/image/1.0/context.json"; + options['@id'] = url.replace('/info.xml', ''); + return options; + } else if ( !data['@context'] ) { + data['@context'] = 'http://iiif.io/api/image/1.0/context.json'; + data['@id'] = url.replace('/info.json', ''); + return data; + } else { + return data; + } + }, + + /** + * Return the tileWidth for the given level. + * @function + * @param {Number} level + */ + getTileWidth: function( level ) { + + if(this.emulateLegacyImagePyramid) { + return $.TileSource.prototype.getTileWidth.call(this, level); + } + + var scaleFactor = Math.pow(2, this.maxLevel - level); + + if (this.tileSizePerScaleFactor && this.tileSizePerScaleFactor[scaleFactor]) { + return this.tileSizePerScaleFactor[scaleFactor].width; + } + return this._tileWidth; + }, + + /** + * Return the tileHeight for the given level. + * @function + * @param {Number} level + */ + getTileHeight: function( level ) { + + if(this.emulateLegacyImagePyramid) { + return $.TileSource.prototype.getTileHeight.call(this, level); + } + + var scaleFactor = Math.pow(2, this.maxLevel - level); + + if (this.tileSizePerScaleFactor && this.tileSizePerScaleFactor[scaleFactor]) { + return this.tileSizePerScaleFactor[scaleFactor].height; + } + return this._tileHeight; + }, + + /** + * @function + * @param {Number} level + */ + getLevelScale: function ( level ) { + + if(this.emulateLegacyImagePyramid) { + var levelScale = NaN; + if (this.levels.length > 0 && level >= this.minLevel && level <= this.maxLevel) { + levelScale = + this.levels[level].width / + this.levels[this.maxLevel].width; + } + return levelScale; + } + + return $.TileSource.prototype.getLevelScale.call(this, level); + }, + + /** + * @function + * @param {Number} level + */ + getNumTiles: function( level ) { + + if(this.emulateLegacyImagePyramid) { + var scale = this.getLevelScale(level); + if (scale) { + return new $.Point(1, 1); + } else { + return new $.Point(0, 0); + } + } + + return $.TileSource.prototype.getNumTiles.call(this, level); + }, + + + /** + * @function + * @param {Number} level + * @param {OpenSeadragon.Point} point + */ + getTileAtPoint: function( level, point ) { + + if(this.emulateLegacyImagePyramid) { + return new $.Point(0, 0); + } + + return $.TileSource.prototype.getTileAtPoint.call(this, level, point); + }, + + + /** + * Responsible for retrieving the url which will return an image for the + * region specified by the given x, y, and level components. + * @function + * @param {Number} level - z index + * @param {Number} x + * @param {Number} y + * @throws {Error} + */ + getTileUrl: function( level, x, y ){ + + if(this.emulateLegacyImagePyramid) { + var url = null; + if ( this.levels.length > 0 && level >= this.minLevel && level <= this.maxLevel ) { + url = this.levels[ level ].url; + } + return url; + } + + //# constants + var IIIF_ROTATION = '0', + //## get the scale (level as a decimal) + scale = Math.pow( 0.5, this.maxLevel - level ), + + //# image dimensions at this level + levelWidth = Math.ceil( this.width * scale ), + levelHeight = Math.ceil( this.height * scale ), + + //## iiif region + tileWidth, + tileHeight, + iiifTileSizeWidth, + iiifTileSizeHeight, + iiifRegion, + iiifTileX, + iiifTileY, + iiifTileW, + iiifTileH, + iiifSize, + iiifQuality, + uri; + + tileWidth = this.getTileWidth(level); + tileHeight = this.getTileHeight(level); + iiifTileSizeWidth = Math.ceil( tileWidth / scale ); + iiifTileSizeHeight = Math.ceil( tileHeight / scale ); + + if ( this['@context'].indexOf('/1.0/context.json') > -1 || + this['@context'].indexOf('/1.1/context.json') > -1 || + this['@context'].indexOf('/1/context.json') > -1 ) { + iiifQuality = "native.jpg"; + } else { + iiifQuality = "default.jpg"; + } + + if ( levelWidth < tileWidth && levelHeight < tileHeight ){ + iiifSize = levelWidth + ","; + iiifRegion = 'full'; + } else { + iiifTileX = x * iiifTileSizeWidth; + iiifTileY = y * iiifTileSizeHeight; + iiifTileW = Math.min( iiifTileSizeWidth, this.width - iiifTileX ); + iiifTileH = Math.min( iiifTileSizeHeight, this.height - iiifTileY ); + iiifSize = Math.ceil( iiifTileW * scale ) + ","; + iiifRegion = [ iiifTileX, iiifTileY, iiifTileW, iiifTileH ].join( ',' ); + } + uri = [ this['@id'], iiifRegion, iiifSize, IIIF_ROTATION, iiifQuality ].join( '/' ); + + return uri; + } + + }); + + /** + * Determine whether arbitrary tile requests can be made against a service with the given profile + * @function + * @param {object} profile - IIIF profile object + * @throws {Error} + */ + function canBeTiled (profile ) { + var level0Profiles = [ + "http://library.stanford.edu/iiif/image-api/compliance.html#level0", + "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0", + "http://iiif.io/api/image/2/level0.json" + ]; + var isLevel0 = (level0Profiles.indexOf(profile[0]) != -1); + return !isLevel0 || (profile.indexOf("sizeByW") != -1); + } + + /** + * Build the legacy pyramid URLs (one tile per level) + * @function + * @param {object} options - infoJson + * @throws {Error} + */ + function constructLevels(options) { + var levels = []; + for(var i=0; i. Rainer Simon has contributed + * the included code to the OpenSeadragon project under the New BSD license; + * see . + */ + + +(function( $ ){ + +/** + * @class OsmTileSource + * @classdesc A tilesource implementation for OpenStreetMap.

+ * + * Note 1. Zoomlevels. Deep Zoom and OSM define zoom levels differently. In Deep + * Zoom, level 0 equals an image of 1x1 pixels. In OSM, level 0 equals an image of + * 256x256 levels (see http://gasi.ch/blog/inside-deep-zoom-2). I.e. there is a + * difference of log2(256)=8 levels.

+ * + * Note 2. Image dimension. According to the OSM Wiki + * (http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Zoom_levels) + * the highest Mapnik zoom level has 256.144x256.144 tiles, with a 256x256 + * pixel size. I.e. the Deep Zoom image dimension is 65.572.864x65.572.864 + * pixels. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @param {Number|Object} width - the pixel width of the image or the idiomatic + * options object which is used instead of positional arguments. + * @param {Number} height + * @param {Number} tileSize + * @param {Number} tileOverlap + * @param {String} tilesUrl + */ +$.OsmTileSource = function( width, height, tileSize, tileOverlap, tilesUrl ) { + var options; + + if( $.isPlainObject( width ) ){ + options = width; + }else{ + options = { + width: arguments[0], + height: arguments[1], + tileSize: arguments[2], + tileOverlap: arguments[3], + tilesUrl: arguments[4] + }; + } + //apply default setting for standard public OpenStreatMaps service + //but allow them to be specified so fliks can host there own instance + //or apply against other services supportting the same standard + if( !options.width || !options.height ){ + options.width = 65572864; + options.height = 65572864; + } + if( !options.tileSize ){ + options.tileSize = 256; + options.tileOverlap = 0; + } + if( !options.tilesUrl ){ + options.tilesUrl = "http://tile.openstreetmap.org/"; + } + options.minLevel = 8; + + $.TileSource.apply( this, [ options ] ); + +}; + +$.extend( $.OsmTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.OsmTileSource.prototype */{ + + + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function( data, url ){ + return ( + data.type && + "openstreetmaps" == data.type + ); + }, + + /** + * + * @function + * @param {Object} data - the raw configuration + * @param {String} url - the url the data was retreived from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + */ + configure: function( data, url ){ + return data; + }, + + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + getTileUrl: function( level, x, y ) { + return this.tilesUrl + (level - 8) + "/" + x + "/" + y + ".png"; + } +}); + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - TmsTileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Derived from the TMS tile source in Rainer Simon's seajax-utils project + * . Rainer Simon has contributed + * the included code to the OpenSeadragon project under the New BSD license; + * see . + */ + + +(function( $ ){ + +/** + * @class TmsTileSource + * @classdesc A tilesource implementation for Tiled Map Services (TMS). + * TMS tile scheme ( [ as supported by OpenLayers ] is described here + * ( http://openlayers.org/dev/examples/tms.html ). + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @param {Number|Object} width - the pixel width of the image or the idiomatic + * options object which is used instead of positional arguments. + * @param {Number} height + * @param {Number} tileSize + * @param {Number} tileOverlap + * @param {String} tilesUrl + */ +$.TmsTileSource = function( width, height, tileSize, tileOverlap, tilesUrl ) { + var options; + + if( $.isPlainObject( width ) ){ + options = width; + }else{ + options = { + width: arguments[0], + height: arguments[1], + tileSize: arguments[2], + tileOverlap: arguments[3], + tilesUrl: arguments[4] + }; + } + // TMS has integer multiples of 256 for width/height and adds buffer + // if necessary -> account for this! + var bufferedWidth = Math.ceil(options.width / 256) * 256, + bufferedHeight = Math.ceil(options.height / 256) * 256, + max; + + // Compute number of zoomlevels in this tileset + if (bufferedWidth > bufferedHeight) { + max = bufferedWidth / 256; + } else { + max = bufferedHeight / 256; + } + options.maxLevel = Math.ceil(Math.log(max)/Math.log(2)) - 1; + options.tileSize = 256; + options.width = bufferedWidth; + options.height = bufferedHeight; + + $.TileSource.apply( this, [ options ] ); + +}; + +$.extend( $.TmsTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.TmsTileSource.prototype */{ + + + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function( data, url ){ + return ( data.type && "tiledmapservice" == data.type ); + }, + + /** + * + * @function + * @param {Object} data - the raw configuration + * @param {String} url - the url the data was retreived from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + */ + configure: function( data, url ){ + return data; + }, + + + /** + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + */ + getTileUrl: function( level, x, y ) { + // Convert from Deep Zoom definition to TMS zoom definition + var yTiles = this.getNumTiles( level ).y - 1; + + return this.tilesUrl + level + "/" + x + "/" + (yTiles - y) + ".png"; + } +}); + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - LegacyTileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class LegacyTileSource + * @classdesc The LegacyTileSource allows simple, traditional image pyramids to be loaded + * into an OpenSeadragon Viewer. Basically, this translates to the historically + * common practice of starting with a 'master' image, maybe a tiff for example, + * and generating a set of 'service' images like one or more thumbnails, a medium + * resolution image and a high resolution image in standard web formats like + * png or jpg. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @param {Array} levels An array of file descriptions, each is an object with + * a 'url', a 'width', and a 'height'. Overriding classes can expect more + * properties but these properties are sufficient for this implementation. + * Additionally, the levels are required to be listed in order from + * smallest to largest. + * @property {Number} aspectRatio + * @property {Number} dimensions + * @property {Number} tileSize + * @property {Number} tileOverlap + * @property {Number} minLevel + * @property {Number} maxLevel + * @property {Array} levels + */ +$.LegacyTileSource = function( levels ) { + + var options, + width, + height; + + if( $.isArray( levels ) ){ + options = { + type: 'legacy-image-pyramid', + levels: levels + }; + } + + //clean up the levels to make sure we support all formats + options.levels = filterFiles( options.levels ); + + if ( options.levels.length > 0 ) { + width = options.levels[ options.levels.length - 1 ].width; + height = options.levels[ options.levels.length - 1 ].height; + } + else { + width = 0; + height = 0; + $.console.error( "No supported image formats found" ); + } + + $.extend( true, options, { + width: width, + height: height, + tileSize: Math.max( height, width ), + tileOverlap: 0, + minLevel: 0, + maxLevel: options.levels.length > 0 ? options.levels.length - 1 : 0 + } ); + + $.TileSource.apply( this, [ options ] ); + + this.levels = options.levels; +}; + +$.extend( $.LegacyTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.LegacyTileSource.prototype */{ + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function( data, url ){ + return ( + data.type && + "legacy-image-pyramid" == data.type + ) || ( + data.documentElement && + "legacy-image-pyramid" == data.documentElement.getAttribute('type') + ); + }, + + + /** + * + * @function + * @param {Object|XMLDocument} configuration - the raw configuration + * @param {String} dataUrl - the url the data was retreived from if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + */ + configure: function( configuration, dataUrl ){ + + var options; + + if( !$.isPlainObject(configuration) ){ + + options = configureFromXML( this, configuration ); + + }else{ + + options = configureFromObject( this, configuration ); + } + + return options; + + }, + + /** + * @function + * @param {Number} level + */ + getLevelScale: function ( level ) { + var levelScale = NaN; + if ( this.levels.length > 0 && level >= this.minLevel && level <= this.maxLevel ) { + levelScale = + this.levels[ level ].width / + this.levels[ this.maxLevel ].width; + } + return levelScale; + }, + + /** + * @function + * @param {Number} level + */ + getNumTiles: function( level ) { + var scale = this.getLevelScale( level ); + if ( scale ){ + return new $.Point( 1, 1 ); + } else { + return new $.Point( 0, 0 ); + } + }, + + /** + * @function + * @param {Number} level + * @param {OpenSeadragon.Point} point + */ + getTileAtPoint: function( level, point ) { + return new $.Point( 0, 0 ); + }, + + + /** + * This method is not implemented by this class other than to throw an Error + * announcing you have to implement it. Because of the variety of tile + * server technologies, and various specifications for building image + * pyramids, this method is here to allow easy integration. + * @function + * @param {Number} level + * @param {Number} x + * @param {Number} y + * @throws {Error} + */ + getTileUrl: function ( level, x, y ) { + var url = null; + if ( this.levels.length > 0 && level >= this.minLevel && level <= this.maxLevel ) { + url = this.levels[ level ].url; + } + return url; + } +} ); + +/** + * This method removes any files from the Array which dont conform to our + * basic requirements for a 'level' in the LegacyTileSource. + * @private + * @inner + * @function + */ +function filterFiles( files ){ + var filtered = [], + file, + i; + for( i = 0; i < files.length; i++ ){ + file = files[ i ]; + if( file.height && + file.width && + file.url && ( + file.url.toLowerCase().match(/^.*\.(png|jpg|jpeg|gif)(?:\?.*)?$/) || ( + file.mimetype && + file.mimetype.toLowerCase().match(/^.*\/(png|jpg|jpeg|gif)$/) + ) + ) ){ + //This is sufficient to serve as a level + filtered.push({ + url: file.url, + width: Number( file.width ), + height: Number( file.height ) + }); + } + else { + $.console.error( 'Unsupported image format: %s', file.url ? file.url : '' ); + } + } + + return filtered.sort(function(a,b){ + return a.height - b.height; + }); + +} + +/** + * @private + * @inner + * @function + */ +function configureFromXML( tileSource, xmlDoc ){ + + if ( !xmlDoc || !xmlDoc.documentElement ) { + throw new Error( $.getString( "Errors.Xml" ) ); + } + + var root = xmlDoc.documentElement, + rootName = root.tagName, + conf = null, + levels = [], + level, + i; + + if ( rootName == "image" ) { + + try { + conf = { + type: root.getAttribute( "type" ), + levels: [] + }; + + levels = root.getElementsByTagName( "level" ); + for ( i = 0; i < levels.length; i++ ) { + level = levels[ i ]; + + conf.levels .push({ + url: level.getAttribute( "url" ), + width: parseInt( level.getAttribute( "width" ), 10 ), + height: parseInt( level.getAttribute( "height" ), 10 ) + }); + } + + return configureFromObject( tileSource, conf ); + + } catch ( e ) { + throw (e instanceof Error) ? + e : + new Error( 'Unknown error parsing Legacy Image Pyramid XML.' ); + } + } else if ( rootName == "collection" ) { + throw new Error( 'Legacy Image Pyramid Collections not yet supported.' ); + } else if ( rootName == "error" ) { + throw new Error( 'Error: ' + xmlDoc ); + } + + throw new Error( 'Unknown element ' + rootName ); +} + +/** + * @private + * @inner + * @function + */ +function configureFromObject( tileSource, configuration ){ + + return configuration.levels; + +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - ImageTileSource + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function ($) { + + /** + * @class ImageTileSource + * @classdesc The ImageTileSource allows a simple image to be loaded + * into an OpenSeadragon Viewer. + * There are 2 ways to open an ImageTileSource: + * 1. viewer.open({type: 'image', url: fooUrl}); + * 2. viewer.open(new OpenSeadragon.ImageTileSource({url: fooUrl})); + * + * With the first syntax, the crossOriginPolicy, ajaxWithCredentials and + * useCanvas options are inherited from the viewer if they are not + * specified directly in the options object. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.TileSource + * @param {Object} options Options object. + * @param {String} options.url URL of the image + * @param {Boolean} [options.buildPyramid=true] If set to true (default), a + * pyramid will be built internally to provide a better downsampling. + * @param {String|Boolean} [options.crossOriginPolicy=false] Valid values are + * 'Anonymous', 'use-credentials', and false. If false, image requests will + * not use CORS preventing internal pyramid building for images from other + * domains. + * @param {String|Boolean} [options.ajaxWithCredentials=false] Whether to set + * the withCredentials XHR flag for AJAX requests (when loading tile sources). + * @param {Boolean} [options.useCanvas=true] Set to false to prevent any use + * of the canvas API. + */ + $.ImageTileSource = function (options) { + + options = $.extend({ + buildPyramid: true, + crossOriginPolicy: false, + ajaxWithCredentials: false, + useCanvas: true + }, options); + $.TileSource.apply(this, [options]); + + }; + + $.extend($.ImageTileSource.prototype, $.TileSource.prototype, /** @lends OpenSeadragon.ImageTileSource.prototype */{ + /** + * Determine if the data and/or url imply the image service is supported by + * this tile source. + * @function + * @param {Object|Array} data + * @param {String} optional - url + */ + supports: function (data, url) { + return data.type && data.type === "image"; + }, + /** + * + * @function + * @param {Object} options - the options + * @param {String} dataUrl - the url the image was retreived from, if any. + * @return {Object} options - A dictionary of keyword arguments sufficient + * to configure this tile sources constructor. + */ + configure: function (options, dataUrl) { + return options; + }, + /** + * Responsible for retrieving, and caching the + * image metadata pertinent to this TileSources implementation. + * @function + * @param {String} url + * @throws {Error} + */ + getImageInfo: function (url) { + var image = this._image = new Image(); + var _this = this; + + if (this.crossOriginPolicy) { + image.crossOrigin = this.crossOriginPolicy; + } + if (this.ajaxWithCredentials) { + image.useCredentials = this.ajaxWithCredentials; + } + + $.addEvent(image, 'load', function () { + _this.width = image.naturalWidth; + _this.height = image.naturalHeight; + _this.aspectRatio = _this.width / _this.height; + _this.dimensions = new $.Point(_this.width, _this.height); + _this._tileWidth = _this.width; + _this._tileHeight = _this.height; + _this.tileOverlap = 0; + _this.minLevel = 0; + _this.levels = _this._buildLevels(); + _this.maxLevel = _this.levels.length - 1; + + _this.ready = true; + + // Note: this event is documented elsewhere, in TileSource + _this.raiseEvent('ready', {tileSource: _this}); + }); + + $.addEvent(image, 'error', function () { + // Note: this event is documented elsewhere, in TileSource + _this.raiseEvent('open-failed', { + message: "Error loading image at " + url, + source: url + }); + }); + + image.src = url; + }, + /** + * @function + * @param {Number} level + */ + getLevelScale: function (level) { + var levelScale = NaN; + if (level >= this.minLevel && level <= this.maxLevel) { + levelScale = + this.levels[level].width / + this.levels[this.maxLevel].width; + } + return levelScale; + }, + /** + * @function + * @param {Number} level + */ + getNumTiles: function (level) { + var scale = this.getLevelScale(level); + if (scale) { + return new $.Point(1, 1); + } else { + return new $.Point(0, 0); + } + }, + /** + * @function + * @param {Number} level + * @param {OpenSeadragon.Point} point + */ + getTileAtPoint: function (level, point) { + return new $.Point(0, 0); + }, + /** + * Retrieves a tile url + * @function + * @param {Number} level Level of the tile + * @param {Number} x x coordinate of the tile + * @param {Number} y y coordinate of the tile + */ + getTileUrl: function (level, x, y) { + var url = null; + if (level >= this.minLevel && level <= this.maxLevel) { + url = this.levels[level].url; + } + return url; + }, + /** + * Retrieves a tile context 2D + * @function + * @param {Number} level Level of the tile + * @param {Number} x x coordinate of the tile + * @param {Number} y y coordinate of the tile + */ + getContext2D: function (level, x, y) { + var context = null; + if (level >= this.minLevel && level <= this.maxLevel) { + context = this.levels[level].context2D; + } + return context; + }, + + // private + // + // Builds the differents levels of the pyramid if possible + // (i.e. if canvas API enabled and no canvas tainting issue). + _buildLevels: function () { + var levels = [{ + url: this._image.src, + width: this._image.naturalWidth, + height: this._image.naturalHeight + }]; + + if (!this.buildPyramid || !$.supportsCanvas || !this.useCanvas) { + // We don't need the image anymore. Allows it to be GC. + delete this._image; + return levels; + } + + var currentWidth = this._image.naturalWidth; + var currentHeight = this._image.naturalHeight; + + var bigCanvas = document.createElement("canvas"); + var bigContext = bigCanvas.getContext("2d"); + + bigCanvas.width = currentWidth; + bigCanvas.height = currentHeight; + bigContext.drawImage(this._image, 0, 0, currentWidth, currentHeight); + // We cache the context of the highest level because the browser + // is a lot faster at downsampling something it already has + // downsampled before. + levels[0].context2D = bigContext; + // We don't need the image anymore. Allows it to be GC. + delete this._image; + + if ($.isCanvasTainted(bigCanvas)) { + // If the canvas is tainted, we can't compute the pyramid. + return levels; + } + + // We build smaller levels until either width or height becomes + // 1 pixel wide. + while (currentWidth >= 2 && currentHeight >= 2) { + currentWidth = Math.floor(currentWidth / 2); + currentHeight = Math.floor(currentHeight / 2); + var smallCanvas = document.createElement("canvas"); + var smallContext = smallCanvas.getContext("2d"); + smallCanvas.width = currentWidth; + smallCanvas.height = currentHeight; + smallContext.drawImage(bigCanvas, 0, 0, currentWidth, currentHeight); + + levels.splice(0, 0, { + context2D: smallContext, + width: currentWidth, + height: currentHeight + }); + + bigCanvas = smallCanvas; + bigContext = smallContext; + } + return levels; + } + }); + +}(OpenSeadragon)); + +/* + * OpenSeadragon - TileSourceCollection + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +// deprecated +$.TileSourceCollection = function( tileSize, tileSources, rows, layout ) { + $.console.error('TileSourceCollection is deprecated; use World instead'); +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Button + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * An enumeration of button states + * @member ButtonState + * @memberof OpenSeadragon + * @static + * @type {Object} + * @property {Number} REST + * @property {Number} GROUP + * @property {Number} HOVER + * @property {Number} DOWN + */ +$.ButtonState = { + REST: 0, + GROUP: 1, + HOVER: 2, + DOWN: 3 +}; + +/** + * @class Button + * @classdesc Manages events, hover states for individual buttons, tool-tips, as well + * as fading the buttons out when the user has not interacted with them + * for a specified period. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.EventSource + * @param {Object} options + * @param {Element} [options.element=null] Element to use as the button. If not specified, an HTML <button> element is created. + * @param {String} [options.tooltip=null] Provides context help for the button when the + * user hovers over it. + * @param {String} [options.srcRest=null] URL of image to use in 'rest' state. + * @param {String} [options.srcGroup=null] URL of image to use in 'up' state. + * @param {String} [options.srcHover=null] URL of image to use in 'hover' state. + * @param {String} [options.srcDown=null] URL of image to use in 'down' state. + * @param {Number} [options.fadeDelay=0] How long to wait before fading. + * @param {Number} [options.fadeLength=2000] How long should it take to fade the button. + * @param {OpenSeadragon.EventHandler} [options.onPress=null] Event handler callback for {@link OpenSeadragon.Button.event:press}. + * @param {OpenSeadragon.EventHandler} [options.onRelease=null] Event handler callback for {@link OpenSeadragon.Button.event:release}. + * @param {OpenSeadragon.EventHandler} [options.onClick=null] Event handler callback for {@link OpenSeadragon.Button.event:click}. + * @param {OpenSeadragon.EventHandler} [options.onEnter=null] Event handler callback for {@link OpenSeadragon.Button.event:enter}. + * @param {OpenSeadragon.EventHandler} [options.onExit=null] Event handler callback for {@link OpenSeadragon.Button.event:exit}. + * @param {OpenSeadragon.EventHandler} [options.onFocus=null] Event handler callback for {@link OpenSeadragon.Button.event:focus}. + * @param {OpenSeadragon.EventHandler} [options.onBlur=null] Event handler callback for {@link OpenSeadragon.Button.event:blur}. + */ +$.Button = function( options ) { + + var _this = this; + + $.EventSource.call( this ); + + $.extend( true, this, { + + tooltip: null, + srcRest: null, + srcGroup: null, + srcHover: null, + srcDown: null, + clickTimeThreshold: $.DEFAULT_SETTINGS.clickTimeThreshold, + clickDistThreshold: $.DEFAULT_SETTINGS.clickDistThreshold, + /** + * How long to wait before fading. + * @member {Number} fadeDelay + * @memberof OpenSeadragon.Button# + */ + fadeDelay: 0, + /** + * How long should it take to fade the button. + * @member {Number} fadeLength + * @memberof OpenSeadragon.Button# + */ + fadeLength: 2000, + onPress: null, + onRelease: null, + onClick: null, + onEnter: null, + onExit: null, + onFocus: null, + onBlur: null + + }, options ); + + /** + * The button element. + * @member {Element} element + * @memberof OpenSeadragon.Button# + */ + this.element = options.element || $.makeNeutralElement( "div" ); + + //if the user has specified the element to bind the control to explicitly + //then do not add the default control images + if ( !options.element ) { + this.imgRest = $.makeTransparentImage( this.srcRest ); + this.imgGroup = $.makeTransparentImage( this.srcGroup ); + this.imgHover = $.makeTransparentImage( this.srcHover ); + this.imgDown = $.makeTransparentImage( this.srcDown ); + + this.imgRest.alt = + this.imgGroup.alt = + this.imgHover.alt = + this.imgDown.alt = + this.tooltip; + + this.element.style.position = "relative"; + $.setElementTouchActionNone( this.element ); + + this.imgGroup.style.position = + this.imgHover.style.position = + this.imgDown.style.position = + "absolute"; + + this.imgGroup.style.top = + this.imgHover.style.top = + this.imgDown.style.top = + "0px"; + + this.imgGroup.style.left = + this.imgHover.style.left = + this.imgDown.style.left = + "0px"; + + this.imgHover.style.visibility = + this.imgDown.style.visibility = + "hidden"; + + if ( $.Browser.vendor == $.BROWSERS.FIREFOX && $.Browser.version < 3 ){ + this.imgGroup.style.top = + this.imgHover.style.top = + this.imgDown.style.top = + ""; + } + + this.element.appendChild( this.imgRest ); + this.element.appendChild( this.imgGroup ); + this.element.appendChild( this.imgHover ); + this.element.appendChild( this.imgDown ); + } + + + this.addHandler( "press", this.onPress ); + this.addHandler( "release", this.onRelease ); + this.addHandler( "click", this.onClick ); + this.addHandler( "enter", this.onEnter ); + this.addHandler( "exit", this.onExit ); + this.addHandler( "focus", this.onFocus ); + this.addHandler( "blur", this.onBlur ); + + /** + * The button's current state. + * @member {OpenSeadragon.ButtonState} currentState + * @memberof OpenSeadragon.Button# + */ + this.currentState = $.ButtonState.GROUP; + + // When the button last began to fade. + this.fadeBeginTime = null; + // Whether this button should fade after user stops interacting with the viewport. + this.shouldFade = false; + + this.element.style.display = "inline-block"; + this.element.style.position = "relative"; + this.element.title = this.tooltip; + + /** + * Tracks mouse/touch/key events on the button. + * @member {OpenSeadragon.MouseTracker} tracker + * @memberof OpenSeadragon.Button# + */ + this.tracker = new $.MouseTracker({ + + element: this.element, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + + enterHandler: function( event ) { + if ( event.insideElementPressed ) { + inTo( _this, $.ButtonState.DOWN ); + /** + * Raised when the cursor enters the Button element. + * + * @event enter + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "enter", { originalEvent: event.originalEvent } ); + } else if ( !event.buttonDownAny ) { + inTo( _this, $.ButtonState.HOVER ); + } + }, + + focusHandler: function ( event ) { + this.enterHandler( event ); + /** + * Raised when the Button element receives focus. + * + * @event focus + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "focus", { originalEvent: event.originalEvent } ); + }, + + exitHandler: function( event ) { + outTo( _this, $.ButtonState.GROUP ); + if ( event.insideElementPressed ) { + /** + * Raised when the cursor leaves the Button element. + * + * @event exit + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "exit", { originalEvent: event.originalEvent } ); + } + }, + + blurHandler: function ( event ) { + this.exitHandler( event ); + /** + * Raised when the Button element loses focus. + * + * @event blur + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "blur", { originalEvent: event.originalEvent } ); + }, + + pressHandler: function ( event ) { + inTo( _this, $.ButtonState.DOWN ); + /** + * Raised when a mouse button is pressed or touch occurs in the Button element. + * + * @event press + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "press", { originalEvent: event.originalEvent } ); + }, + + releaseHandler: function( event ) { + if ( event.insideElementPressed && event.insideElementReleased ) { + outTo( _this, $.ButtonState.HOVER ); + /** + * Raised when the mouse button is released or touch ends in the Button element. + * + * @event release + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "release", { originalEvent: event.originalEvent } ); + } else if ( event.insideElementPressed ) { + outTo( _this, $.ButtonState.GROUP ); + } else { + inTo( _this, $.ButtonState.HOVER ); + } + }, + + clickHandler: function( event ) { + if ( event.quick ) { + /** + * Raised when a mouse button is pressed and released or touch is initiated and ended in the Button element within the time and distance threshold. + * + * @event click + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent("click", { originalEvent: event.originalEvent }); + } + }, + + keyHandler: function( event ){ + //console.log( "%s : handling key %s!", _this.tooltip, event.keyCode); + if( 13 === event.keyCode ){ + /*** + * Raised when a mouse button is pressed and released or touch is initiated and ended in the Button element within the time and distance threshold. + * + * @event click + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "click", { originalEvent: event.originalEvent } ); + /*** + * Raised when the mouse button is released or touch ends in the Button element. + * + * @event release + * @memberof OpenSeadragon.Button + * @type {object} + * @property {OpenSeadragon.Button} eventSource - A reference to the Button which raised the event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.raiseEvent( "release", { originalEvent: event.originalEvent } ); + return false; + } + return true; + } + + }); + + outTo( this, $.ButtonState.REST ); +}; + +$.extend( $.Button.prototype, $.EventSource.prototype, /** @lends OpenSeadragon.Button.prototype */{ + + /** + * TODO: Determine what this function is intended to do and if it's actually + * useful as an API point. + * @function + */ + notifyGroupEnter: function() { + inTo( this, $.ButtonState.GROUP ); + }, + + /** + * TODO: Determine what this function is intended to do and if it's actually + * useful as an API point. + * @function + */ + notifyGroupExit: function() { + outTo( this, $.ButtonState.REST ); + }, + + /** + * @function + */ + disable: function(){ + this.notifyGroupExit(); + this.element.disabled = true; + $.setElementOpacity( this.element, 0.2, true ); + }, + + /** + * @function + */ + enable: function(){ + this.element.disabled = false; + $.setElementOpacity( this.element, 1.0, true ); + this.notifyGroupEnter(); + } + +}); + + +function scheduleFade( button ) { + $.requestAnimationFrame(function(){ + updateFade( button ); + }); +} + +function updateFade( button ) { + var currentTime, + deltaTime, + opacity; + + if ( button.shouldFade ) { + currentTime = $.now(); + deltaTime = currentTime - button.fadeBeginTime; + opacity = 1.0 - deltaTime / button.fadeLength; + opacity = Math.min( 1.0, opacity ); + opacity = Math.max( 0.0, opacity ); + + if( button.imgGroup ){ + $.setElementOpacity( button.imgGroup, opacity, true ); + } + if ( opacity > 0 ) { + // fade again + scheduleFade( button ); + } + } +} + +function beginFading( button ) { + button.shouldFade = true; + button.fadeBeginTime = $.now() + button.fadeDelay; + window.setTimeout( function(){ + scheduleFade( button ); + }, button.fadeDelay ); +} + +function stopFading( button ) { + button.shouldFade = false; + if( button.imgGroup ){ + $.setElementOpacity( button.imgGroup, 1.0, true ); + } +} + +function inTo( button, newState ) { + + if( button.element.disabled ){ + return; + } + + if ( newState >= $.ButtonState.GROUP && + button.currentState == $.ButtonState.REST ) { + stopFading( button ); + button.currentState = $.ButtonState.GROUP; + } + + if ( newState >= $.ButtonState.HOVER && + button.currentState == $.ButtonState.GROUP ) { + if( button.imgHover ){ + button.imgHover.style.visibility = ""; + } + button.currentState = $.ButtonState.HOVER; + } + + if ( newState >= $.ButtonState.DOWN && + button.currentState == $.ButtonState.HOVER ) { + if( button.imgDown ){ + button.imgDown.style.visibility = ""; + } + button.currentState = $.ButtonState.DOWN; + } +} + + +function outTo( button, newState ) { + + if( button.element.disabled ){ + return; + } + + if ( newState <= $.ButtonState.HOVER && + button.currentState == $.ButtonState.DOWN ) { + if( button.imgDown ){ + button.imgDown.style.visibility = "hidden"; + } + button.currentState = $.ButtonState.HOVER; + } + + if ( newState <= $.ButtonState.GROUP && + button.currentState == $.ButtonState.HOVER ) { + if( button.imgHover ){ + button.imgHover.style.visibility = "hidden"; + } + button.currentState = $.ButtonState.GROUP; + } + + if ( newState <= $.ButtonState.REST && + button.currentState == $.ButtonState.GROUP ) { + beginFading( button ); + button.currentState = $.ButtonState.REST; + } +} + + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - ButtonGroup + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ +/** + * @class ButtonGroup + * @classdesc Manages events on groups of buttons. + * + * @memberof OpenSeadragon + * @param {Object} options - A dictionary of settings applied against the entire group of buttons. + * @param {Array} options.buttons Array of buttons + * @param {Element} [options.element] Element to use as the container + **/ +$.ButtonGroup = function( options ) { + + $.extend( true, this, { + /** + * An array containing the buttons themselves. + * @member {Array} buttons + * @memberof OpenSeadragon.ButtonGroup# + */ + buttons: [], + clickTimeThreshold: $.DEFAULT_SETTINGS.clickTimeThreshold, + clickDistThreshold: $.DEFAULT_SETTINGS.clickDistThreshold, + labelText: "" + }, options ); + + // copy the button elements TODO: Why? + var buttons = this.buttons.concat([]), + _this = this, + i; + + /** + * The shared container for the buttons. + * @member {Element} element + * @memberof OpenSeadragon.ButtonGroup# + */ + this.element = options.element || $.makeNeutralElement( "div" ); + + // TODO What if there IS an options.group specified? + if( !options.group ){ + this.label = $.makeNeutralElement( "label" ); + //TODO: support labels for ButtonGroups + //this.label.innerHTML = this.labelText; + this.element.style.display = "inline-block"; + this.element.appendChild( this.label ); + for ( i = 0; i < buttons.length; i++ ) { + this.element.appendChild( buttons[ i ].element ); + } + } + + $.setElementTouchActionNone( this.element ); + + /** + * Tracks mouse/touch/key events accross the group of buttons. + * @member {OpenSeadragon.MouseTracker} tracker + * @memberof OpenSeadragon.ButtonGroup# + */ + this.tracker = new $.MouseTracker({ + element: this.element, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + enterHandler: function ( event ) { + var i; + for ( i = 0; i < _this.buttons.length; i++ ) { + _this.buttons[ i ].notifyGroupEnter(); + } + }, + exitHandler: function ( event ) { + var i; + if ( !event.insideElementPressed ) { + for ( i = 0; i < _this.buttons.length; i++ ) { + _this.buttons[ i ].notifyGroupExit(); + } + } + }, + }); +}; + +/** @lends OpenSeadragon.ButtonGroup.prototype */ +$.ButtonGroup.prototype = { + + /** + * TODO: Figure out why this is used on the public API and if a more useful + * api can be created. + * @function + * @private + */ + emulateEnter: function() { + this.tracker.enterHandler( { eventSource: this.tracker } ); + }, + + /** + * TODO: Figure out why this is used on the public API and if a more useful + * api can be created. + * @function + * @private + */ + emulateExit: function() { + this.tracker.exitHandler( { eventSource: this.tracker } ); + } +}; + + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Rect + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function($) { + +/** + * @class Rect + * @classdesc A Rectangle is described by it top left coordinates (x, y), width, + * height and degrees of rotation around (x, y). + * Note that the coordinate system used is the one commonly used with images: + * x increases when going to the right + * y increases when going to the bottom + * degrees increases clockwise with 0 being the horizontal + * + * The constructor normalizes the rectangle to always have 0 <= degrees < 90 + * + * @memberof OpenSeadragon + * @param {Number} [x=0] The vector component 'x'. + * @param {Number} [y=0] The vector component 'y'. + * @param {Number} [width=0] The vector component 'width'. + * @param {Number} [height=0] The vector component 'height'. + * @param {Number} [degrees=0] Rotation of the rectangle around (x,y) in degrees. + */ +$.Rect = function(x, y, width, height, degrees) { + /** + * The vector component 'x'. + * @member {Number} x + * @memberof OpenSeadragon.Rect# + */ + this.x = typeof(x) === "number" ? x : 0; + /** + * The vector component 'y'. + * @member {Number} y + * @memberof OpenSeadragon.Rect# + */ + this.y = typeof(y) === "number" ? y : 0; + /** + * The vector component 'width'. + * @member {Number} width + * @memberof OpenSeadragon.Rect# + */ + this.width = typeof(width) === "number" ? width : 0; + /** + * The vector component 'height'. + * @member {Number} height + * @memberof OpenSeadragon.Rect# + */ + this.height = typeof(height) === "number" ? height : 0; + + this.degrees = typeof(degrees) === "number" ? degrees : 0; + + // Normalizes the rectangle. + this.degrees = this.degrees % 360; + if (this.degrees < 0) { + this.degrees += 360; + } + var newTopLeft, newWidth; + if (this.degrees >= 270) { + newTopLeft = this.getTopRight(); + this.x = newTopLeft.x; + this.y = newTopLeft.y; + newWidth = this.height; + this.height = this.width; + this.width = newWidth; + this.degrees -= 270; + } else if (this.degrees >= 180) { + newTopLeft = this.getBottomRight(); + this.x = newTopLeft.x; + this.y = newTopLeft.y; + this.degrees -= 180; + } else if (this.degrees >= 90) { + newTopLeft = this.getBottomLeft(); + this.x = newTopLeft.x; + this.y = newTopLeft.y; + newWidth = this.height; + this.height = this.width; + this.width = newWidth; + this.degrees -= 90; + } +}; + +/** + * Builds a rectangle having the 3 specified points as summits. + * @static + * @memberof OpenSeadragon.Rect + * @param {OpenSeadragon.Point} topLeft + * @param {OpenSeadragon.Point} topRight + * @param {OpenSeadragon.Point} bottomLeft + * @returns {OpenSeadragon.Rect} + */ +$.Rect.fromSummits = function(topLeft, topRight, bottomLeft) { + var width = topLeft.distanceTo(topRight); + var height = topLeft.distanceTo(bottomLeft); + var diff = topRight.minus(topLeft); + var radians = Math.atan(diff.y / diff.x); + if (diff.x < 0) { + radians += Math.PI; + } else if (diff.y < 0) { + radians += 2 * Math.PI; + } + return new $.Rect( + topLeft.x, + topLeft.y, + width, + height, + radians / Math.PI * 180); +}; + +/** @lends OpenSeadragon.Rect.prototype */ +$.Rect.prototype = { + /** + * @function + * @returns {OpenSeadragon.Rect} a duplicate of this Rect + */ + clone: function() { + return new $.Rect( + this.x, + this.y, + this.width, + this.height, + this.degrees); + }, + + /** + * The aspect ratio is simply the ratio of width to height. + * @function + * @returns {Number} The ratio of width to height. + */ + getAspectRatio: function() { + return this.width / this.height; + }, + + /** + * Provides the coordinates of the upper-left corner of the rectangle as a + * point. + * @function + * @returns {OpenSeadragon.Point} The coordinate of the upper-left corner of + * the rectangle. + */ + getTopLeft: function() { + return new $.Point( + this.x, + this.y + ); + }, + + /** + * Provides the coordinates of the bottom-right corner of the rectangle as a + * point. + * @function + * @returns {OpenSeadragon.Point} The coordinate of the bottom-right corner of + * the rectangle. + */ + getBottomRight: function() { + return new $.Point(this.x + this.width, this.y + this.height) + .rotate(this.degrees, this.getTopLeft()); + }, + + /** + * Provides the coordinates of the top-right corner of the rectangle as a + * point. + * @function + * @returns {OpenSeadragon.Point} The coordinate of the top-right corner of + * the rectangle. + */ + getTopRight: function() { + return new $.Point(this.x + this.width, this.y) + .rotate(this.degrees, this.getTopLeft()); + }, + + /** + * Provides the coordinates of the bottom-left corner of the rectangle as a + * point. + * @function + * @returns {OpenSeadragon.Point} The coordinate of the bottom-left corner of + * the rectangle. + */ + getBottomLeft: function() { + return new $.Point(this.x, this.y + this.height) + .rotate(this.degrees, this.getTopLeft()); + }, + + /** + * Computes the center of the rectangle. + * @function + * @returns {OpenSeadragon.Point} The center of the rectangle as represented + * as represented by a 2-dimensional vector (x,y) + */ + getCenter: function() { + return new $.Point( + this.x + this.width / 2.0, + this.y + this.height / 2.0 + ).rotate(this.degrees, this.getTopLeft()); + }, + + /** + * Returns the width and height component as a vector OpenSeadragon.Point + * @function + * @returns {OpenSeadragon.Point} The 2 dimensional vector representing the + * the width and height of the rectangle. + */ + getSize: function() { + return new $.Point(this.width, this.height); + }, + + /** + * Determines if two Rectangles have equivalent components. + * @function + * @param {OpenSeadragon.Rect} rectangle The Rectangle to compare to. + * @return {Boolean} 'true' if all components are equal, otherwise 'false'. + */ + equals: function(other) { + return (other instanceof $.Rect) && + this.x === other.x && + this.y === other.y && + this.width === other.width && + this.height === other.height && + this.degrees === other.degrees; + }, + + /** + * Multiply all dimensions (except degrees) in this Rect by a factor and + * return a new Rect. + * @function + * @param {Number} factor The factor to multiply vector components. + * @returns {OpenSeadragon.Rect} A new rect representing the multiplication + * of the vector components by the factor + */ + times: function(factor) { + return new $.Rect( + this.x * factor, + this.y * factor, + this.width * factor, + this.height * factor, + this.degrees); + }, + + /** + * Translate/move this Rect by a vector and return new Rect. + * @function + * @param {OpenSeadragon.Point} delta The translation vector. + * @returns {OpenSeadragon.Rect} A new rect with altered position + */ + translate: function(delta) { + return new $.Rect( + this.x + delta.x, + this.y + delta.y, + this.width, + this.height, + this.degrees); + }, + + /** + * Returns the smallest rectangle that will contain this and the given + * rectangle bounding boxes. + * @param {OpenSeadragon.Rect} rect + * @return {OpenSeadragon.Rect} The new rectangle. + */ + union: function(rect) { + var thisBoundingBox = this.getBoundingBox(); + var otherBoundingBox = rect.getBoundingBox(); + + var left = Math.min(thisBoundingBox.x, otherBoundingBox.x); + var top = Math.min(thisBoundingBox.y, otherBoundingBox.y); + var right = Math.max( + thisBoundingBox.x + thisBoundingBox.width, + otherBoundingBox.x + otherBoundingBox.width); + var bottom = Math.max( + thisBoundingBox.y + thisBoundingBox.height, + otherBoundingBox.y + otherBoundingBox.height); + + return new $.Rect( + left, + top, + right - left, + bottom - top); + }, + + /** + * Returns the bounding box of the intersection of this rectangle with the + * given rectangle. + * @param {OpenSeadragon.Rect} rect + * @return {OpenSeadragon.Rect} the bounding box of the intersection + * or null if the rectangles don't intersect. + */ + intersection: function(rect) { + // Simplified version of Weiler Atherton clipping algorithm + // https://en.wikipedia.org/wiki/Weiler%E2%80%93Atherton_clipping_algorithm + // Because we just want the bounding box of the intersection, + // we can just compute the bounding box of: + // 1. all the summits of this which are inside rect + // 2. all the summits of rect which are inside this + // 3. all the intersections of rect and this + var EPSILON = 0.0000000001; + + var intersectionPoints = []; + + var thisTopLeft = this.getTopLeft(); + if (rect.containsPoint(thisTopLeft, EPSILON)) { + intersectionPoints.push(thisTopLeft); + } + var thisTopRight = this.getTopRight(); + if (rect.containsPoint(thisTopRight, EPSILON)) { + intersectionPoints.push(thisTopRight); + } + var thisBottomLeft = this.getBottomLeft(); + if (rect.containsPoint(thisBottomLeft, EPSILON)) { + intersectionPoints.push(thisBottomLeft); + } + var thisBottomRight = this.getBottomRight(); + if (rect.containsPoint(thisBottomRight, EPSILON)) { + intersectionPoints.push(thisBottomRight); + } + + var rectTopLeft = rect.getTopLeft(); + if (this.containsPoint(rectTopLeft, EPSILON)) { + intersectionPoints.push(rectTopLeft); + } + var rectTopRight = rect.getTopRight(); + if (this.containsPoint(rectTopRight, EPSILON)) { + intersectionPoints.push(rectTopRight); + } + var rectBottomLeft = rect.getBottomLeft(); + if (this.containsPoint(rectBottomLeft, EPSILON)) { + intersectionPoints.push(rectBottomLeft); + } + var rectBottomRight = rect.getBottomRight(); + if (this.containsPoint(rectBottomRight, EPSILON)) { + intersectionPoints.push(rectBottomRight); + } + + var thisSegments = this._getSegments(); + var rectSegments = rect._getSegments(); + for (var i = 0; i < thisSegments.length; i++) { + var thisSegment = thisSegments[i]; + for (var j = 0; j < rectSegments.length; j++) { + var rectSegment = rectSegments[j]; + var intersect = getIntersection(thisSegment[0], thisSegment[1], + rectSegment[0], rectSegment[1]); + if (intersect) { + intersectionPoints.push(intersect); + } + } + } + + // Get intersection point of segments [a,b] and [c,d] + function getIntersection(a, b, c, d) { + // http://stackoverflow.com/a/1968345/1440403 + var abVector = b.minus(a); + var cdVector = d.minus(c); + + var denom = -cdVector.x * abVector.y + abVector.x * cdVector.y; + if (denom === 0) { + return null; + } + + var s = (abVector.x * (a.y - c.y) - abVector.y * (a.x - c.x)) / denom; + var t = (cdVector.x * (a.y - c.y) - cdVector.y * (a.x - c.x)) / denom; + + if (-EPSILON <= s && s <= 1 - EPSILON && + -EPSILON <= t && t <= 1 - EPSILON) { + return new $.Point(a.x + t * abVector.x, a.y + t * abVector.y); + } + return null; + } + + if (intersectionPoints.length === 0) { + return null; + } + + var minX = intersectionPoints[0].x; + var maxX = intersectionPoints[0].x; + var minY = intersectionPoints[0].y; + var maxY = intersectionPoints[0].y; + for (var k = 1; k < intersectionPoints.length; k++) { + var point = intersectionPoints[k]; + if (point.x < minX) { + minX = point.x; + } + if (point.x > maxX) { + maxX = point.x; + } + if (point.y < minY) { + minY = point.y; + } + if (point.y > maxY) { + maxY = point.y; + } + } + return new $.Rect(minX, minY, maxX - minX, maxY - minY); + }, + + // private + _getSegments: function() { + var topLeft = this.getTopLeft(); + var topRight = this.getTopRight(); + var bottomLeft = this.getBottomLeft(); + var bottomRight = this.getBottomRight(); + return [[topLeft, topRight], + [topRight, bottomRight], + [bottomRight, bottomLeft], + [bottomLeft, topLeft]]; + }, + + /** + * Rotates a rectangle around a point. + * @function + * @param {Number} degrees The angle in degrees to rotate. + * @param {OpenSeadragon.Point} [pivot] The point about which to rotate. + * Defaults to the center of the rectangle. + * @return {OpenSeadragon.Rect} + */ + rotate: function(degrees, pivot) { + degrees = degrees % 360; + if (degrees === 0) { + return this.clone(); + } + if (degrees < 0) { + degrees += 360; + } + + pivot = pivot || this.getCenter(); + var newTopLeft = this.getTopLeft().rotate(degrees, pivot); + var newTopRight = this.getTopRight().rotate(degrees, pivot); + + var diff = newTopRight.minus(newTopLeft); + var radians = Math.atan(diff.y / diff.x); + if (diff.x < 0) { + radians += Math.PI; + } else if (diff.y < 0) { + radians += 2 * Math.PI; + } + return new $.Rect( + newTopLeft.x, + newTopLeft.y, + this.width, + this.height, + radians / Math.PI * 180); + }, + + /** + * Retrieves the smallest horizontal (degrees=0) rectangle which contains + * this rectangle. + * @returns {OpenSeadragon.Rect} + */ + getBoundingBox: function() { + if (this.degrees === 0) { + return this.clone(); + } + var topLeft = this.getTopLeft(); + var topRight = this.getTopRight(); + var bottomLeft = this.getBottomLeft(); + var bottomRight = this.getBottomRight(); + var minX = Math.min(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x); + var maxX = Math.max(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x); + var minY = Math.min(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + var maxY = Math.max(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + return new $.Rect( + minX, + minY, + maxX - minX, + maxY - minY); + }, + + /** + * Retrieves the smallest horizontal (degrees=0) rectangle which contains + * this rectangle and has integers x, y, width and height + * @returns {OpenSeadragon.Rect} + */ + getIntegerBoundingBox: function() { + var boundingBox = this.getBoundingBox(); + var x = Math.floor(boundingBox.x); + var y = Math.floor(boundingBox.y); + var width = Math.ceil(boundingBox.width + boundingBox.x - x); + var height = Math.ceil(boundingBox.height + boundingBox.y - y); + return new $.Rect(x, y, width, height); + }, + + /** + * Determines whether a point is inside this rectangle (edge included). + * @function + * @param {OpenSeadragon.Point} point + * @param {Number} [epsilon=0] the margin of error allowed + * @returns {Boolean} true if the point is inside this rectangle, false + * otherwise. + */ + containsPoint: function(point, epsilon) { + epsilon = epsilon || 0; + + // See http://stackoverflow.com/a/2752754/1440403 for explanation + var topLeft = this.getTopLeft(); + var topRight = this.getTopRight(); + var bottomLeft = this.getBottomLeft(); + var topDiff = topRight.minus(topLeft); + var leftDiff = bottomLeft.minus(topLeft); + + return ((point.x - topLeft.x) * topDiff.x + + (point.y - topLeft.y) * topDiff.y >= -epsilon) && + + ((point.x - topRight.x) * topDiff.x + + (point.y - topRight.y) * topDiff.y <= epsilon) && + + ((point.x - topLeft.x) * leftDiff.x + + (point.y - topLeft.y) * leftDiff.y >= -epsilon) && + + ((point.x - bottomLeft.x) * leftDiff.x + + (point.y - bottomLeft.y) * leftDiff.y <= epsilon); + }, + + /** + * Provides a string representation of the rectangle which is useful for + * debugging. + * @function + * @returns {String} A string representation of the rectangle. + */ + toString: function() { + return "[" + + (Math.round(this.x * 100) / 100) + ", " + + (Math.round(this.y * 100) / 100) + ", " + + (Math.round(this.width * 100) / 100) + "x" + + (Math.round(this.height * 100) / 100) + ", " + + (Math.round(this.degrees * 100) / 100) + "deg" + + "]"; + } +}; + + +}(OpenSeadragon)); + +/* + * OpenSeadragon - ReferenceStrip + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function ( $ ) { + +// dictionary from id to private properties +var THIS = {}; + +/** + * The CollectionDrawer is a reimplementation if the Drawer API that + * focuses on allowing a viewport to be redefined as a collection + * of smaller viewports, defined by a clear number of rows and / or + * columns of which each item in the matrix of viewports has its own + * source. + * + * This idea is a reexpression of the idea of dzi collections + * which allows a clearer algorithm to reuse the tile sources already + * supported by OpenSeadragon, in heterogenious or homogenious + * sequences just like mixed groups already supported by the viewer + * for the purpose of image sequnces. + * + * TODO: The difficult part of this feature is figuring out how to express + * this functionality as a combination of the functionality already + * provided by Drawer, Viewport, TileSource, and Navigator. It may + * require better abstraction at those points in order to effeciently + * reuse those paradigms. + */ +/** + * @class ReferenceStrip + * @memberof OpenSeadragon + * @param {Object} options + */ +$.ReferenceStrip = function ( options ) { + + var _this = this, + viewer = options.viewer, + viewerSize = $.getElementSize( viewer.element ), + element, + style, + i; + + //We may need to create a new element and id if they did not + //provide the id for the existing element + if ( !options.id ) { + options.id = 'referencestrip-' + $.now(); + this.element = $.makeNeutralElement( "div" ); + this.element.id = options.id; + this.element.className = 'referencestrip'; + } + + options = $.extend( true, { + sizeRatio: $.DEFAULT_SETTINGS.referenceStripSizeRatio, + position: $.DEFAULT_SETTINGS.referenceStripPosition, + scroll: $.DEFAULT_SETTINGS.referenceStripScroll, + clickTimeThreshold: $.DEFAULT_SETTINGS.clickTimeThreshold + }, options, { + //required overrides + element: this.element, + //These need to be overridden to prevent recursion since + //the navigator is a viewer and a viewer has a navigator + showNavigator: false, + mouseNavEnabled: false, + showNavigationControl: false, + showSequenceControl: false + } ); + + $.extend( this, options ); + //Private state properties + THIS[this.id] = { + "animating": false + }; + + this.minPixelRatio = this.viewer.minPixelRatio; + + style = this.element.style; + style.marginTop = '0px'; + style.marginRight = '0px'; + style.marginBottom = '0px'; + style.marginLeft = '0px'; + style.left = '0px'; + style.bottom = '0px'; + style.border = '0px'; + style.background = '#000'; + style.position = 'relative'; + + $.setElementTouchActionNone( this.element ); + + $.setElementOpacity( this.element, 0.8 ); + + this.viewer = viewer; + this.innerTracker = new $.MouseTracker( { + element: this.element, + dragHandler: $.delegate( this, onStripDrag ), + scrollHandler: $.delegate( this, onStripScroll ), + enterHandler: $.delegate( this, onStripEnter ), + exitHandler: $.delegate( this, onStripExit ), + keyDownHandler: $.delegate( this, onKeyDown ), + keyHandler: $.delegate( this, onKeyPress ) + } ); + + //Controls the position and orientation of the reference strip and sets the + //appropriate width and height + if ( options.width && options.height ) { + this.element.style.width = options.width + 'px'; + this.element.style.height = options.height + 'px'; + viewer.addControl( + this.element, + { anchor: $.ControlAnchor.BOTTOM_LEFT } + ); + } else { + if ( "horizontal" == options.scroll ) { + this.element.style.width = ( + viewerSize.x * + options.sizeRatio * + viewer.tileSources.length + ) + ( 12 * viewer.tileSources.length ) + 'px'; + + this.element.style.height = ( + viewerSize.y * + options.sizeRatio + ) + 'px'; + + viewer.addControl( + this.element, + { anchor: $.ControlAnchor.BOTTOM_LEFT } + ); + } else { + this.element.style.height = ( + viewerSize.y * + options.sizeRatio * + viewer.tileSources.length + ) + ( 12 * viewer.tileSources.length ) + 'px'; + + this.element.style.width = ( + viewerSize.x * + options.sizeRatio + ) + 'px'; + + viewer.addControl( + this.element, + { anchor: $.ControlAnchor.TOP_LEFT } + ); + + } + } + + this.panelWidth = ( viewerSize.x * this.sizeRatio ) + 8; + this.panelHeight = ( viewerSize.y * this.sizeRatio ) + 8; + this.panels = []; + + /*jshint loopfunc:true*/ + for ( i = 0; i < viewer.tileSources.length; i++ ) { + + element = $.makeNeutralElement( 'div' ); + element.id = this.element.id + "-" + i; + + element.style.width = _this.panelWidth + 'px'; + element.style.height = _this.panelHeight + 'px'; + element.style.display = 'inline'; + element.style.float = 'left'; //Webkit + element.style.cssFloat = 'left'; //Firefox + element.style.styleFloat = 'left'; //IE + element.style.padding = '2px'; + $.setElementTouchActionNone( element ); + + element.innerTracker = new $.MouseTracker( { + element: element, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + pressHandler: function ( event ) { + event.eventSource.dragging = $.now(); + }, + releaseHandler: function ( event ) { + var tracker = event.eventSource, + id = tracker.element.id, + page = Number( id.split( '-' )[2] ), + now = $.now(); + + if ( event.insideElementPressed && + event.insideElementReleased && + tracker.dragging && + ( now - tracker.dragging ) < tracker.clickTimeThreshold ) { + tracker.dragging = null; + viewer.goToPage( page ); + } + } + } ); + + this.element.appendChild( element ); + + element.activePanel = false; + + this.panels.push( element ); + + } + loadPanels( this, this.scroll == 'vertical' ? viewerSize.y : viewerSize.x, 0 ); + this.setFocus( 0 ); + +}; + +$.extend( $.ReferenceStrip.prototype, $.EventSource.prototype, $.Viewer.prototype, /** @lends OpenSeadragon.ReferenceStrip.prototype */{ + + /** + * @function + */ + setFocus: function ( page ) { + var element = $.getElement( this.element.id + '-' + page ), + viewerSize = $.getElementSize( this.viewer.canvas ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), + offsetLeft = -Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = -Number( this.element.style.marginTop.replace( 'px', '' ) ), + offset; + + if ( this.currentSelected !== element ) { + if ( this.currentSelected ) { + this.currentSelected.style.background = '#000'; + } + this.currentSelected = element; + this.currentSelected.style.background = '#999'; + + if ( 'horizontal' == this.scroll ) { + //right left + offset = ( Number( page ) ) * ( this.panelWidth + 3 ); + if ( offset > offsetLeft + viewerSize.x - this.panelWidth ) { + offset = Math.min( offset, ( scrollWidth - viewerSize.x ) ); + this.element.style.marginLeft = -offset + 'px'; + loadPanels( this, viewerSize.x, -offset ); + } else if ( offset < offsetLeft ) { + offset = Math.max( 0, offset - viewerSize.x / 2 ); + this.element.style.marginLeft = -offset + 'px'; + loadPanels( this, viewerSize.x, -offset ); + } + } else { + offset = ( Number( page ) ) * ( this.panelHeight + 3 ); + if ( offset > offsetTop + viewerSize.y - this.panelHeight ) { + offset = Math.min( offset, ( scrollHeight - viewerSize.y ) ); + this.element.style.marginTop = -offset + 'px'; + loadPanels( this, viewerSize.y, -offset ); + } else if ( offset < offsetTop ) { + offset = Math.max( 0, offset - viewerSize.y / 2 ); + this.element.style.marginTop = -offset + 'px'; + loadPanels( this, viewerSize.y, -offset ); + } + } + + this.currentPage = page; + onStripEnter.call( this, { eventSource: this.innerTracker } ); + } + }, + + /** + * @function + */ + update: function () { + if ( THIS[this.id].animating ) { + $.console.log( 'image reference strip update' ); + return true; + } + return false; + }, + + // Overrides Viewer.destroy + destroy: function() { + if (this.element) { + this.element.parentNode.removeChild(this.element); + } + } + +} ); + + + + +/** + * @private + * @inner + * @function + */ +function onStripDrag( event ) { + + var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), + viewerSize = $.getElementSize( this.viewer.canvas ); + this.dragging = true; + if ( this.element ) { + if ( 'horizontal' == this.scroll ) { + if ( -event.delta.x > 0 ) { + //forward + if ( offsetLeft > -( scrollWidth - viewerSize.x ) ) { + this.element.style.marginLeft = ( offsetLeft + ( event.delta.x * 2 ) ) + 'px'; + loadPanels( this, viewerSize.x, offsetLeft + ( event.delta.x * 2 ) ); + } + } else if ( -event.delta.x < 0 ) { + //reverse + if ( offsetLeft < 0 ) { + this.element.style.marginLeft = ( offsetLeft + ( event.delta.x * 2 ) ) + 'px'; + loadPanels( this, viewerSize.x, offsetLeft + ( event.delta.x * 2 ) ); + } + } + } else { + if ( -event.delta.y > 0 ) { + //forward + if ( offsetTop > -( scrollHeight - viewerSize.y ) ) { + this.element.style.marginTop = ( offsetTop + ( event.delta.y * 2 ) ) + 'px'; + loadPanels( this, viewerSize.y, offsetTop + ( event.delta.y * 2 ) ); + } + } else if ( -event.delta.y < 0 ) { + //reverse + if ( offsetTop < 0 ) { + this.element.style.marginTop = ( offsetTop + ( event.delta.y * 2 ) ) + 'px'; + loadPanels( this, viewerSize.y, offsetTop + ( event.delta.y * 2 ) ); + } + } + } + } + return false; + +} + + + +/** + * @private + * @inner + * @function + */ +function onStripScroll( event ) { + var offsetLeft = Number( this.element.style.marginLeft.replace( 'px', '' ) ), + offsetTop = Number( this.element.style.marginTop.replace( 'px', '' ) ), + scrollWidth = Number( this.element.style.width.replace( 'px', '' ) ), + scrollHeight = Number( this.element.style.height.replace( 'px', '' ) ), + viewerSize = $.getElementSize( this.viewer.canvas ); + if ( this.element ) { + if ( 'horizontal' == this.scroll ) { + if ( event.scroll > 0 ) { + //forward + if ( offsetLeft > -( scrollWidth - viewerSize.x ) ) { + this.element.style.marginLeft = ( offsetLeft - ( event.scroll * 60 ) ) + 'px'; + loadPanels( this, viewerSize.x, offsetLeft - ( event.scroll * 60 ) ); + } + } else if ( event.scroll < 0 ) { + //reverse + if ( offsetLeft < 0 ) { + this.element.style.marginLeft = ( offsetLeft - ( event.scroll * 60 ) ) + 'px'; + loadPanels( this, viewerSize.x, offsetLeft - ( event.scroll * 60 ) ); + } + } + } else { + if ( event.scroll < 0 ) { + //scroll up + if ( offsetTop > viewerSize.y - scrollHeight ) { + this.element.style.marginTop = ( offsetTop + ( event.scroll * 60 ) ) + 'px'; + loadPanels( this, viewerSize.y, offsetTop + ( event.scroll * 60 ) ); + } + } else if ( event.scroll > 0 ) { + //scroll dowm + if ( offsetTop < 0 ) { + this.element.style.marginTop = ( offsetTop + ( event.scroll * 60 ) ) + 'px'; + loadPanels( this, viewerSize.y, offsetTop + ( event.scroll * 60 ) ); + } + } + } + } + //cancels event + return false; +} + + +function loadPanels( strip, viewerSize, scroll ) { + var panelSize, + activePanelsStart, + activePanelsEnd, + miniViewer, + style, + i, + element; + if ( 'horizontal' == strip.scroll ) { + panelSize = strip.panelWidth; + } else { + panelSize = strip.panelHeight; + } + activePanelsStart = Math.ceil( viewerSize / panelSize ) + 5; + activePanelsEnd = Math.ceil( ( Math.abs( scroll ) + viewerSize ) / panelSize ) + 1; + activePanelsStart = activePanelsEnd - activePanelsStart; + activePanelsStart = activePanelsStart < 0 ? 0 : activePanelsStart; + + for ( i = activePanelsStart; i < activePanelsEnd && i < strip.panels.length; i++ ) { + element = strip.panels[i]; + if ( !element.activePanel ) { + miniViewer = new $.Viewer( { + id: element.id, + tileSources: [strip.viewer.tileSources[i]], + element: element, + navigatorSizeRatio: strip.sizeRatio, + showNavigator: false, + mouseNavEnabled: false, + showNavigationControl: false, + showSequenceControl: false, + immediateRender: true, + blendTime: 0, + animationTime: 0 + } ); + + miniViewer.displayRegion = $.makeNeutralElement( "div" ); + miniViewer.displayRegion.id = element.id + '-displayregion'; + miniViewer.displayRegion.className = 'displayregion'; + + style = miniViewer.displayRegion.style; + style.position = 'relative'; + style.top = '0px'; + style.left = '0px'; + style.fontSize = '0px'; + style.overflow = 'hidden'; + style.float = 'left'; //Webkit + style.cssFloat = 'left'; //Firefox + style.styleFloat = 'left'; //IE + style.zIndex = 999999999; + style.cursor = 'default'; + style.width = ( strip.panelWidth - 4 ) + 'px'; + style.height = ( strip.panelHeight - 4 ) + 'px'; + + // TODO: What is this for? Future keyboard navigation support? + miniViewer.displayRegion.innerTracker = new $.MouseTracker( { + element: miniViewer.displayRegion, + startDisabled: true + } ); + + element.getElementsByTagName( 'div' )[0].appendChild( + miniViewer.displayRegion + ); + + element.activePanel = true; + } + } +} + + +/** + * @private + * @inner + * @function + */ +function onStripEnter( event ) { + var element = event.eventSource.element; + + //$.setElementOpacity(element, 0.8); + + //element.style.border = '1px solid #555'; + //element.style.background = '#000'; + + if ( 'horizontal' == this.scroll ) { + + //element.style.paddingTop = "0px"; + element.style.marginBottom = "0px"; + + } else { + + //element.style.paddingRight = "0px"; + element.style.marginLeft = "0px"; + + } + return false; +} + + +/** + * @private + * @inner + * @function + */ +function onStripExit( event ) { + var element = event.eventSource.element; + + if ( 'horizontal' == this.scroll ) { + + //element.style.paddingTop = "10px"; + element.style.marginBottom = "-" + ( $.getElementSize( element ).y / 2 ) + "px"; + + } else { + + //element.style.paddingRight = "10px"; + element.style.marginLeft = "-" + ( $.getElementSize( element ).x / 2 ) + "px"; + + } + return false; +} + + +/** + * @private + * @inner + * @function + */ +function onKeyDown( event ) { + //console.log( event.keyCode ); + + if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + switch ( event.keyCode ) { + case 38: //up arrow + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: 1, shift: null } ); + return false; + case 40: //down arrow + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: -1, shift: null } ); + return false; + case 37: //left arrow + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: -1, shift: null } ); + return false; + case 39: //right arrow + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: 1, shift: null } ); + return false; + default: + //console.log( 'navigator keycode %s', event.keyCode ); + return true; + } + } else { + return true; + } +} + + +/** + * @private + * @inner + * @function + */ +function onKeyPress( event ) { + //console.log( event.keyCode ); + + if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + switch ( event.keyCode ) { + case 61: //=|+ + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: 1, shift: null } ); + return false; + case 45: //-|_ + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: -1, shift: null } ); + return false; + case 48: //0|) + case 119: //w + case 87: //W + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: 1, shift: null } ); + return false; + case 115: //s + case 83: //S + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: -1, shift: null } ); + return false; + case 97: //a + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: -1, shift: null } ); + return false; + case 100: //d + onStripScroll.call( this, { eventSource: this.tracker, position: null, scroll: 1, shift: null } ); + return false; + default: + //console.log( 'navigator keycode %s', event.keyCode ); + return true; + } + } else { + return true; + } +} + + + +} ( OpenSeadragon ) ); + +/* + * OpenSeadragon - DisplayRect + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class DisplayRect + * @classdesc A display rectangle is very similar to {@link OpenSeadragon.Rect} but adds two + * fields, 'minLevel' and 'maxLevel' which denote the supported zoom levels + * for this rectangle. + * + * @memberof OpenSeadragon + * @extends OpenSeadragon.Rect + * @param {Number} x The vector component 'x'. + * @param {Number} y The vector component 'y'. + * @param {Number} width The vector component 'height'. + * @param {Number} height The vector component 'width'. + * @param {Number} minLevel The lowest zoom level supported. + * @param {Number} maxLevel The highest zoom level supported. + */ +$.DisplayRect = function( x, y, width, height, minLevel, maxLevel ) { + $.Rect.apply( this, [ x, y, width, height ] ); + + /** + * The lowest zoom level supported. + * @member {Number} minLevel + * @memberof OpenSeadragon.DisplayRect# + */ + this.minLevel = minLevel; + /** + * The highest zoom level supported. + * @member {Number} maxLevel + * @memberof OpenSeadragon.DisplayRect# + */ + this.maxLevel = maxLevel; +}; + +$.extend( $.DisplayRect.prototype, $.Rect.prototype ); + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Spring + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class Spring + * @memberof OpenSeadragon + * @param {Object} options - Spring configuration settings. + * @param {Number} options.springStiffness - Spring stiffness. Must be greater than zero. + * The closer to zero, the closer to linear animation. + * @param {Number} options.animationTime - Animation duration per spring, in seconds. + * Must be zero or greater. + * @param {Number} [options.initial=0] - Initial value of spring. + * @param {Boolean} [options.exponential=false] - Whether this spring represents + * an exponential scale (such as zoom) and should be animated accordingly. Note that + * exponential springs must have non-zero values. + */ +$.Spring = function( options ) { + var args = arguments; + + if( typeof( options ) != 'object' ){ + //allows backward compatible use of ( initialValue, config ) as + //constructor parameters + options = { + initial: args.length && typeof ( args[ 0 ] ) == "number" ? + args[ 0 ] : + undefined, + /** + * Spring stiffness. + * @member {Number} springStiffness + * @memberof OpenSeadragon.Spring# + */ + springStiffness: args.length > 1 ? + args[ 1 ].springStiffness : + 5.0, + /** + * Animation duration per spring. + * @member {Number} animationTime + * @memberof OpenSeadragon.Spring# + */ + animationTime: args.length > 1 ? + args[ 1 ].animationTime : + 1.5 + }; + } + + $.console.assert(typeof options.springStiffness === "number" && options.springStiffness !== 0, + "[OpenSeadragon.Spring] options.springStiffness must be a non-zero number"); + + $.console.assert(typeof options.animationTime === "number" && options.animationTime >= 0, + "[OpenSeadragon.Spring] options.animationTime must be a number greater than or equal to 0"); + + if (options.exponential) { + this._exponential = true; + delete options.exponential; + } + + $.extend( true, this, options); + + /** + * @member {Object} current + * @memberof OpenSeadragon.Spring# + * @property {Number} value + * @property {Number} time + */ + this.current = { + value: typeof ( this.initial ) == "number" ? + this.initial : + (this._exponential ? 0 : 1), + time: $.now() // always work in milliseconds + }; + + $.console.assert(!this._exponential || this.current.value !== 0, + "[OpenSeadragon.Spring] value must be non-zero for exponential springs"); + + /** + * @member {Object} start + * @memberof OpenSeadragon.Spring# + * @property {Number} value + * @property {Number} time + */ + this.start = { + value: this.current.value, + time: this.current.time + }; + + /** + * @member {Object} target + * @memberof OpenSeadragon.Spring# + * @property {Number} value + * @property {Number} time + */ + this.target = { + value: this.current.value, + time: this.current.time + }; + + if (this._exponential) { + this.start._logValue = Math.log(this.start.value); + this.target._logValue = Math.log(this.target.value); + this.current._logValue = Math.log(this.current.value); + } +}; + +/** @lends OpenSeadragon.Spring.prototype */ +$.Spring.prototype = { + + /** + * @function + * @param {Number} target + */ + resetTo: function( target ) { + $.console.assert(!this._exponential || target !== 0, + "[OpenSeadragon.Spring.resetTo] target must be non-zero for exponential springs"); + + this.start.value = this.target.value = this.current.value = target; + this.start.time = this.target.time = this.current.time = $.now(); + + if (this._exponential) { + this.start._logValue = Math.log(this.start.value); + this.target._logValue = Math.log(this.target.value); + this.current._logValue = Math.log(this.current.value); + } + }, + + /** + * @function + * @param {Number} target + */ + springTo: function( target ) { + $.console.assert(!this._exponential || target !== 0, + "[OpenSeadragon.Spring.springTo] target must be non-zero for exponential springs"); + + this.start.value = this.current.value; + this.start.time = this.current.time; + this.target.value = target; + this.target.time = this.start.time + 1000 * this.animationTime; + + if (this._exponential) { + this.start._logValue = Math.log(this.start.value); + this.target._logValue = Math.log(this.target.value); + } + }, + + /** + * @function + * @param {Number} delta + */ + shiftBy: function( delta ) { + this.start.value += delta; + this.target.value += delta; + + if (this._exponential) { + $.console.assert(this.target.value !== 0 && this.start.value !== 0, + "[OpenSeadragon.Spring.shiftBy] spring value must be non-zero for exponential springs"); + + this.start._logValue = Math.log(this.start.value); + this.target._logValue = Math.log(this.target.value); + } + }, + + setExponential: function(value) { + this._exponential = value; + + if (this._exponential) { + $.console.assert(this.current.value !== 0 && this.target.value !== 0 && this.start.value !== 0, + "[OpenSeadragon.Spring.setExponential] spring value must be non-zero for exponential springs"); + + this.start._logValue = Math.log(this.start.value); + this.target._logValue = Math.log(this.target.value); + this.current._logValue = Math.log(this.current.value); + } + }, + + /** + * @function + */ + update: function() { + this.current.time = $.now(); + + var startValue, targetValue; + if (this._exponential) { + startValue = this.start._logValue; + targetValue = this.target._logValue; + } else { + startValue = this.start.value; + targetValue = this.target.value; + } + + var currentValue = (this.current.time >= this.target.time) ? + targetValue : + startValue + + ( targetValue - startValue ) * + transform( + this.springStiffness, + ( this.current.time - this.start.time ) / + ( this.target.time - this.start.time ) + ); + + if (this._exponential) { + this.current.value = Math.exp(currentValue); + } else { + this.current.value = currentValue; + } + }, + + /** + * Returns whether the spring is at the target value + * @function + * @returns {Boolean} True if at target value, false otherwise + */ + isAtTargetValue: function() { + return this.current.value === this.target.value; + } +}; + +/** + * @private + */ +function transform( stiffness, x ) { + return ( 1.0 - Math.exp( stiffness * -x ) ) / + ( 1.0 - Math.exp( -stiffness ) ); +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - ImageLoader + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +// private class +function ImageJob ( options ) { + + $.extend( true, this, { + timeout: $.DEFAULT_SETTINGS.timeout, + jobId: null + }, options ); + + /** + * Image object which will contain downloaded image. + * @member {Image} image + * @memberof OpenSeadragon.ImageJob# + */ + this.image = null; +} + +ImageJob.prototype = { + errorMsg: null, + start: function(){ + var _this = this; + + this.image = new Image(); + + if ( this.crossOriginPolicy !== false ) { + this.image.crossOrigin = this.crossOriginPolicy; + } + + this.image.onload = function(){ + _this.finish( true ); + }; + this.image.onabort = this.image.onerror = function(){ + _this.errorMsg = "Image load aborted"; + _this.finish( false ); + }; + + this.jobId = window.setTimeout( function(){ + _this.errorMsg = "Image load exceeded timeout"; + _this.finish( false ); + }, this.timeout); + + this.image.src = this.src; + }, + + finish: function( successful ) { + this.image.onload = this.image.onerror = this.image.onabort = null; + if (!successful) { + this.image = null; + } + + if ( this.jobId ) { + window.clearTimeout( this.jobId ); + } + + this.callback( this ); + } + +}; + +/** + * @class ImageLoader + * @memberof OpenSeadragon + * @classdesc Handles downloading of a set of images using asynchronous queue pattern. + * You generally won't have to interact with the ImageLoader directly. + * @param {Object} options - Options for this ImageLoader. + * @param {Number} [options.jobLimit] - The number of concurrent image requests. See imageLoaderLimit in {@link OpenSeadragon.Options} for details. + */ +$.ImageLoader = function( options ) { + + $.extend( true, this, { + jobLimit: $.DEFAULT_SETTINGS.imageLoaderLimit, + jobQueue: [], + jobsInProgress: 0 + }, options ); + +}; + +/** @lends OpenSeadragon.ImageLoader.prototype */ +$.ImageLoader.prototype = { + + /** + * Add an unloaded image to the loader queue. + * @method + * @param {String} src - URL of image to download. + * @param {String} crossOriginPolicy - CORS policy to use for downloads + * @param {Function} callback - Called once image has been downloaded. + */ + addJob: function( options ) { + var _this = this, + complete = function( job ) { + completeJob( _this, job, options.callback ); + }, + jobOptions = { + src: options.src, + crossOriginPolicy: options.crossOriginPolicy, + callback: complete, + abort: options.abort + }, + newJob = new ImageJob( jobOptions ); + + if ( !this.jobLimit || this.jobsInProgress < this.jobLimit ) { + newJob.start(); + this.jobsInProgress++; + } + else { + this.jobQueue.push( newJob ); + } + }, + + /** + * Clear any unstarted image loading jobs from the queue. + * @method + */ + clear: function() { + for( var i = 0; i < this.jobQueue.length; i++ ) { + var job = this.jobQueue[i]; + if ( typeof job.abort === "function" ) { + job.abort(); + } + } + + this.jobQueue = []; + } +}; + +/** + * Cleans up ImageJob once completed. + * @method + * @private + * @param loader - ImageLoader used to start job. + * @param job - The ImageJob that has completed. + * @param callback - Called once cleanup is finished. + */ +function completeJob( loader, job, callback ) { + var nextJob; + + loader.jobsInProgress--; + + if ( (!loader.jobLimit || loader.jobsInProgress < loader.jobLimit) && loader.jobQueue.length > 0) { + nextJob = loader.jobQueue.shift(); + nextJob.start(); + loader.jobsInProgress++; + } + + callback( job.image, job.errorMsg ); +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Tile + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class Tile + * @memberof OpenSeadragon + * @param {Number} level The zoom level this tile belongs to. + * @param {Number} x The vector component 'x'. + * @param {Number} y The vector component 'y'. + * @param {OpenSeadragon.Point} bounds Where this tile fits, in normalized + * coordinates. + * @param {Boolean} exists Is this tile a part of a sparse image? ( Also has + * this tile failed to load? ) + * @param {String} url The URL of this tile's image. + * @param {CanvasRenderingContext2D} context2D The context2D of this tile if it + * is provided directly by the tile source. + */ +$.Tile = function(level, x, y, bounds, exists, url, context2D) { + /** + * The zoom level this tile belongs to. + * @member {Number} level + * @memberof OpenSeadragon.Tile# + */ + this.level = level; + /** + * The vector component 'x'. + * @member {Number} x + * @memberof OpenSeadragon.Tile# + */ + this.x = x; + /** + * The vector component 'y'. + * @member {Number} y + * @memberof OpenSeadragon.Tile# + */ + this.y = y; + /** + * Where this tile fits, in normalized coordinates + * @member {OpenSeadragon.Rect} bounds + * @memberof OpenSeadragon.Tile# + */ + this.bounds = bounds; + /** + * Is this tile a part of a sparse image? Also has this tile failed to load? + * @member {Boolean} exists + * @memberof OpenSeadragon.Tile# + */ + this.exists = exists; + /** + * The URL of this tile's image. + * @member {String} url + * @memberof OpenSeadragon.Tile# + */ + this.url = url; + /** + * The context2D of this tile if it is provided directly by the tile source. + * @member {CanvasRenderingContext2D} context2D + * @memberOf OpenSeadragon.Tile# + */ + this.context2D = context2D; + /** + * Is this tile loaded? + * @member {Boolean} loaded + * @memberof OpenSeadragon.Tile# + */ + this.loaded = false; + /** + * Is this tile loading? + * @member {Boolean} loading + * @memberof OpenSeadragon.Tile# + */ + this.loading = false; + + /** + * The HTML div element for this tile + * @member {Element} element + * @memberof OpenSeadragon.Tile# + */ + this.element = null; + /** + * The HTML img element for this tile. + * @member {Element} imgElement + * @memberof OpenSeadragon.Tile# + */ + this.imgElement = null; + /** + * The Image object for this tile. + * @member {Object} image + * @memberof OpenSeadragon.Tile# + */ + this.image = null; + + /** + * The alias of this.element.style. + * @member {String} style + * @memberof OpenSeadragon.Tile# + */ + this.style = null; + /** + * This tile's position on screen, in pixels. + * @member {OpenSeadragon.Point} position + * @memberof OpenSeadragon.Tile# + */ + this.position = null; + /** + * This tile's size on screen, in pixels. + * @member {OpenSeadragon.Point} size + * @memberof OpenSeadragon.Tile# + */ + this.size = null; + /** + * The start time of this tile's blending. + * @member {Number} blendStart + * @memberof OpenSeadragon.Tile# + */ + this.blendStart = null; + /** + * The current opacity this tile should be. + * @member {Number} opacity + * @memberof OpenSeadragon.Tile# + */ + this.opacity = null; + /** + * The distance of this tile to the viewport center. + * @member {Number} distance + * @memberof OpenSeadragon.Tile# + */ + this.distance = null; + /** + * The visibility score of this tile. + * @member {Number} visibility + * @memberof OpenSeadragon.Tile# + */ + this.visibility = null; + + /** + * Whether this tile is currently being drawn. + * @member {Boolean} beingDrawn + * @memberof OpenSeadragon.Tile# + */ + this.beingDrawn = false; + /** + * Timestamp the tile was last touched. + * @member {Number} lastTouchTime + * @memberof OpenSeadragon.Tile# + */ + this.lastTouchTime = 0; +}; + +/** @lends OpenSeadragon.Tile.prototype */ +$.Tile.prototype = { + + /** + * Provides a string representation of this tiles level and (x,y) + * components. + * @function + * @returns {String} + */ + toString: function() { + return this.level + "/" + this.x + "_" + this.y; + }, + + // private + _hasTransparencyChannel: function() { + return !!this.context2D || this.url.match('.png'); + }, + + /** + * Renders the tile in an html container. + * @function + * @param {Element} container + */ + drawHTML: function( container ) { + if (!this.cacheImageRecord) { + $.console.warn( + '[Tile.drawHTML] attempting to draw tile %s when it\'s not cached', + this.toString()); + return; + } + + if ( !this.loaded ) { + $.console.warn( + "Attempting to draw tile %s when it's not yet loaded.", + this.toString() + ); + return; + } + + //EXPERIMENTAL - trying to figure out how to scale the container + // content during animation of the container size. + + if ( !this.element ) { + this.element = $.makeNeutralElement( "div" ); + this.imgElement = this.cacheImageRecord.getImage().cloneNode(); + this.imgElement.style.msInterpolationMode = "nearest-neighbor"; + this.imgElement.style.width = "100%"; + this.imgElement.style.height = "100%"; + + this.style = this.element.style; + this.style.position = "absolute"; + } + if ( this.element.parentNode != container ) { + container.appendChild( this.element ); + } + if ( this.imgElement.parentNode != this.element ) { + this.element.appendChild( this.imgElement ); + } + + this.style.top = this.position.y + "px"; + this.style.left = this.position.x + "px"; + this.style.height = this.size.y + "px"; + this.style.width = this.size.x + "px"; + + $.setElementOpacity( this.element, this.opacity ); + }, + + /** + * Renders the tile in a canvas-based context. + * @function + * @param {Canvas} context + * @param {Function} drawingHandler - Method for firing the drawing event. + * drawingHandler({context, tile, rendered}) + * where rendered is the context with the pre-drawn image. + * @param {Number} [scale=1] - Apply a scale to position and size + * @param {OpenSeadragon.Point} [translate] - A translation vector + */ + drawCanvas: function( context, drawingHandler, scale, translate ) { + + var position = this.position.times($.pixelDensityRatio), + size = this.size.times($.pixelDensityRatio), + rendered; + + if (!this.context2D && !this.cacheImageRecord) { + $.console.warn( + '[Tile.drawCanvas] attempting to draw tile %s when it\'s not cached', + this.toString()); + return; + } + + rendered = this.context2D || this.cacheImageRecord.getRenderedContext(); + + if ( !this.loaded || !rendered ){ + $.console.warn( + "Attempting to draw tile %s when it's not yet loaded.", + this.toString() + ); + + return; + } + + context.save(); + + context.globalAlpha = this.opacity; + + if (typeof scale === 'number' && scale !== 1) { + // draw tile at a different scale + position = position.times(scale); + size = size.times(scale); + } + + if (translate instanceof $.Point) { + // shift tile position slightly + position = position.plus(translate); + } + + //if we are supposed to be rendering fully opaque rectangle, + //ie its done fading or fading is turned off, and if we are drawing + //an image with an alpha channel, then the only way + //to avoid seeing the tile underneath is to clear the rectangle + if (context.globalAlpha === 1 && this._hasTransparencyChannel()) { + //clearing only the inside of the rectangle occupied + //by the png prevents edge flikering + context.clearRect( + position.x + 1, + position.y + 1, + size.x - 2, + size.y - 2 + ); + } + + // This gives the application a chance to make image manipulation + // changes as we are rendering the image + drawingHandler({context: context, tile: this, rendered: rendered}); + + context.drawImage( + rendered.canvas, + 0, + 0, + rendered.canvas.width, + rendered.canvas.height, + position.x, + position.y, + size.x, + size.y + ); + + context.restore(); + }, + + /** + * Get the ratio between current and original size. + * @function + * @return {Float} + */ + getScaleForEdgeSmoothing: function() { + var context; + if (this.cacheImageRecord) { + context = this.cacheImageRecord.getRenderedContext(); + } else if (this.context2D) { + context = this.context2D; + } else { + $.console.warn( + '[Tile.drawCanvas] attempting to get tile scale %s when tile\'s not cached', + this.toString()); + return 1; + } + return context.canvas.width / (this.size.x * $.pixelDensityRatio); + }, + + /** + * Get a translation vector that when applied to the tile position produces integer coordinates. + * Needed to avoid swimming and twitching. + * @function + * @param {Number} [scale=1] - Scale to be applied to position. + * @return {OpenSeadragon.Point} + */ + getTranslationForEdgeSmoothing: function(scale, canvasSize, sketchCanvasSize) { + // The translation vector must have positive values, otherwise the image goes a bit off + // the sketch canvas to the top and left and we must use negative coordinates to repaint it + // to the main canvas. In that case, some browsers throw: + // INDEX_SIZE_ERR: DOM Exception 1: Index or size was negative, or greater than the allowed value. + var x = Math.max(1, Math.ceil((sketchCanvasSize.x - canvasSize.x) / 2)); + var y = Math.max(1, Math.ceil((sketchCanvasSize.y - canvasSize.y) / 2)); + return new $.Point(x, y).minus( + this.position + .times($.pixelDensityRatio) + .times(scale || 1) + .apply(function(x) { + return x % 1; + }) + ); + }, + + /** + * Removes tile from its container. + * @function + */ + unload: function() { + if ( this.imgElement && this.imgElement.parentNode ) { + this.imgElement.parentNode.removeChild( this.imgElement ); + } + if ( this.element && this.element.parentNode ) { + this.element.parentNode.removeChild( this.element ); + } + + this.element = null; + this.imgElement = null; + this.loaded = false; + this.loading = false; + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Overlay + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function($) { + + /** + * An enumeration of positions that an overlay may be assigned relative to + * the viewport. + * It is identical to OpenSeadragon.Placement but is kept for backward + * compatibility. + * @member OverlayPlacement + * @memberof OpenSeadragon + * @static + * @readonly + * @type {Object} + * @property {Number} CENTER + * @property {Number} TOP_LEFT + * @property {Number} TOP + * @property {Number} TOP_RIGHT + * @property {Number} RIGHT + * @property {Number} BOTTOM_RIGHT + * @property {Number} BOTTOM + * @property {Number} BOTTOM_LEFT + * @property {Number} LEFT + */ + $.OverlayPlacement = $.Placement; + + /** + * An enumeration of possible ways to handle overlays rotation + * @member OverlayRotationMode + * @memberOf OpenSeadragon + * @static + * @readonly + * @property {Number} NO_ROTATION The overlay ignore the viewport rotation. + * @property {Number} EXACT The overlay use CSS 3 transforms to rotate with + * the viewport. If the overlay contains text, it will get rotated as well. + * @property {Number} BOUNDING_BOX The overlay adjusts for rotation by + * taking the size of the bounding box of the rotated bounds. + * Only valid for overlays with Rect location and scalable in both directions. + */ + $.OverlayRotationMode = $.freezeObject({ + NO_ROTATION: 1, + EXACT: 2, + BOUNDING_BOX: 3 + }); + + /** + * @class Overlay + * @classdesc Provides a way to float an HTML element on top of the viewer element. + * + * @memberof OpenSeadragon + * @param {Object} options + * @param {Element} options.element + * @param {OpenSeadragon.Point|OpenSeadragon.Rect} options.location - The + * location of the overlay on the image. If a {@link OpenSeadragon.Point} + * is specified, the overlay will be located at this location with respect + * to the placement option. If a {@link OpenSeadragon.Rect} is specified, + * the overlay will be placed at this location with the corresponding width + * and height and placement TOP_LEFT. + * @param {OpenSeadragon.Placement} [options.placement=OpenSeadragon.Placement.TOP_LEFT] + * Defines what part of the overlay should be at the specified options.location + * @param {OpenSeadragon.Overlay.OnDrawCallback} [options.onDraw] + * @param {Boolean} [options.checkResize=true] Set to false to avoid to + * check the size of the overlay everytime it is drawn in the directions + * which are not scaled. It will improve performances but will cause a + * misalignment if the overlay size changes. + * @param {Number} [options.width] The width of the overlay in viewport + * coordinates. If specified, the width of the overlay will be adjusted when + * the zoom changes. + * @param {Number} [options.height] The height of the overlay in viewport + * coordinates. If specified, the height of the overlay will be adjusted when + * the zoom changes. + * @param {Boolean} [options.rotationMode=OpenSeadragon.OverlayRotationMode.EXACT] + * How to handle the rotation of the viewport. + */ + $.Overlay = function(element, location, placement) { + + /** + * onDraw callback signature used by {@link OpenSeadragon.Overlay}. + * + * @callback OnDrawCallback + * @memberof OpenSeadragon.Overlay + * @param {OpenSeadragon.Point} position + * @param {OpenSeadragon.Point} size + * @param {Element} element + */ + + var options; + if ($.isPlainObject(element)) { + options = element; + } else { + options = { + element: element, + location: location, + placement: placement + }; + } + + this.element = options.element; + this.style = options.element.style; + this._init(options); + }; + + /** @lends OpenSeadragon.Overlay.prototype */ + $.Overlay.prototype = { + + // private + _init: function(options) { + this.location = options.location; + this.placement = options.placement === undefined ? + $.Placement.TOP_LEFT : options.placement; + this.onDraw = options.onDraw; + this.checkResize = options.checkResize === undefined ? + true : options.checkResize; + + // When this.width is not null, the overlay get scaled horizontally + this.width = options.width === undefined ? null : options.width; + + // When this.height is not null, the overlay get scaled vertically + this.height = options.height === undefined ? null : options.height; + + this.rotationMode = options.rotationMode || $.OverlayRotationMode.EXACT; + + // Having a rect as location is a syntactic sugar + if (this.location instanceof $.Rect) { + this.width = this.location.width; + this.height = this.location.height; + this.location = this.location.getTopLeft(); + this.placement = $.Placement.TOP_LEFT; + } + + // Deprecated properties kept for backward compatibility. + this.scales = this.width !== null && this.height !== null; + this.bounds = new $.Rect( + this.location.x, this.location.y, this.width, this.height); + this.position = this.location; + }, + + /** + * Internal function to adjust the position of an overlay + * depending on it size and placement. + * @function + * @param {OpenSeadragon.Point} position + * @param {OpenSeadragon.Point} size + */ + adjust: function(position, size) { + var properties = $.Placement.properties[this.placement]; + if (!properties) { + return; + } + if (properties.isHorizontallyCentered) { + position.x -= size.x / 2; + } else if (properties.isRight) { + position.x -= size.x; + } + if (properties.isVerticallyCentered) { + position.y -= size.y / 2; + } else if (properties.isBottom) { + position.y -= size.y; + } + }, + + /** + * @function + */ + destroy: function() { + var element = this.element; + var style = this.style; + + if (element.parentNode) { + element.parentNode.removeChild(element); + //this should allow us to preserve overlays when required between + //pages + if (element.prevElementParent) { + style.display = 'none'; + //element.prevElementParent.insertBefore( + // element, + // element.prevNextSibling + //); + document.body.appendChild(element); + } + } + + // clear the onDraw callback + this.onDraw = null; + + style.top = ""; + style.left = ""; + style.position = ""; + + if (this.width !== null) { + style.width = ""; + } + if (this.height !== null) { + style.height = ""; + } + var transformOriginProp = $.getCssPropertyWithVendorPrefix( + 'transformOrigin'); + var transformProp = $.getCssPropertyWithVendorPrefix( + 'transform'); + if (transformOriginProp && transformProp) { + style[transformOriginProp] = ""; + style[transformProp] = ""; + } + }, + + /** + * @function + * @param {Element} container + */ + drawHTML: function(container, viewport) { + var element = this.element; + if (element.parentNode !== container) { + //save the source parent for later if we need it + element.prevElementParent = element.parentNode; + element.prevNextSibling = element.nextSibling; + container.appendChild(element); + + // this.size is used by overlays which don't get scaled in at + // least one direction when this.checkResize is set to false. + this.size = $.getElementSize(element); + } + + var positionAndSize = this._getOverlayPositionAndSize(viewport); + + var position = positionAndSize.position; + var size = this.size = positionAndSize.size; + var rotate = positionAndSize.rotate; + + // call the onDraw callback if it exists to allow one to overwrite + // the drawing/positioning/sizing of the overlay + if (this.onDraw) { + this.onDraw(position, size, this.element); + } else { + var style = this.style; + style.left = position.x + "px"; + style.top = position.y + "px"; + if (this.width !== null) { + style.width = size.x + "px"; + } + if (this.height !== null) { + style.height = size.y + "px"; + } + var transformOriginProp = $.getCssPropertyWithVendorPrefix( + 'transformOrigin'); + var transformProp = $.getCssPropertyWithVendorPrefix( + 'transform'); + if (transformOriginProp && transformProp) { + if (rotate) { + style[transformOriginProp] = this._getTransformOrigin(); + style[transformProp] = "rotate(" + rotate + "deg)"; + } else { + style[transformOriginProp] = ""; + style[transformProp] = ""; + } + } + style.position = "absolute"; + + if (style.display !== 'none') { + style.display = 'block'; + } + } + }, + + // private + _getOverlayPositionAndSize: function(viewport) { + var position = viewport.pixelFromPoint(this.location, true); + var size = this._getSizeInPixels(viewport); + this.adjust(position, size); + + var rotate = 0; + if (viewport.degrees && + this.rotationMode !== $.OverlayRotationMode.NO_ROTATION) { + // BOUNDING_BOX is only valid if both directions get scaled. + // Get replaced by EXACT otherwise. + if (this.rotationMode === $.OverlayRotationMode.BOUNDING_BOX && + this.width !== null && this.height !== null) { + var rect = new $.Rect(position.x, position.y, size.x, size.y); + var boundingBox = this._getBoundingBox(rect, viewport.degrees); + position = boundingBox.getTopLeft(); + size = boundingBox.getSize(); + } else { + rotate = viewport.degrees; + } + } + + return { + position: position, + size: size, + rotate: rotate + }; + }, + + // private + _getSizeInPixels: function(viewport) { + var width = this.size.x; + var height = this.size.y; + if (this.width !== null || this.height !== null) { + var scaledSize = viewport.deltaPixelsFromPointsNoRotate( + new $.Point(this.width || 0, this.height || 0), true); + if (this.width !== null) { + width = scaledSize.x; + } + if (this.height !== null) { + height = scaledSize.y; + } + } + if (this.checkResize && + (this.width === null || this.height === null)) { + var eltSize = this.size = $.getElementSize(this.element); + if (this.width === null) { + width = eltSize.x; + } + if (this.height === null) { + height = eltSize.y; + } + } + return new $.Point(width, height); + }, + + // private + _getBoundingBox: function(rect, degrees) { + var refPoint = this._getPlacementPoint(rect); + return rect.rotate(degrees, refPoint).getBoundingBox(); + }, + + // private + _getPlacementPoint: function(rect) { + var result = new $.Point(rect.x, rect.y); + var properties = $.Placement.properties[this.placement]; + if (properties) { + if (properties.isHorizontallyCentered) { + result.x += rect.width / 2; + } else if (properties.isRight) { + result.x += rect.width; + } + if (properties.isVerticallyCentered) { + result.y += rect.height / 2; + } else if (properties.isBottom) { + result.y += rect.height; + } + } + return result; + }, + + // private + _getTransformOrigin: function() { + var result = ""; + var properties = $.Placement.properties[this.placement]; + if (!properties) { + return result; + } + if (properties.isLeft) { + result = "left"; + } else if (properties.isRight) { + result = "right"; + } + if (properties.isTop) { + result += " top"; + } else if (properties.isBottom) { + result += " bottom"; + } + return result; + }, + + /** + * Changes the overlay settings. + * @function + * @param {OpenSeadragon.Point|OpenSeadragon.Rect|Object} location + * If an object is specified, the options are the same than the constructor + * except for the element which can not be changed. + * @param {OpenSeadragon.Placement} position + */ + update: function(location, placement) { + var options = $.isPlainObject(location) ? location : { + location: location, + placement: placement + }; + this._init({ + location: options.location || this.location, + placement: options.placement !== undefined ? + options.placement : this.placement, + onDraw: options.onDraw || this.onDraw, + checkResize: options.checkResize || this.checkResize, + width: options.width !== undefined ? options.width : this.width, + height: options.height !== undefined ? options.height : this.height, + rotationMode: options.rotationMode || this.rotationMode + }); + }, + + /** + * Returns the current bounds of the overlay in viewport coordinates + * @function + * @param {OpenSeadragon.Viewport} viewport the viewport + * @returns {OpenSeadragon.Rect} overlay bounds + */ + getBounds: function(viewport) { + $.console.assert(viewport, + 'A viewport must now be passed to Overlay.getBounds.'); + var width = this.width; + var height = this.height; + if (width === null || height === null) { + var size = viewport.deltaPointsFromPixelsNoRotate(this.size, true); + if (width === null) { + width = size.x; + } + if (height === null) { + height = size.y; + } + } + var location = this.location.clone(); + this.adjust(location, new $.Point(width, height)); + return this._adjustBoundsForRotation( + viewport, new $.Rect(location.x, location.y, width, height)); + }, + + // private + _adjustBoundsForRotation: function(viewport, bounds) { + if (!viewport || + viewport.degrees === 0 || + this.rotationMode === $.OverlayRotationMode.EXACT) { + return bounds; + } + if (this.rotationMode === $.OverlayRotationMode.BOUNDING_BOX) { + // If overlay not fully scalable, BOUNDING_BOX falls back to EXACT + if (this.width === null || this.height === null) { + return bounds; + } + // It is easier to just compute the position and size and + // convert to viewport coordinates. + var positionAndSize = this._getOverlayPositionAndSize(viewport); + return viewport.viewerElementToViewportRectangle(new $.Rect( + positionAndSize.position.x, + positionAndSize.position.y, + positionAndSize.size.x, + positionAndSize.size.y)); + } + + // NO_ROTATION case + return bounds.rotate(-viewport.degrees, + this._getPlacementPoint(bounds)); + } + }; + +}(OpenSeadragon)); + +/* + * OpenSeadragon - Drawer + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class Drawer + * @memberof OpenSeadragon + * @classdesc Handles rendering of tiles for an {@link OpenSeadragon.Viewer}. + * @param {Object} options - Options for this Drawer. + * @param {OpenSeadragon.Viewer} options.viewer - The Viewer that owns this Drawer. + * @param {OpenSeadragon.Viewport} options.viewport - Reference to Viewer viewport. + * @param {Element} options.element - Parent element. + * @param {Number} [options.debugGridColor] - See debugGridColor in {@link OpenSeadragon.Options} for details. + */ +$.Drawer = function( options ) { + + $.console.assert( options.viewer, "[Drawer] options.viewer is required" ); + + //backward compatibility for positional args while prefering more + //idiomatic javascript options object as the only argument + var args = arguments; + + if( !$.isPlainObject( options ) ){ + options = { + source: args[ 0 ], // Reference to Viewer tile source. + viewport: args[ 1 ], // Reference to Viewer viewport. + element: args[ 2 ] // Parent element. + }; + } + + $.console.assert( options.viewport, "[Drawer] options.viewport is required" ); + $.console.assert( options.element, "[Drawer] options.element is required" ); + + if ( options.source ) { + $.console.error( "[Drawer] options.source is no longer accepted; use TiledImage instead" ); + } + + this.viewer = options.viewer; + this.viewport = options.viewport; + this.debugGridColor = options.debugGridColor || $.DEFAULT_SETTINGS.debugGridColor; + if (options.opacity) { + $.console.error( "[Drawer] options.opacity is no longer accepted; set the opacity on the TiledImage instead" ); + } + + this.useCanvas = $.supportsCanvas && ( this.viewer ? this.viewer.useCanvas : true ); + /** + * The parent element of this Drawer instance, passed in when the Drawer was created. + * The parent of {@link OpenSeadragon.Drawer#canvas}. + * @member {Element} container + * @memberof OpenSeadragon.Drawer# + */ + this.container = $.getElement( options.element ); + /** + * A <canvas> element if the browser supports them, otherwise a <div> element. + * Child element of {@link OpenSeadragon.Drawer#container}. + * @member {Element} canvas + * @memberof OpenSeadragon.Drawer# + */ + this.canvas = $.makeNeutralElement( this.useCanvas ? "canvas" : "div" ); + /** + * 2d drawing context for {@link OpenSeadragon.Drawer#canvas} if it's a <canvas> element, otherwise null. + * @member {Object} context + * @memberof OpenSeadragon.Drawer# + */ + this.context = this.useCanvas ? this.canvas.getContext( "2d" ) : null; + + /** + * Sketch canvas used to temporarily draw tiles which cannot be drawn directly + * to the main canvas due to opacity. Lazily initialized. + */ + this.sketchCanvas = null; + this.sketchContext = null; + + /** + * @member {Element} element + * @memberof OpenSeadragon.Drawer# + * @deprecated Alias for {@link OpenSeadragon.Drawer#container}. + */ + this.element = this.container; + + // We force our container to ltr because our drawing math doesn't work in rtl. + // This issue only affects our canvas renderer, but we do it always for consistency. + // Note that this means overlays you want to be rtl need to be explicitly set to rtl. + this.container.dir = 'ltr'; + + // check canvas available width and height, set canvas width and height such that the canvas backing store is set to the proper pixel density + if (this.useCanvas) { + var viewportSize = this._calculateCanvasSize(); + this.canvas.width = viewportSize.x; + this.canvas.height = viewportSize.y; + } + + this.canvas.style.width = "100%"; + this.canvas.style.height = "100%"; + this.canvas.style.position = "absolute"; + $.setElementOpacity( this.canvas, this.opacity, true ); + + // explicit left-align + this.container.style.textAlign = "left"; + this.container.appendChild( this.canvas ); +}; + +/** @lends OpenSeadragon.Drawer.prototype */ +$.Drawer.prototype = { + // deprecated + addOverlay: function( element, location, placement, onDraw ) { + $.console.error("drawer.addOverlay is deprecated. Use viewer.addOverlay instead."); + this.viewer.addOverlay( element, location, placement, onDraw ); + return this; + }, + + // deprecated + updateOverlay: function( element, location, placement ) { + $.console.error("drawer.updateOverlay is deprecated. Use viewer.updateOverlay instead."); + this.viewer.updateOverlay( element, location, placement ); + return this; + }, + + // deprecated + removeOverlay: function( element ) { + $.console.error("drawer.removeOverlay is deprecated. Use viewer.removeOverlay instead."); + this.viewer.removeOverlay( element ); + return this; + }, + + // deprecated + clearOverlays: function() { + $.console.error("drawer.clearOverlays is deprecated. Use viewer.clearOverlays instead."); + this.viewer.clearOverlays(); + return this; + }, + + /** + * Set the opacity of the drawer. + * @param {Number} opacity + * @return {OpenSeadragon.Drawer} Chainable. + */ + setOpacity: function( opacity ) { + $.console.error("drawer.setOpacity is deprecated. Use tiledImage.setOpacity instead."); + var world = this.viewer.world; + for (var i = 0; i < world.getItemCount(); i++) { + world.getItemAt( i ).setOpacity( opacity ); + } + return this; + }, + + /** + * Get the opacity of the drawer. + * @returns {Number} + */ + getOpacity: function() { + $.console.error("drawer.getOpacity is deprecated. Use tiledImage.getOpacity instead."); + var world = this.viewer.world; + var maxOpacity = 0; + for (var i = 0; i < world.getItemCount(); i++) { + var opacity = world.getItemAt( i ).getOpacity(); + if ( opacity > maxOpacity ) { + maxOpacity = opacity; + } + } + return maxOpacity; + }, + + // deprecated + needsUpdate: function() { + $.console.error( "[Drawer.needsUpdate] this function is deprecated. Use World.needsDraw instead." ); + return this.viewer.world.needsDraw(); + }, + + // deprecated + numTilesLoaded: function() { + $.console.error( "[Drawer.numTilesLoaded] this function is deprecated. Use TileCache.numTilesLoaded instead." ); + return this.viewer.tileCache.numTilesLoaded(); + }, + + // deprecated + reset: function() { + $.console.error( "[Drawer.reset] this function is deprecated. Use World.resetItems instead." ); + this.viewer.world.resetItems(); + return this; + }, + + // deprecated + update: function() { + $.console.error( "[Drawer.update] this function is deprecated. Use Drawer.clear and World.draw instead." ); + this.clear(); + this.viewer.world.draw(); + return this; + }, + + /** + * @return {Boolean} True if rotation is supported. + */ + canRotate: function() { + return this.useCanvas; + }, + + /** + * Destroy the drawer (unload current loaded tiles) + */ + destroy: function() { + //force unloading of current canvas (1x1 will be gc later, trick not necessarily needed) + this.canvas.width = 1; + this.canvas.height = 1; + this.sketchCanvas = null; + this.sketchContext = null; + }, + + /** + * Clears the Drawer so it's ready to draw another frame. + */ + clear: function() { + this.canvas.innerHTML = ""; + if ( this.useCanvas ) { + var viewportSize = this._calculateCanvasSize(); + if( this.canvas.width != viewportSize.x || + this.canvas.height != viewportSize.y ) { + this.canvas.width = viewportSize.x; + this.canvas.height = viewportSize.y; + if ( this.sketchCanvas !== null ) { + var sketchCanvasSize = this._calculateSketchCanvasSize(); + this.sketchCanvas.width = sketchCanvasSize.x; + this.sketchCanvas.height = sketchCanvasSize.y; + } + } + this._clear(); + } + }, + + _clear: function (useSketch, bounds) { + if (!this.useCanvas) { + return; + } + var context = this._getContext(useSketch); + if (bounds) { + context.clearRect(bounds.x, bounds.y, bounds.width, bounds.height); + } else { + var canvas = context.canvas; + context.clearRect(0, 0, canvas.width, canvas.height); + } + }, + + /** + * Scale from OpenSeadragon viewer rectangle to drawer rectangle + * (ignoring rotation) + * @param {OpenSeadragon.Rect} rectangle - The rectangle in viewport coordinate system. + * @return {OpenSeadragon.Rect} Rectangle in drawer coordinate system. + */ + viewportToDrawerRectangle: function(rectangle) { + var topLeft = this.viewport.pixelFromPointNoRotate(rectangle.getTopLeft(), true); + var size = this.viewport.deltaPixelsFromPointsNoRotate(rectangle.getSize(), true); + + return new $.Rect( + topLeft.x * $.pixelDensityRatio, + topLeft.y * $.pixelDensityRatio, + size.x * $.pixelDensityRatio, + size.y * $.pixelDensityRatio + ); + }, + + /** + * Draws the given tile. + * @param {OpenSeadragon.Tile} tile - The tile to draw. + * @param {Function} drawingHandler - Method for firing the drawing event if using canvas. + * drawingHandler({context, tile, rendered}) + * @param {Boolean} useSketch - Whether to use the sketch canvas or not. + * where rendered is the context with the pre-drawn image. + * @param {Float} [scale=1] - Apply a scale to tile position and size. Defaults to 1. + * @param {OpenSeadragon.Point} [translate] A translation vector to offset tile position + */ + drawTile: function(tile, drawingHandler, useSketch, scale, translate) { + $.console.assert(tile, '[Drawer.drawTile] tile is required'); + $.console.assert(drawingHandler, '[Drawer.drawTile] drawingHandler is required'); + + if (this.useCanvas) { + var context = this._getContext(useSketch); + scale = scale || 1; + tile.drawCanvas(context, drawingHandler, scale, translate); + } else { + tile.drawHTML( this.canvas ); + } + }, + + _getContext: function( useSketch ) { + var context = this.context; + if ( useSketch ) { + if (this.sketchCanvas === null) { + this.sketchCanvas = document.createElement( "canvas" ); + var sketchCanvasSize = this._calculateSketchCanvasSize(); + this.sketchCanvas.width = sketchCanvasSize.x; + this.sketchCanvas.height = sketchCanvasSize.y; + this.sketchContext = this.sketchCanvas.getContext( "2d" ); + + // If the viewport is not currently rotated, the sketchCanvas + // will have the same size as the main canvas. However, if + // the viewport get rotated later on, we will need to resize it. + if (this.viewport.getRotation() === 0) { + var self = this; + this.viewer.addHandler('rotate', function resizeSketchCanvas() { + self.viewer.removeHandler('rotate', resizeSketchCanvas); + var sketchCanvasSize = self._calculateSketchCanvasSize(); + self.sketchCanvas.width = sketchCanvasSize.x; + self.sketchCanvas.height = sketchCanvasSize.y; + }); + } + } + context = this.sketchContext; + } + return context; + }, + + // private + saveContext: function( useSketch ) { + if (!this.useCanvas) { + return; + } + + this._getContext( useSketch ).save(); + }, + + // private + restoreContext: function( useSketch ) { + if (!this.useCanvas) { + return; + } + + this._getContext( useSketch ).restore(); + }, + + // private + setClip: function(rect, useSketch) { + if (!this.useCanvas) { + return; + } + + var context = this._getContext( useSketch ); + context.beginPath(); + context.rect(rect.x, rect.y, rect.width, rect.height); + context.clip(); + }, + + // private + drawRectangle: function(rect, fillStyle, useSketch) { + if (!this.useCanvas) { + return; + } + + var context = this._getContext( useSketch ); + context.save(); + context.fillStyle = fillStyle; + context.fillRect(rect.x, rect.y, rect.width, rect.height); + context.restore(); + }, + + /** + * Blends the sketch canvas in the main canvas. + * @param {Object} options The options + * @param {Float} options.opacity The opacity of the blending. + * @param {Float} [options.scale=1] The scale at which tiles were drawn on + * the sketch. Default is 1. + * Use scale to draw at a lower scale and then enlarge onto the main canvas. + * @param {OpenSeadragon.Point} [options.translate] A translation vector + * that was used to draw the tiles + * @param {String} [options.compositeOperation] - How the image is + * composited onto other images; see compositeOperation in + * {@link OpenSeadragon.Options} for possible values. + * @param {OpenSeadragon.Rect} [options.bounds] The part of the sketch + * canvas to blend in the main canvas. If specified, options.scale and + * options.translate get ignored. + */ + blendSketch: function(opacity, scale, translate, compositeOperation) { + var options = opacity; + if (!$.isPlainObject(options)) { + options = { + opacity: opacity, + scale: scale, + translate: translate, + compositeOperation: compositeOperation + }; + } + if (!this.useCanvas || !this.sketchCanvas) { + return; + } + opacity = options.opacity; + compositeOperation = options.compositeOperation; + var bounds = options.bounds; + + this.context.save(); + this.context.globalAlpha = opacity; + if (compositeOperation) { + this.context.globalCompositeOperation = compositeOperation; + } + if (bounds) { + this.context.drawImage( + this.sketchCanvas, + bounds.x, + bounds.y, + bounds.width, + bounds.height, + bounds.x, + bounds.y, + bounds.width, + bounds.height + ); + } else { + scale = options.scale || 1; + translate = options.translate; + var position = translate instanceof $.Point ? + translate : new $.Point(0, 0); + + var widthExt = 0; + var heightExt = 0; + if (translate) { + var widthDiff = this.sketchCanvas.width - this.canvas.width; + var heightDiff = this.sketchCanvas.height - this.canvas.height; + widthExt = Math.round(widthDiff / 2); + heightExt = Math.round(heightDiff / 2); + } + this.context.drawImage( + this.sketchCanvas, + position.x - widthExt * scale, + position.y - heightExt * scale, + (this.canvas.width + 2 * widthExt) * scale, + (this.canvas.height + 2 * heightExt) * scale, + -widthExt, + -heightExt, + this.canvas.width + 2 * widthExt, + this.canvas.height + 2 * heightExt + ); + } + this.context.restore(); + }, + + // private + drawDebugInfo: function( tile, count, i ){ + if ( !this.useCanvas ) { + return; + } + + var context = this.context; + context.save(); + context.lineWidth = 2 * $.pixelDensityRatio; + context.font = 'small-caps bold ' + (13 * $.pixelDensityRatio) + 'px arial'; + context.strokeStyle = this.debugGridColor; + context.fillStyle = this.debugGridColor; + + if ( this.viewport.degrees !== 0 ) { + this._offsetForRotation(this.viewport.degrees); + } + + context.strokeRect( + tile.position.x * $.pixelDensityRatio, + tile.position.y * $.pixelDensityRatio, + tile.size.x * $.pixelDensityRatio, + tile.size.y * $.pixelDensityRatio + ); + + var tileCenterX = (tile.position.x + (tile.size.x / 2)) * $.pixelDensityRatio; + var tileCenterY = (tile.position.y + (tile.size.y / 2)) * $.pixelDensityRatio; + + // Rotate the text the right way around. + context.translate( tileCenterX, tileCenterY ); + context.rotate( Math.PI / 180 * -this.viewport.degrees ); + context.translate( -tileCenterX, -tileCenterY ); + + if( tile.x === 0 && tile.y === 0 ){ + context.fillText( + "Zoom: " + this.viewport.getZoom(), + tile.position.x * $.pixelDensityRatio, + (tile.position.y - 30) * $.pixelDensityRatio + ); + context.fillText( + "Pan: " + this.viewport.getBounds().toString(), + tile.position.x * $.pixelDensityRatio, + (tile.position.y - 20) * $.pixelDensityRatio + ); + } + context.fillText( + "Level: " + tile.level, + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 20) * $.pixelDensityRatio + ); + context.fillText( + "Column: " + tile.x, + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 30) * $.pixelDensityRatio + ); + context.fillText( + "Row: " + tile.y, + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 40) * $.pixelDensityRatio + ); + context.fillText( + "Order: " + i + " of " + count, + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 50) * $.pixelDensityRatio + ); + context.fillText( + "Size: " + tile.size.toString(), + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 60) * $.pixelDensityRatio + ); + context.fillText( + "Position: " + tile.position.toString(), + (tile.position.x + 10) * $.pixelDensityRatio, + (tile.position.y + 70) * $.pixelDensityRatio + ); + + if ( this.viewport.degrees !== 0 ) { + this._restoreRotationChanges(); + } + context.restore(); + }, + + // private + debugRect: function(rect) { + if ( this.useCanvas ) { + var context = this.context; + context.save(); + context.lineWidth = 2 * $.pixelDensityRatio; + context.strokeStyle = this.debugGridColor; + context.fillStyle = this.debugGridColor; + + context.strokeRect( + rect.x * $.pixelDensityRatio, + rect.y * $.pixelDensityRatio, + rect.width * $.pixelDensityRatio, + rect.height * $.pixelDensityRatio + ); + + context.restore(); + } + }, + + /** + * Get the canvas size + * @param {Boolean} sketch If set to true return the size of the sketch canvas + * @returns {OpenSeadragon.Point} The size of the canvas + */ + getCanvasSize: function(sketch) { + var canvas = this._getContext(sketch).canvas; + return new $.Point(canvas.width, canvas.height); + }, + + // private + _offsetForRotation: function(degrees, useSketch) { + var cx = this.canvas.width / 2; + var cy = this.canvas.height / 2; + + var context = this._getContext(useSketch); + context.save(); + + context.translate(cx, cy); + context.rotate(Math.PI / 180 * degrees); + context.translate(-cx, -cy); + }, + + // private + _restoreRotationChanges: function(useSketch) { + var context = this._getContext(useSketch); + context.restore(); + }, + + // private + _calculateCanvasSize: function() { + var pixelDensityRatio = $.pixelDensityRatio; + var viewportSize = this.viewport.getContainerSize(); + return { + x: viewportSize.x * pixelDensityRatio, + y: viewportSize.y * pixelDensityRatio + }; + }, + + // private + _calculateSketchCanvasSize: function() { + var canvasSize = this._calculateCanvasSize(); + if (this.viewport.getRotation() === 0) { + return canvasSize; + } + // If the viewport is rotated, we need a larger sketch canvas in order + // to support edge smoothing. + var sketchCanvasSize = Math.ceil(Math.sqrt( + canvasSize.x * canvasSize.x + + canvasSize.y * canvasSize.y)); + return { + x: sketchCanvasSize, + y: sketchCanvasSize + }; + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - Viewport + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + + +/** + * @class Viewport + * @memberof OpenSeadragon + * @classdesc Handles coordinate-related functionality (zoom, pan, rotation, etc.) + * for an {@link OpenSeadragon.Viewer}. + * @param {Object} options - Options for this Viewport. + * @param {Object} [options.margins] - See viewportMargins in {@link OpenSeadragon.Options}. + * @param {Number} [options.springStiffness] - See springStiffness in {@link OpenSeadragon.Options}. + * @param {Number} [options.animationTime] - See animationTime in {@link OpenSeadragon.Options}. + * @param {Number} [options.minZoomImageRatio] - See minZoomImageRatio in {@link OpenSeadragon.Options}. + * @param {Number} [options.maxZoomPixelRatio] - See maxZoomPixelRatio in {@link OpenSeadragon.Options}. + * @param {Number} [options.visibilityRatio] - See visibilityRatio in {@link OpenSeadragon.Options}. + * @param {Boolean} [options.wrapHorizontal] - See wrapHorizontal in {@link OpenSeadragon.Options}. + * @param {Boolean} [options.wrapVertical] - See wrapVertical in {@link OpenSeadragon.Options}. + * @param {Number} [options.defaultZoomLevel] - See defaultZoomLevel in {@link OpenSeadragon.Options}. + * @param {Number} [options.minZoomLevel] - See minZoomLevel in {@link OpenSeadragon.Options}. + * @param {Number} [options.maxZoomLevel] - See maxZoomLevel in {@link OpenSeadragon.Options}. + * @param {Number} [options.degrees] - See degrees in {@link OpenSeadragon.Options}. + * @param {Boolean} [options.homeFillsViewer] - See homeFillsViewer in {@link OpenSeadragon.Options}. + */ +$.Viewport = function( options ) { + + //backward compatibility for positional args while prefering more + //idiomatic javascript options object as the only argument + var args = arguments; + if( args.length && args[ 0 ] instanceof $.Point ){ + options = { + containerSize: args[ 0 ], + contentSize: args[ 1 ], + config: args[ 2 ] + }; + } + + //options.config and the general config argument are deprecated + //in favor of the more direct specification of optional settings + //being passed directly on the options object + if ( options.config ){ + $.extend( true, options, options.config ); + delete options.config; + } + + this._margins = $.extend({ + left: 0, + top: 0, + right: 0, + bottom: 0 + }, options.margins || {}); + + delete options.margins; + + $.extend( true, this, { + + //required settings + containerSize: null, + contentSize: null, + + //internal state properties + zoomPoint: null, + viewer: null, + + //configurable options + springStiffness: $.DEFAULT_SETTINGS.springStiffness, + animationTime: $.DEFAULT_SETTINGS.animationTime, + minZoomImageRatio: $.DEFAULT_SETTINGS.minZoomImageRatio, + maxZoomPixelRatio: $.DEFAULT_SETTINGS.maxZoomPixelRatio, + visibilityRatio: $.DEFAULT_SETTINGS.visibilityRatio, + wrapHorizontal: $.DEFAULT_SETTINGS.wrapHorizontal, + wrapVertical: $.DEFAULT_SETTINGS.wrapVertical, + defaultZoomLevel: $.DEFAULT_SETTINGS.defaultZoomLevel, + minZoomLevel: $.DEFAULT_SETTINGS.minZoomLevel, + maxZoomLevel: $.DEFAULT_SETTINGS.maxZoomLevel, + degrees: $.DEFAULT_SETTINGS.degrees, + homeFillsViewer: $.DEFAULT_SETTINGS.homeFillsViewer + + }, options ); + + this._updateContainerInnerSize(); + + this.centerSpringX = new $.Spring({ + initial: 0, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + this.centerSpringY = new $.Spring({ + initial: 0, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + this.zoomSpring = new $.Spring({ + exponential: true, + initial: 1, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + + this._oldCenterX = this.centerSpringX.current.value; + this._oldCenterY = this.centerSpringY.current.value; + this._oldZoom = this.zoomSpring.current.value; + + this._setContentBounds(new $.Rect(0, 0, 1, 1), 1); + + this.goHome(true); + this.update(); +}; + +/** @lends OpenSeadragon.Viewport.prototype */ +$.Viewport.prototype = { + /** + * Updates the viewport's home bounds and constraints for the given content size. + * @function + * @param {OpenSeadragon.Point} contentSize - size of the content in content units + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:reset-size + */ + resetContentSize: function(contentSize) { + $.console.assert(contentSize, "[Viewport.resetContentSize] contentSize is required"); + $.console.assert(contentSize instanceof $.Point, "[Viewport.resetContentSize] contentSize must be an OpenSeadragon.Point"); + $.console.assert(contentSize.x > 0, "[Viewport.resetContentSize] contentSize.x must be greater than 0"); + $.console.assert(contentSize.y > 0, "[Viewport.resetContentSize] contentSize.y must be greater than 0"); + + this._setContentBounds(new $.Rect(0, 0, 1, contentSize.y / contentSize.x), contentSize.x); + return this; + }, + + // deprecated + setHomeBounds: function(bounds, contentFactor) { + $.console.error("[Viewport.setHomeBounds] this function is deprecated; The content bounds should not be set manually."); + this._setContentBounds(bounds, contentFactor); + }, + + // Set the viewport's content bounds + // @param {OpenSeadragon.Rect} bounds - the new bounds in viewport coordinates + // without rotation + // @param {Number} contentFactor - how many content units per viewport unit + // @fires OpenSeadragon.Viewer.event:reset-size + // @private + _setContentBounds: function(bounds, contentFactor) { + $.console.assert(bounds, "[Viewport._setContentBounds] bounds is required"); + $.console.assert(bounds instanceof $.Rect, "[Viewport._setContentBounds] bounds must be an OpenSeadragon.Rect"); + $.console.assert(bounds.width > 0, "[Viewport._setContentBounds] bounds.width must be greater than 0"); + $.console.assert(bounds.height > 0, "[Viewport._setContentBounds] bounds.height must be greater than 0"); + + this._contentBoundsNoRotate = bounds.clone(); + this._contentSizeNoRotate = this._contentBoundsNoRotate.getSize().times( + contentFactor); + + this._contentBounds = bounds.rotate(this.degrees).getBoundingBox(); + this._contentSize = this._contentBounds.getSize().times(contentFactor); + this._contentAspectRatio = this._contentSize.x / this._contentSize.y; + + if (this.viewer) { + /** + * Raised when the viewer's content size or home bounds are reset + * (see {@link OpenSeadragon.Viewport#resetContentSize}). + * + * @event reset-size + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.Point} contentSize + * @property {OpenSeadragon.Rect} contentBounds - Content bounds. + * @property {OpenSeadragon.Rect} homeBounds - Content bounds. + * Deprecated use contentBounds instead. + * @property {Number} contentFactor + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('reset-size', { + contentSize: this._contentSizeNoRotate.clone(), + contentFactor: contentFactor, + homeBounds: this._contentBoundsNoRotate.clone(), + contentBounds: this._contentBounds.clone() + }); + } + }, + + /** + * Returns the home zoom in "viewport zoom" value. + * @function + * @returns {Number} The home zoom in "viewport zoom". + */ + getHomeZoom: function() { + if (this.defaultZoomLevel) { + return this.defaultZoomLevel; + } + + var aspectFactor = this._contentAspectRatio / this.getAspectRatio(); + var output; + if (this.homeFillsViewer) { // fill the viewer and clip the image + output = aspectFactor >= 1 ? aspectFactor : 1; + } else { + output = aspectFactor >= 1 ? 1 : aspectFactor; + } + + return output / this._contentBounds.width; + }, + + /** + * Returns the home bounds in viewport coordinates. + * @function + * @returns {OpenSeadragon.Rect} The home bounds in vewport coordinates. + */ + getHomeBounds: function() { + return this.getHomeBoundsNoRotate().rotate(-this.getRotation()); + }, + + /** + * Returns the home bounds in viewport coordinates. + * This method ignores the viewport rotation. Use + * {@link OpenSeadragon.Viewport#getHomeBounds} to take it into account. + * @function + * @returns {OpenSeadragon.Rect} The home bounds in vewport coordinates. + */ + getHomeBoundsNoRotate: function() { + var center = this._contentBounds.getCenter(); + var width = 1.0 / this.getHomeZoom(); + var height = width / this.getAspectRatio(); + + return new $.Rect( + center.x - (width / 2.0), + center.y - (height / 2.0), + width, + height + ); + }, + + /** + * @function + * @param {Boolean} immediately + * @fires OpenSeadragon.Viewer.event:home + */ + goHome: function(immediately) { + if (this.viewer) { + /** + * Raised when the "home" operation occurs (see {@link OpenSeadragon.Viewport#goHome}). + * + * @event home + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {Boolean} immediately + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('home', { + immediately: immediately + }); + } + return this.fitBounds(this.getHomeBounds(), immediately); + }, + + /** + * @function + */ + getMinZoom: function() { + var homeZoom = this.getHomeZoom(), + zoom = this.minZoomLevel ? + this.minZoomLevel : + this.minZoomImageRatio * homeZoom; + + return zoom; + }, + + /** + * @function + */ + getMaxZoom: function() { + var zoom = this.maxZoomLevel; + if (!zoom) { + zoom = this._contentSize.x * this.maxZoomPixelRatio / this._containerInnerSize.x; + zoom /= this._contentBounds.width; + } + + return Math.max( zoom, this.getHomeZoom() ); + }, + + /** + * @function + */ + getAspectRatio: function() { + return this._containerInnerSize.x / this._containerInnerSize.y; + }, + + /** + * @function + * @returns {OpenSeadragon.Point} The size of the container, in screen coordinates. + */ + getContainerSize: function() { + return new $.Point( + this.containerSize.x, + this.containerSize.y + ); + }, + + /** + * The margins push the "home" region in from the sides by the specified amounts. + * @function + * @returns {Object} Properties (Numbers, in screen coordinates): left, top, right, bottom. + */ + getMargins: function() { + return $.extend({}, this._margins); // Make a copy so we are not returning our original + }, + + /** + * The margins push the "home" region in from the sides by the specified amounts. + * @function + * @param {Object} margins - Properties (Numbers, in screen coordinates): left, top, right, bottom. + */ + setMargins: function(margins) { + $.console.assert($.type(margins) === 'object', '[Viewport.setMargins] margins must be an object'); + + this._margins = $.extend({ + left: 0, + top: 0, + right: 0, + bottom: 0 + }, margins); + + this._updateContainerInnerSize(); + if (this.viewer) { + this.viewer.forceRedraw(); + } + }, + + /** + * Returns the bounds of the visible area in viewport coordinates. + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + * @returns {OpenSeadragon.Rect} The location you are zoomed/panned to, in viewport coordinates. + */ + getBounds: function(current) { + return this.getBoundsNoRotate(current).rotate(-this.getRotation()); + }, + + /** + * Returns the bounds of the visible area in viewport coordinates. + * This method ignores the viewport rotation. Use + * {@link OpenSeadragon.Viewport#getBounds} to take it into account. + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + * @returns {OpenSeadragon.Rect} The location you are zoomed/panned to, in viewport coordinates. + */ + getBoundsNoRotate: function(current) { + var center = this.getCenter(current); + var width = 1.0 / this.getZoom(current); + var height = width / this.getAspectRatio(); + + return new $.Rect( + center.x - (width / 2.0), + center.y - (height / 2.0), + width, + height + ); + }, + + /** + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + * @returns {OpenSeadragon.Rect} The location you are zoomed/panned to, + * including the space taken by margins, in viewport coordinates. + */ + getBoundsWithMargins: function(current) { + return this.getBoundsNoRotateWithMargins(current).rotate( + -this.getRotation(), this.getCenter(current)); + }, + + /** + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + * @returns {OpenSeadragon.Rect} The location you are zoomed/panned to, + * including the space taken by margins, in viewport coordinates. + */ + getBoundsNoRotateWithMargins: function(current) { + var bounds = this.getBoundsNoRotate(current); + var factor = this._containerInnerSize.x * this.getZoom(current); + bounds.x -= this._margins.left / factor; + bounds.y -= this._margins.top / factor; + bounds.width += (this._margins.left + this._margins.right) / factor; + bounds.height += (this._margins.top + this._margins.bottom) / factor; + return bounds; + }, + + /** + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + */ + getCenter: function( current ) { + var centerCurrent = new $.Point( + this.centerSpringX.current.value, + this.centerSpringY.current.value + ), + centerTarget = new $.Point( + this.centerSpringX.target.value, + this.centerSpringY.target.value + ), + oldZoomPixel, + zoom, + width, + height, + bounds, + newZoomPixel, + deltaZoomPixels, + deltaZoomPoints; + + if ( current ) { + return centerCurrent; + } else if ( !this.zoomPoint ) { + return centerTarget; + } + + oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true); + + zoom = this.getZoom(); + width = 1.0 / zoom; + height = width / this.getAspectRatio(); + bounds = new $.Rect( + centerCurrent.x - width / 2.0, + centerCurrent.y - height / 2.0, + width, + height + ); + + newZoomPixel = this._pixelFromPoint(this.zoomPoint, bounds); + deltaZoomPixels = newZoomPixel.minus( oldZoomPixel ); + deltaZoomPoints = deltaZoomPixels.divide( this._containerInnerSize.x * zoom ); + + return centerTarget.plus( deltaZoomPoints ); + }, + + /** + * @function + * @param {Boolean} current - Pass true for the current location; defaults to false (target location). + */ + getZoom: function( current ) { + if ( current ) { + return this.zoomSpring.current.value; + } else { + return this.zoomSpring.target.value; + } + }, + + // private + _applyZoomConstraints: function(zoom) { + return Math.max( + Math.min(zoom, this.getMaxZoom()), + this.getMinZoom()); + }, + + /** + * @function + * @private + * @param {OpenSeadragon.Rect} bounds + * @param {Boolean} immediately + * @return {OpenSeadragon.Rect} constrained bounds. + */ + _applyBoundaryConstraints: function(bounds, immediately) { + var newBounds = new $.Rect( + bounds.x, + bounds.y, + bounds.width, + bounds.height); + + if (this.wrapHorizontal) { + //do nothing + } else { + var horizontalThreshold = this.visibilityRatio * newBounds.width; + var boundsRight = newBounds.x + newBounds.width; + var contentRight = this._contentBoundsNoRotate.x + this._contentBoundsNoRotate.width; + var leftDx = this._contentBoundsNoRotate.x - boundsRight + horizontalThreshold; + var rightDx = contentRight - newBounds.x - horizontalThreshold; + + if (horizontalThreshold > this._contentBoundsNoRotate.width) { + newBounds.x += (leftDx + rightDx) / 2; + } else if (rightDx < 0) { + newBounds.x += rightDx; + } else if (leftDx > 0) { + newBounds.x += leftDx; + } + } + + if (this.wrapVertical) { + //do nothing + } else { + var verticalThreshold = this.visibilityRatio * newBounds.height; + var boundsBottom = newBounds.y + newBounds.height; + var contentBottom = this._contentBoundsNoRotate.y + this._contentBoundsNoRotate.height; + var topDy = this._contentBoundsNoRotate.y - boundsBottom + verticalThreshold; + var bottomDy = contentBottom - newBounds.y - verticalThreshold; + + if (verticalThreshold > this._contentBoundsNoRotate.height) { + newBounds.y += (topDy + bottomDy) / 2; + } else if (bottomDy < 0) { + newBounds.y += bottomDy; + } else if (topDy > 0) { + newBounds.y += topDy; + } + } + + if (this.viewer) { + /** + * Raised when the viewport constraints are applied (see {@link OpenSeadragon.Viewport#applyConstraints}). + * + * @event constrain + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {Boolean} immediately + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'constrain', { + immediately: immediately + }); + } + + return newBounds; + }, + + /** + * Enforces the minZoom, maxZoom and visibilityRatio constraints by + * zooming and panning to the closest acceptable zoom and location. + * @function + * @param {Boolean} [immediately=false] + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:constrain + */ + applyConstraints: function(immediately) { + var actualZoom = this.getZoom(); + var constrainedZoom = this._applyZoomConstraints(actualZoom); + + if (actualZoom !== constrainedZoom) { + this.zoomTo(constrainedZoom, this.zoomPoint, immediately); + } + + var bounds = this.getBoundsNoRotate(); + var constrainedBounds = this._applyBoundaryConstraints( + bounds, immediately); + + if (bounds.x !== constrainedBounds.x || + bounds.y !== constrainedBounds.y || + immediately) { + this.fitBounds( + constrainedBounds.rotate(-this.getRotation()), + immediately); + } + return this; + }, + + /** + * Equivalent to {@link OpenSeadragon.Viewport#applyConstraints} + * @function + * @param {Boolean} [immediately=false] + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:constrain + */ + ensureVisible: function(immediately) { + return this.applyConstraints(immediately); + }, + + /** + * @function + * @private + * @param {OpenSeadragon.Rect} bounds + * @param {Object} options (immediately=false, constraints=false) + * @return {OpenSeadragon.Viewport} Chainable. + */ + _fitBounds: function(bounds, options) { + options = options || {}; + var immediately = options.immediately || false; + var constraints = options.constraints || false; + + var aspect = this.getAspectRatio(); + var center = bounds.getCenter(); + + // Compute width and height of bounding box. + var newBounds = new $.Rect( + bounds.x, + bounds.y, + bounds.width, + bounds.height, + bounds.degrees + this.getRotation()) + .getBoundingBox(); + + if (newBounds.getAspectRatio() >= aspect) { + newBounds.height = newBounds.width / aspect; + } else { + newBounds.width = newBounds.height * aspect; + } + + // Compute x and y from width, height and center position + newBounds.x = center.x - newBounds.width / 2; + newBounds.y = center.y - newBounds.height / 2; + var newZoom = 1.0 / newBounds.width; + + if (constraints) { + var newBoundsAspectRatio = newBounds.getAspectRatio(); + var newConstrainedZoom = this._applyZoomConstraints(newZoom); + + if (newZoom !== newConstrainedZoom) { + newZoom = newConstrainedZoom; + newBounds.width = 1.0 / newZoom; + newBounds.x = center.x - newBounds.width / 2; + newBounds.height = newBounds.width / newBoundsAspectRatio; + newBounds.y = center.y - newBounds.height / 2; + } + + newBounds = this._applyBoundaryConstraints(newBounds, immediately); + center = newBounds.getCenter(); + } + + if (immediately) { + this.panTo(center, true); + return this.zoomTo(newZoom, null, true); + } + + this.panTo(this.getCenter(true), true); + this.zoomTo(this.getZoom(true), null, true); + + var oldBounds = this.getBounds(); + var oldZoom = this.getZoom(); + + if (oldZoom === 0 || Math.abs(newZoom / oldZoom - 1) < 0.00000001) { + this.zoomTo(newZoom, true); + return this.panTo(center, immediately); + } + + newBounds = newBounds.rotate(-this.getRotation()); + var referencePoint = newBounds.getTopLeft().times(newZoom) + .minus(oldBounds.getTopLeft().times(oldZoom)) + .divide(newZoom - oldZoom); + + return this.zoomTo(newZoom, referencePoint, immediately); + }, + + /** + * Makes the viewport zoom and pan so that the specified bounds take + * as much space as possible in the viewport. + * Note: this method ignores the constraints (minZoom, maxZoom and + * visibilityRatio). + * Use {@link OpenSeadragon.Viewport#fitBoundsWithConstraints} to enforce + * them. + * @function + * @param {OpenSeadragon.Rect} bounds + * @param {Boolean} [immediately=false] + * @return {OpenSeadragon.Viewport} Chainable. + */ + fitBounds: function(bounds, immediately) { + return this._fitBounds(bounds, { + immediately: immediately, + constraints: false + }); + }, + + /** + * Makes the viewport zoom and pan so that the specified bounds take + * as much space as possible in the viewport while enforcing the constraints + * (minZoom, maxZoom and visibilityRatio). + * Note: because this method enforces the constraints, part of the + * provided bounds may end up outside of the viewport. + * Use {@link OpenSeadragon.Viewport#fitBounds} to ignore them. + * @function + * @param {OpenSeadragon.Rect} bounds + * @param {Boolean} [immediately=false] + * @return {OpenSeadragon.Viewport} Chainable. + */ + fitBoundsWithConstraints: function(bounds, immediately) { + return this._fitBounds(bounds, { + immediately: immediately, + constraints: true + }); + }, + + /** + * Zooms so the image just fills the viewer vertically. + * @param {Boolean} immediately + * @return {OpenSeadragon.Viewport} Chainable. + */ + fitVertically: function(immediately) { + var box = new $.Rect( + this._contentBounds.x + (this._contentBounds.width / 2), + this._contentBounds.y, + 0, + this._contentBounds.height); + return this.fitBounds(box, immediately); + }, + + /** + * Zooms so the image just fills the viewer horizontally. + * @param {Boolean} immediately + * @return {OpenSeadragon.Viewport} Chainable. + */ + fitHorizontally: function(immediately) { + var box = new $.Rect( + this._contentBounds.x, + this._contentBounds.y + (this._contentBounds.height / 2), + this._contentBounds.width, + 0); + return this.fitBounds(box, immediately); + }, + + + /** + * @function + * @param {OpenSeadragon.Point} delta + * @param {Boolean} immediately + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:pan + */ + panBy: function( delta, immediately ) { + var center = new $.Point( + this.centerSpringX.target.value, + this.centerSpringY.target.value + ); + return this.panTo( center.plus( delta ), immediately ); + }, + + /** + * @function + * @param {OpenSeadragon.Point} center + * @param {Boolean} immediately + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:pan + */ + panTo: function( center, immediately ) { + if ( immediately ) { + this.centerSpringX.resetTo( center.x ); + this.centerSpringY.resetTo( center.y ); + } else { + this.centerSpringX.springTo( center.x ); + this.centerSpringY.springTo( center.y ); + } + + if( this.viewer ){ + /** + * Raised when the viewport is panned (see {@link OpenSeadragon.Viewport#panBy} and {@link OpenSeadragon.Viewport#panTo}). + * + * @event pan + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.Point} center + * @property {Boolean} immediately + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'pan', { + center: center, + immediately: immediately + }); + } + + return this; + }, + + /** + * @function + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:zoom + */ + zoomBy: function(factor, refPoint, immediately) { + return this.zoomTo( + this.zoomSpring.target.value * factor, refPoint, immediately); + }, + + /** + * Zooms to the specified zoom level + * @function + * @param {Number} zoom The zoom level to zoom to. + * @param {OpenSeadragon.Point} [refPoint] The point which will stay at + * the same screen location. Defaults to the viewport center. + * @param {Boolean} [immediately=false] + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:zoom + */ + zoomTo: function( zoom, refPoint, immediately ) { + + this.zoomPoint = refPoint instanceof $.Point && + !isNaN(refPoint.x) && + !isNaN(refPoint.y) ? + refPoint : + null; + + if ( immediately ) { + this.zoomSpring.resetTo( zoom ); + } else { + this.zoomSpring.springTo( zoom ); + } + + if( this.viewer ){ + /** + * Raised when the viewport zoom level changes (see {@link OpenSeadragon.Viewport#zoomBy} and {@link OpenSeadragon.Viewport#zoomTo}). + * + * @event zoom + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {Number} zoom + * @property {OpenSeadragon.Point} refPoint + * @property {Boolean} immediately + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'zoom', { + zoom: zoom, + refPoint: refPoint, + immediately: immediately + }); + } + + return this; + }, + + /** + * Rotates this viewport to the angle specified. + * @function + * @return {OpenSeadragon.Viewport} Chainable. + */ + setRotation: function(degrees) { + if (!this.viewer || !this.viewer.drawer.canRotate()) { + return this; + } + + degrees = degrees % 360; + if (degrees < 0) { + degrees += 360; + } + this.degrees = degrees; + this._setContentBounds( + this.viewer.world.getHomeBounds(), + this.viewer.world.getContentFactor()); + this.viewer.forceRedraw(); + + /** + * Raised when rotation has been changed. + * + * @event rotate + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Number} degrees - The number of degrees the rotation was set to. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('rotate', {"degrees": degrees}); + return this; + }, + + /** + * Gets the current rotation in degrees. + * @function + * @return {Number} The current rotation in degrees. + */ + getRotation: function() { + return this.degrees; + }, + + /** + * @function + * @return {OpenSeadragon.Viewport} Chainable. + * @fires OpenSeadragon.Viewer.event:resize + */ + resize: function( newContainerSize, maintain ) { + var oldBounds = this.getBoundsNoRotate(), + newBounds = oldBounds, + widthDeltaFactor; + + this.containerSize.x = newContainerSize.x; + this.containerSize.y = newContainerSize.y; + + this._updateContainerInnerSize(); + + if ( maintain ) { + // TODO: widthDeltaFactor will always be 1; probably not what's intended + widthDeltaFactor = newContainerSize.x / this.containerSize.x; + newBounds.width = oldBounds.width * widthDeltaFactor; + newBounds.height = newBounds.width / this.getAspectRatio(); + } + + if( this.viewer ){ + /** + * Raised when the viewer is resized (see {@link OpenSeadragon.Viewport#resize}). + * + * @event resize + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.Point} newContainerSize + * @property {Boolean} maintain + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent( 'resize', { + newContainerSize: newContainerSize, + maintain: maintain + }); + } + + return this.fitBounds( newBounds, true ); + }, + + // private + _updateContainerInnerSize: function() { + this._containerInnerSize = new $.Point( + Math.max(1, this.containerSize.x - (this._margins.left + this._margins.right)), + Math.max(1, this.containerSize.y - (this._margins.top + this._margins.bottom)) + ); + }, + + /** + * Update the zoom and center (X and Y) springs. + * @function + * @returns {Boolean} True if any change has been made, false otherwise. + */ + update: function() { + + if (this.zoomPoint) { + var oldZoomPixel = this.pixelFromPoint(this.zoomPoint, true); + this.zoomSpring.update(); + var newZoomPixel = this.pixelFromPoint(this.zoomPoint, true); + + var deltaZoomPixels = newZoomPixel.minus(oldZoomPixel); + var deltaZoomPoints = this.deltaPointsFromPixels( + deltaZoomPixels, true); + + this.centerSpringX.shiftBy(deltaZoomPoints.x); + this.centerSpringY.shiftBy(deltaZoomPoints.y); + + if (this.zoomSpring.isAtTargetValue()) { + this.zoomPoint = null; + } + } else { + this.zoomSpring.update(); + } + + this.centerSpringX.update(); + this.centerSpringY.update(); + + var changed = this.centerSpringX.current.value !== this._oldCenterX || + this.centerSpringY.current.value !== this._oldCenterY || + this.zoomSpring.current.value !== this._oldZoom; + + this._oldCenterX = this.centerSpringX.current.value; + this._oldCenterY = this.centerSpringY.current.value; + this._oldZoom = this.zoomSpring.current.value; + + return changed; + }, + + /** + * Convert a delta (translation vector) from viewport coordinates to pixels + * coordinates. This method does not take rotation into account. + * Consider using deltaPixelsFromPoints if you need to account for rotation. + * @param {OpenSeadragon.Point} deltaPoints - The translation vector to convert. + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + deltaPixelsFromPointsNoRotate: function(deltaPoints, current) { + return deltaPoints.times( + this._containerInnerSize.x * this.getZoom(current) + ); + }, + + /** + * Convert a delta (translation vector) from viewport coordinates to pixels + * coordinates. + * @param {OpenSeadragon.Point} deltaPoints - The translation vector to convert. + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + deltaPixelsFromPoints: function(deltaPoints, current) { + return this.deltaPixelsFromPointsNoRotate( + deltaPoints.rotate(this.getRotation()), + current); + }, + + /** + * Convert a delta (translation vector) from pixels coordinates to viewport + * coordinates. This method does not take rotation into account. + * Consider using deltaPointsFromPixels if you need to account for rotation. + * @param {OpenSeadragon.Point} deltaPixels - The translation vector to convert. + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + deltaPointsFromPixelsNoRotate: function(deltaPixels, current) { + return deltaPixels.divide( + this._containerInnerSize.x * this.getZoom(current) + ); + }, + + /** + * Convert a delta (translation vector) from pixels coordinates to viewport + * coordinates. + * @param {OpenSeadragon.Point} deltaPixels - The translation vector to convert. + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + deltaPointsFromPixels: function(deltaPixels, current) { + return this.deltaPointsFromPixelsNoRotate(deltaPixels, current) + .rotate(-this.getRotation()); + }, + + /** + * Convert viewport coordinates to pixels coordinates. + * This method does not take rotation into account. + * Consider using pixelFromPoint if you need to account for rotation. + * @param {OpenSeadragon.Point} point the viewport coordinates + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + pixelFromPointNoRotate: function(point, current) { + return this._pixelFromPointNoRotate( + point, this.getBoundsNoRotate(current)); + }, + + /** + * Convert viewport coordinates to pixel coordinates. + * @param {OpenSeadragon.Point} point the viewport coordinates + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + pixelFromPoint: function(point, current) { + return this._pixelFromPoint(point, this.getBoundsNoRotate(current)); + }, + + // private + _pixelFromPointNoRotate: function(point, bounds) { + return point.minus( + bounds.getTopLeft() + ).times( + this._containerInnerSize.x / bounds.width + ).plus( + new $.Point(this._margins.left, this._margins.top) + ); + }, + + // private + _pixelFromPoint: function(point, bounds) { + return this._pixelFromPointNoRotate( + point.rotate(this.getRotation(), this.getCenter(true)), + bounds); + }, + + /** + * Convert pixel coordinates to viewport coordinates. + * This method does not take rotation into account. + * Consider using pointFromPixel if you need to account for rotation. + * @param {OpenSeadragon.Point} pixel Pixel coordinates + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + pointFromPixelNoRotate: function(pixel, current) { + var bounds = this.getBoundsNoRotate(current); + return pixel.minus( + new $.Point(this._margins.left, this._margins.top) + ).divide( + this._containerInnerSize.x / bounds.width + ).plus( + bounds.getTopLeft() + ); + }, + + /** + * Convert pixel coordinates to viewport coordinates. + * @param {OpenSeadragon.Point} pixel Pixel coordinates + * @param {Boolean} [current=false] - Pass true for the current location; + * defaults to false (target location). + * @returns {OpenSeadragon.Point} + */ + pointFromPixel: function(pixel, current) { + return this.pointFromPixelNoRotate(pixel, current).rotate( + -this.getRotation(), + this.getCenter(true) + ); + }, + + // private + _viewportToImageDelta: function( viewerX, viewerY ) { + var scale = this._contentBoundsNoRotate.width; + return new $.Point( + viewerX * this._contentSizeNoRotate.x / scale, + viewerY * this._contentSizeNoRotate.x / scale); + }, + + /** + * Translates from OpenSeadragon viewer coordinate system to image coordinate system. + * This method can be called either by passing X,Y coordinates or an + * OpenSeadragon.Point + * Note: not accurate with multi-image; use TiledImage.viewportToImageCoordinates instead. + * @function + * @param {(OpenSeadragon.Point|Number)} viewerX either a point or the X + * coordinate in viewport coordinate system. + * @param {Number} [viewerY] Y coordinate in viewport coordinate system. + * @return {OpenSeadragon.Point} a point representing the coordinates in the image. + */ + viewportToImageCoordinates: function(viewerX, viewerY) { + if (viewerX instanceof $.Point) { + //they passed a point instead of individual components + return this.viewportToImageCoordinates(viewerX.x, viewerX.y); + } + + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.viewportToImageCoordinates] is not accurate ' + + 'with multi-image; use TiledImage.viewportToImageCoordinates instead.'); + } else if (count === 1) { + // It is better to use TiledImage.viewportToImageCoordinates + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.viewportToImageCoordinates(viewerX, viewerY, true); + } + } + + return this._viewportToImageDelta( + viewerX - this._contentBoundsNoRotate.x, + viewerY - this._contentBoundsNoRotate.y); + }, + + // private + _imageToViewportDelta: function( imageX, imageY ) { + var scale = this._contentBoundsNoRotate.width; + return new $.Point( + imageX / this._contentSizeNoRotate.x * scale, + imageY / this._contentSizeNoRotate.x * scale); + }, + + /** + * Translates from image coordinate system to OpenSeadragon viewer coordinate system + * This method can be called either by passing X,Y coordinates or an + * OpenSeadragon.Point + * Note: not accurate with multi-image; use TiledImage.imageToViewportCoordinates instead. + * @function + * @param {(OpenSeadragon.Point | Number)} imageX the point or the + * X coordinate in image coordinate system. + * @param {Number} [imageY] Y coordinate in image coordinate system. + * @return {OpenSeadragon.Point} a point representing the coordinates in the viewport. + */ + imageToViewportCoordinates: function(imageX, imageY) { + if (imageX instanceof $.Point) { + //they passed a point instead of individual components + return this.imageToViewportCoordinates(imageX.x, imageX.y); + } + + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.imageToViewportCoordinates] is not accurate ' + + 'with multi-image; use TiledImage.imageToViewportCoordinates instead.'); + } else if (count === 1) { + // It is better to use TiledImage.viewportToImageCoordinates + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.imageToViewportCoordinates(imageX, imageY, true); + } + } + + var point = this._imageToViewportDelta(imageX, imageY); + point.x += this._contentBoundsNoRotate.x; + point.y += this._contentBoundsNoRotate.y; + return point; + }, + + /** + * Translates from a rectangle which describes a portion of the image in + * pixel coordinates to OpenSeadragon viewport rectangle coordinates. + * This method can be called either by passing X,Y,width,height or an + * OpenSeadragon.Rect + * Note: not accurate with multi-image; use TiledImage.imageToViewportRectangle instead. + * @function + * @param {(OpenSeadragon.Rect | Number)} imageX the rectangle or the X + * coordinate of the top left corner of the rectangle in image coordinate system. + * @param {Number} [imageY] the Y coordinate of the top left corner of the rectangle + * in image coordinate system. + * @param {Number} [pixelWidth] the width in pixel of the rectangle. + * @param {Number} [pixelHeight] the height in pixel of the rectangle. + */ + imageToViewportRectangle: function(imageX, imageY, pixelWidth, pixelHeight) { + var rect = imageX; + if (!(rect instanceof $.Rect)) { + //they passed individual components instead of a rectangle + rect = new $.Rect(imageX, imageY, pixelWidth, pixelHeight); + } + + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.imageToViewportRectangle] is not accurate ' + + 'with multi-image; use TiledImage.imageToViewportRectangle instead.'); + } else if (count === 1) { + // It is better to use TiledImage.imageToViewportRectangle + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.imageToViewportRectangle( + imageX, imageY, pixelWidth, pixelHeight, true); + } + } + + var coordA = this.imageToViewportCoordinates(rect.x, rect.y); + var coordB = this._imageToViewportDelta(rect.width, rect.height); + return new $.Rect( + coordA.x, + coordA.y, + coordB.x, + coordB.y, + rect.degrees + ); + }, + + /** + * Translates from a rectangle which describes a portion of + * the viewport in point coordinates to image rectangle coordinates. + * This method can be called either by passing X,Y,width,height or an + * OpenSeadragon.Rect + * Note: not accurate with multi-image; use TiledImage.viewportToImageRectangle instead. + * @function + * @param {(OpenSeadragon.Rect | Number)} viewerX either a rectangle or + * the X coordinate of the top left corner of the rectangle in viewport + * coordinate system. + * @param {Number} [viewerY] the Y coordinate of the top left corner of the rectangle + * in viewport coordinate system. + * @param {Number} [pointWidth] the width of the rectangle in viewport coordinate system. + * @param {Number} [pointHeight] the height of the rectangle in viewport coordinate system. + */ + viewportToImageRectangle: function(viewerX, viewerY, pointWidth, pointHeight) { + var rect = viewerX; + if (!(rect instanceof $.Rect)) { + //they passed individual components instead of a rectangle + rect = new $.Rect(viewerX, viewerY, pointWidth, pointHeight); + } + + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.viewportToImageRectangle] is not accurate ' + + 'with multi-image; use TiledImage.viewportToImageRectangle instead.'); + } else if (count === 1) { + // It is better to use TiledImage.viewportToImageCoordinates + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.viewportToImageRectangle( + viewerX, viewerY, pointWidth, pointHeight, true); + } + } + + var coordA = this.viewportToImageCoordinates(rect.x, rect.y); + var coordB = this._viewportToImageDelta(rect.width, rect.height); + return new $.Rect( + coordA.x, + coordA.y, + coordB.x, + coordB.y, + rect.degrees + ); + }, + + /** + * Convert pixel coordinates relative to the viewer element to image + * coordinates. + * Note: not accurate with multi-image. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + viewerElementToImageCoordinates: function( pixel ) { + var point = this.pointFromPixel( pixel, true ); + return this.viewportToImageCoordinates( point ); + }, + + /** + * Convert pixel coordinates relative to the image to + * viewer element coordinates. + * Note: not accurate with multi-image. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + imageToViewerElementCoordinates: function( pixel ) { + var point = this.imageToViewportCoordinates( pixel ); + return this.pixelFromPoint( point, true ); + }, + + /** + * Convert pixel coordinates relative to the window to image coordinates. + * Note: not accurate with multi-image. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + windowToImageCoordinates: function(pixel) { + $.console.assert(this.viewer, + "[Viewport.windowToImageCoordinates] the viewport must have a viewer."); + var viewerCoordinates = pixel.minus( + $.getElementPosition(this.viewer.element)); + return this.viewerElementToImageCoordinates(viewerCoordinates); + }, + + /** + * Convert image coordinates to pixel coordinates relative to the window. + * Note: not accurate with multi-image. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + imageToWindowCoordinates: function(pixel) { + $.console.assert(this.viewer, + "[Viewport.imageToWindowCoordinates] the viewport must have a viewer."); + var viewerCoordinates = this.imageToViewerElementCoordinates(pixel); + return viewerCoordinates.plus( + $.getElementPosition(this.viewer.element)); + }, + + /** + * Convert pixel coordinates relative to the viewer element to viewport + * coordinates. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + viewerElementToViewportCoordinates: function( pixel ) { + return this.pointFromPixel( pixel, true ); + }, + + /** + * Convert viewport coordinates to pixel coordinates relative to the + * viewer element. + * @param {OpenSeadragon.Point} point + * @returns {OpenSeadragon.Point} + */ + viewportToViewerElementCoordinates: function( point ) { + return this.pixelFromPoint( point, true ); + }, + + /** + * Convert a rectangle in pixel coordinates relative to the viewer element + * to viewport coordinates. + * @param {OpenSeadragon.Rect} rectangle the rectangle to convert + * @returns {OpenSeadragon.Rect} the converted rectangle + */ + viewerElementToViewportRectangle: function(rectangle) { + return $.Rect.fromSummits( + this.pointFromPixel(rectangle.getTopLeft(), true), + this.pointFromPixel(rectangle.getTopRight(), true), + this.pointFromPixel(rectangle.getBottomLeft(), true) + ); + }, + + /** + * Convert a rectangle in viewport coordinates to pixel coordinates relative + * to the viewer element. + * @param {OpenSeadragon.Rect} rectangle the rectangle to convert + * @returns {OpenSeadragon.Rect} the converted rectangle + */ + viewportToViewerElementRectangle: function(rectangle) { + return $.Rect.fromSummits( + this.pixelFromPoint(rectangle.getTopLeft(), true), + this.pixelFromPoint(rectangle.getTopRight(), true), + this.pixelFromPoint(rectangle.getBottomLeft(), true) + ); + }, + + /** + * Convert pixel coordinates relative to the window to viewport coordinates. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + windowToViewportCoordinates: function(pixel) { + $.console.assert(this.viewer, + "[Viewport.windowToViewportCoordinates] the viewport must have a viewer."); + var viewerCoordinates = pixel.minus( + $.getElementPosition(this.viewer.element)); + return this.viewerElementToViewportCoordinates(viewerCoordinates); + }, + + /** + * Convert viewport coordinates to pixel coordinates relative to the window. + * @param {OpenSeadragon.Point} point + * @returns {OpenSeadragon.Point} + */ + viewportToWindowCoordinates: function(point) { + $.console.assert(this.viewer, + "[Viewport.viewportToWindowCoordinates] the viewport must have a viewer."); + var viewerCoordinates = this.viewportToViewerElementCoordinates(point); + return viewerCoordinates.plus( + $.getElementPosition(this.viewer.element)); + }, + + /** + * Convert a viewport zoom to an image zoom. + * Image zoom: ratio of the original image size to displayed image size. + * 1 means original image size, 0.5 half size... + * Viewport zoom: ratio of the displayed image's width to viewport's width. + * 1 means identical width, 2 means image's width is twice the viewport's width... + * Note: not accurate with multi-image. + * @function + * @param {Number} viewportZoom The viewport zoom + * target zoom. + * @returns {Number} imageZoom The image zoom + */ + viewportToImageZoom: function(viewportZoom) { + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.viewportToImageZoom] is not ' + + 'accurate with multi-image.'); + } else if (count === 1) { + // It is better to use TiledImage.viewportToImageZoom + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.viewportToImageZoom(viewportZoom); + } + } + + var imageWidth = this._contentSizeNoRotate.x; + var containerWidth = this._containerInnerSize.x; + var scale = this._contentBoundsNoRotate.width; + var viewportToImageZoomRatio = (containerWidth / imageWidth) * scale; + return viewportZoom * viewportToImageZoomRatio; + }, + + /** + * Convert an image zoom to a viewport zoom. + * Image zoom: ratio of the original image size to displayed image size. + * 1 means original image size, 0.5 half size... + * Viewport zoom: ratio of the displayed image's width to viewport's width. + * 1 means identical width, 2 means image's width is twice the viewport's width... + * Note: not accurate with multi-image. + * @function + * @param {Number} imageZoom The image zoom + * target zoom. + * @returns {Number} viewportZoom The viewport zoom + */ + imageToViewportZoom: function(imageZoom) { + if (this.viewer) { + var count = this.viewer.world.getItemCount(); + if (count > 1) { + $.console.error('[Viewport.imageToViewportZoom] is not accurate ' + + 'with multi-image.'); + } else if (count === 1) { + // It is better to use TiledImage.imageToViewportZoom + // because this._contentBoundsNoRotate can not be relied on + // with clipping. + var item = this.viewer.world.getItemAt(0); + return item.imageToViewportZoom(imageZoom); + } + } + + var imageWidth = this._contentSizeNoRotate.x; + var containerWidth = this._containerInnerSize.x; + var scale = this._contentBoundsNoRotate.width; + var viewportToImageZoomRatio = (imageWidth / containerWidth) / scale; + return imageZoom * viewportToImageZoomRatio; + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - TiledImage + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * You shouldn't have to create a TiledImage directly; use {@link OpenSeadragon.Viewer#open} + * or {@link OpenSeadragon.Viewer#addTiledImage} instead. + * @class TiledImage + * @memberof OpenSeadragon + * @extends OpenSeadragon.EventSource + * @classdesc Handles rendering of tiles for an {@link OpenSeadragon.Viewer}. + * A new instance is created for each TileSource opened. + * @param {Object} options - Configuration for this TiledImage. + * @param {OpenSeadragon.TileSource} options.source - The TileSource that defines this TiledImage. + * @param {OpenSeadragon.Viewer} options.viewer - The Viewer that owns this TiledImage. + * @param {OpenSeadragon.TileCache} options.tileCache - The TileCache for this TiledImage to use. + * @param {OpenSeadragon.Drawer} options.drawer - The Drawer for this TiledImage to draw onto. + * @param {OpenSeadragon.ImageLoader} options.imageLoader - The ImageLoader for this TiledImage to use. + * @param {Number} [options.x=0] - Left position, in viewport coordinates. + * @param {Number} [options.y=0] - Top position, in viewport coordinates. + * @param {Number} [options.width=1] - Width, in viewport coordinates. + * @param {Number} [options.height] - Height, in viewport coordinates. + * @param {OpenSeadragon.Rect} [options.fitBounds] The bounds in viewport coordinates + * to fit the image into. If specified, x, y, width and height get ignored. + * @param {OpenSeadragon.Placement} [options.fitBoundsPlacement=OpenSeadragon.Placement.CENTER] + * How to anchor the image in the bounds if options.fitBounds is set. + * @param {OpenSeadragon.Rect} [options.clip] - An area, in image pixels, to clip to + * (portions of the image outside of this area will not be visible). Only works on + * browsers that support the HTML5 canvas. + * @param {Number} [options.springStiffness] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.animationTime] - See {@link OpenSeadragon.Options}. + * @param {Number} [options.minZoomImageRatio] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.wrapHorizontal] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.wrapVertical] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.immediateRender] - See {@link OpenSeadragon.Options}. + * @param {Number} [options.blendTime] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.alwaysBlend] - See {@link OpenSeadragon.Options}. + * @param {Number} [options.minPixelRatio] - See {@link OpenSeadragon.Options}. + * @param {Number} [options.smoothTileEdgesMinZoom] - See {@link OpenSeadragon.Options}. + * @param {Boolean} [options.iOSDevice] - See {@link OpenSeadragon.Options}. + * @param {Number} [options.opacity=1] - Opacity the tiled image should be drawn at. + * @param {String} [options.compositeOperation] - How the image is composited onto other images; see compositeOperation in {@link OpenSeadragon.Options} for possible values. + * @param {Boolean} [options.debugMode] - See {@link OpenSeadragon.Options}. + * @param {String|CanvasGradient|CanvasPattern|Function} [options.placeholderFillStyle] - See {@link OpenSeadragon.Options}. + * @param {String|Boolean} [options.crossOriginPolicy] - See {@link OpenSeadragon.Options}. + */ +$.TiledImage = function( options ) { + var _this = this; + + $.console.assert( options.tileCache, "[TiledImage] options.tileCache is required" ); + $.console.assert( options.drawer, "[TiledImage] options.drawer is required" ); + $.console.assert( options.viewer, "[TiledImage] options.viewer is required" ); + $.console.assert( options.imageLoader, "[TiledImage] options.imageLoader is required" ); + $.console.assert( options.source, "[TiledImage] options.source is required" ); + $.console.assert(!options.clip || options.clip instanceof $.Rect, + "[TiledImage] options.clip must be an OpenSeadragon.Rect if present"); + + $.EventSource.call( this ); + + this._tileCache = options.tileCache; + delete options.tileCache; + + this._drawer = options.drawer; + delete options.drawer; + + this._imageLoader = options.imageLoader; + delete options.imageLoader; + + if (options.clip instanceof $.Rect) { + this._clip = options.clip.clone(); + } + + delete options.clip; + + var x = options.x || 0; + delete options.x; + var y = options.y || 0; + delete options.y; + + // Ratio of zoomable image height to width. + this.normHeight = options.source.dimensions.y / options.source.dimensions.x; + this.contentAspectX = options.source.dimensions.x / options.source.dimensions.y; + + var scale = 1; + if ( options.width ) { + scale = options.width; + delete options.width; + + if ( options.height ) { + $.console.error( "specifying both width and height to a tiledImage is not supported" ); + delete options.height; + } + } else if ( options.height ) { + scale = options.height / this.normHeight; + delete options.height; + } + + var fitBounds = options.fitBounds; + delete options.fitBounds; + var fitBoundsPlacement = options.fitBoundsPlacement || OpenSeadragon.Placement.CENTER; + delete options.fitBoundsPlacement; + + $.extend( true, this, { + + //internal state properties + viewer: null, + tilesMatrix: {}, // A '3d' dictionary [level][x][y] --> Tile. + coverage: {}, // A '3d' dictionary [level][x][y] --> Boolean. + lastDrawn: [], // An unordered list of Tiles drawn last frame. + lastResetTime: 0, // Last time for which the tiledImage was reset. + _midDraw: false, // Is the tiledImage currently updating the viewport? + _needsDraw: true, // Does the tiledImage need to update the viewport again? + _hasOpaqueTile: false, // Do we have even one fully opaque tile? + //configurable settings + springStiffness: $.DEFAULT_SETTINGS.springStiffness, + animationTime: $.DEFAULT_SETTINGS.animationTime, + minZoomImageRatio: $.DEFAULT_SETTINGS.minZoomImageRatio, + wrapHorizontal: $.DEFAULT_SETTINGS.wrapHorizontal, + wrapVertical: $.DEFAULT_SETTINGS.wrapVertical, + immediateRender: $.DEFAULT_SETTINGS.immediateRender, + blendTime: $.DEFAULT_SETTINGS.blendTime, + alwaysBlend: $.DEFAULT_SETTINGS.alwaysBlend, + minPixelRatio: $.DEFAULT_SETTINGS.minPixelRatio, + smoothTileEdgesMinZoom: $.DEFAULT_SETTINGS.smoothTileEdgesMinZoom, + iOSDevice: $.DEFAULT_SETTINGS.iOSDevice, + debugMode: $.DEFAULT_SETTINGS.debugMode, + crossOriginPolicy: $.DEFAULT_SETTINGS.crossOriginPolicy, + placeholderFillStyle: $.DEFAULT_SETTINGS.placeholderFillStyle, + opacity: $.DEFAULT_SETTINGS.opacity, + compositeOperation: $.DEFAULT_SETTINGS.compositeOperation + + }, options ); + + this._xSpring = new $.Spring({ + initial: x, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + + this._ySpring = new $.Spring({ + initial: y, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + + this._scaleSpring = new $.Spring({ + initial: scale, + springStiffness: this.springStiffness, + animationTime: this.animationTime + }); + + this._updateForScale(); + + if (fitBounds) { + this.fitBounds(fitBounds, fitBoundsPlacement, true); + } + + // We need a callback to give image manipulation a chance to happen + this._drawingHandler = function(args) { + /** + * This event is fired just before the tile is drawn giving the application a chance to alter the image. + * + * NOTE: This event is only fired when the drawer is using a <canvas>. + * + * @event tile-drawing + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.Tile} tile - The Tile being drawn. + * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @property {OpenSeadragon.Tile} context - The HTML canvas context being drawn into. + * @property {OpenSeadragon.Tile} rendered - The HTML canvas context containing the tile imagery. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + _this.viewer.raiseEvent('tile-drawing', $.extend({ + tiledImage: _this + }, args)); + }; +}; + +$.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadragon.TiledImage.prototype */{ + /** + * @returns {Boolean} Whether the TiledImage needs to be drawn. + */ + needsDraw: function() { + return this._needsDraw; + }, + + /** + * Clears all tiles and triggers an update on the next call to + * {@link OpenSeadragon.TiledImage#update}. + */ + reset: function() { + this._tileCache.clearTilesFor(this); + this.lastResetTime = $.now(); + this._needsDraw = true; + }, + + /** + * Updates the TiledImage's bounds, animating if needed. + * @returns {Boolean} Whether the TiledImage animated. + */ + update: function() { + var oldX = this._xSpring.current.value; + var oldY = this._ySpring.current.value; + var oldScale = this._scaleSpring.current.value; + + this._xSpring.update(); + this._ySpring.update(); + this._scaleSpring.update(); + + if (this._xSpring.current.value !== oldX || this._ySpring.current.value !== oldY || + this._scaleSpring.current.value !== oldScale) { + this._updateForScale(); + this._needsDraw = true; + return true; + } + + return false; + }, + + /** + * Draws the TiledImage to its Drawer. + */ + draw: function() { + if (this.opacity !== 0) { + this._midDraw = true; + updateViewport(this); + this._midDraw = false; + } + }, + + /** + * Destroy the TiledImage (unload current loaded tiles). + */ + destroy: function() { + this.reset(); + }, + + /** + * @returns {OpenSeadragon.Rect} This TiledImage's bounds in viewport coordinates. + * @param {Boolean} [current=false] - Pass true for the current location; false for target location. + */ + getBounds: function(current) { + if (current) { + return new $.Rect( this._xSpring.current.value, this._ySpring.current.value, + this._worldWidthCurrent, this._worldHeightCurrent ); + } + + return new $.Rect( this._xSpring.target.value, this._ySpring.target.value, + this._worldWidthTarget, this._worldHeightTarget ); + }, + + // deprecated + getWorldBounds: function() { + $.console.error('[TiledImage.getWorldBounds] is deprecated; use TiledImage.getBounds instead'); + return this.getBounds(); + }, + + /** + * Get the bounds of the displayed part of the tiled image. + * @param {Boolean} [current=false] Pass true for the current location, + * false for the target location. + * @returns {$.Rect} The clipped bounds in viewport coordinates. + */ + getClippedBounds: function(current) { + var bounds = this.getBounds(current); + if (this._clip) { + var ratio = this._worldWidthCurrent / this.source.dimensions.x; + var clip = this._clip.times(ratio); + bounds = new $.Rect( + bounds.x + clip.x, + bounds.y + clip.y, + clip.width, + clip.height); + } + return bounds; + }, + + /** + * @returns {OpenSeadragon.Point} This TiledImage's content size, in original pixels. + */ + getContentSize: function() { + return new $.Point(this.source.dimensions.x, this.source.dimensions.y); + }, + + // private + _viewportToImageDelta: function( viewerX, viewerY, current ) { + var scale = (current ? this._scaleSpring.current.value : this._scaleSpring.target.value); + return new $.Point(viewerX * (this.source.dimensions.x / scale), + viewerY * ((this.source.dimensions.y * this.contentAspectX) / scale)); + }, + + /** + * Translates from OpenSeadragon viewer coordinate system to image coordinate system. + * This method can be called either by passing X,Y coordinates or an {@link OpenSeadragon.Point}. + * @param {Number|OpenSeadragon.Point} viewerX - The X coordinate or point in viewport coordinate system. + * @param {Number} [viewerY] - The Y coordinate in viewport coordinate system. + * @param {Boolean} [current=false] - Pass true to use the current location; false for target location. + * @return {OpenSeadragon.Point} A point representing the coordinates in the image. + */ + viewportToImageCoordinates: function( viewerX, viewerY, current ) { + if (viewerX instanceof $.Point) { + //they passed a point instead of individual components + current = viewerY; + viewerY = viewerX.y; + viewerX = viewerX.x; + } + + if (current) { + return this._viewportToImageDelta(viewerX - this._xSpring.current.value, + viewerY - this._ySpring.current.value); + } + + return this._viewportToImageDelta(viewerX - this._xSpring.target.value, + viewerY - this._ySpring.target.value); + }, + + // private + _imageToViewportDelta: function( imageX, imageY, current ) { + var scale = (current ? this._scaleSpring.current.value : this._scaleSpring.target.value); + return new $.Point((imageX / this.source.dimensions.x) * scale, + (imageY / this.source.dimensions.y / this.contentAspectX) * scale); + }, + + /** + * Translates from image coordinate system to OpenSeadragon viewer coordinate system + * This method can be called either by passing X,Y coordinates or an {@link OpenSeadragon.Point}. + * @param {Number|OpenSeadragon.Point} imageX - The X coordinate or point in image coordinate system. + * @param {Number} [imageY] - The Y coordinate in image coordinate system. + * @param {Boolean} [current=false] - Pass true to use the current location; false for target location. + * @return {OpenSeadragon.Point} A point representing the coordinates in the viewport. + */ + imageToViewportCoordinates: function( imageX, imageY, current ) { + if (imageX instanceof $.Point) { + //they passed a point instead of individual components + current = imageY; + imageY = imageX.y; + imageX = imageX.x; + } + + var point = this._imageToViewportDelta(imageX, imageY); + if (current) { + point.x += this._xSpring.current.value; + point.y += this._ySpring.current.value; + } else { + point.x += this._xSpring.target.value; + point.y += this._ySpring.target.value; + } + + return point; + }, + + /** + * Translates from a rectangle which describes a portion of the image in + * pixel coordinates to OpenSeadragon viewport rectangle coordinates. + * This method can be called either by passing X,Y,width,height or an {@link OpenSeadragon.Rect}. + * @param {Number|OpenSeadragon.Rect} imageX - The left coordinate or rectangle in image coordinate system. + * @param {Number} [imageY] - The top coordinate in image coordinate system. + * @param {Number} [pixelWidth] - The width in pixel of the rectangle. + * @param {Number} [pixelHeight] - The height in pixel of the rectangle. + * @param {Boolean} [current=false] - Pass true to use the current location; false for target location. + * @return {OpenSeadragon.Rect} A rect representing the coordinates in the viewport. + */ + imageToViewportRectangle: function( imageX, imageY, pixelWidth, pixelHeight, current ) { + var rect = imageX; + if (rect instanceof $.Rect) { + //they passed a rect instead of individual components + current = imageY; + } else { + rect = new $.Rect(imageX, imageY, pixelWidth, pixelHeight); + } + + var coordA = this.imageToViewportCoordinates(rect.getTopLeft(), current); + var coordB = this._imageToViewportDelta(rect.width, rect.height, current); + + return new $.Rect( + coordA.x, + coordA.y, + coordB.x, + coordB.y, + rect.degrees + ); + }, + + /** + * Translates from a rectangle which describes a portion of + * the viewport in point coordinates to image rectangle coordinates. + * This method can be called either by passing X,Y,width,height or an {@link OpenSeadragon.Rect}. + * @param {Number|OpenSeadragon.Rect} viewerX - The left coordinate or rectangle in viewport coordinate system. + * @param {Number} [viewerY] - The top coordinate in viewport coordinate system. + * @param {Number} [pointWidth] - The width in viewport coordinate system. + * @param {Number} [pointHeight] - The height in viewport coordinate system. + * @param {Boolean} [current=false] - Pass true to use the current location; false for target location. + * @return {OpenSeadragon.Rect} A rect representing the coordinates in the image. + */ + viewportToImageRectangle: function( viewerX, viewerY, pointWidth, pointHeight, current ) { + var rect = viewerX; + if (viewerX instanceof $.Rect) { + //they passed a rect instead of individual components + current = viewerY; + } else { + rect = new $.Rect(viewerX, viewerY, pointWidth, pointHeight); + } + + var coordA = this.viewportToImageCoordinates(rect.getTopLeft(), current); + var coordB = this._viewportToImageDelta(rect.width, rect.height, current); + + return new $.Rect( + coordA.x, + coordA.y, + coordB.x, + coordB.y, + rect.degrees + ); + }, + + /** + * Convert pixel coordinates relative to the viewer element to image + * coordinates. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + viewerElementToImageCoordinates: function( pixel ) { + var point = this.viewport.pointFromPixel( pixel, true ); + return this.viewportToImageCoordinates( point ); + }, + + /** + * Convert pixel coordinates relative to the image to + * viewer element coordinates. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + imageToViewerElementCoordinates: function( pixel ) { + var point = this.imageToViewportCoordinates( pixel ); + return this.viewport.pixelFromPoint( point, true ); + }, + + /** + * Convert pixel coordinates relative to the window to image coordinates. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + windowToImageCoordinates: function( pixel ) { + var viewerCoordinates = pixel.minus( + OpenSeadragon.getElementPosition( this.viewer.element )); + return this.viewerElementToImageCoordinates( viewerCoordinates ); + }, + + /** + * Convert image coordinates to pixel coordinates relative to the window. + * @param {OpenSeadragon.Point} pixel + * @returns {OpenSeadragon.Point} + */ + imageToWindowCoordinates: function( pixel ) { + var viewerCoordinates = this.imageToViewerElementCoordinates( pixel ); + return viewerCoordinates.plus( + OpenSeadragon.getElementPosition( this.viewer.element )); + }, + + /** + * Convert a viewport zoom to an image zoom. + * Image zoom: ratio of the original image size to displayed image size. + * 1 means original image size, 0.5 half size... + * Viewport zoom: ratio of the displayed image's width to viewport's width. + * 1 means identical width, 2 means image's width is twice the viewport's width... + * @function + * @param {Number} viewportZoom The viewport zoom + * @returns {Number} imageZoom The image zoom + */ + viewportToImageZoom: function( viewportZoom ) { + var ratio = this._scaleSpring.current.value * + this.viewport._containerInnerSize.x / this.source.dimensions.x; + return ratio * viewportZoom ; + }, + + /** + * Convert an image zoom to a viewport zoom. + * Image zoom: ratio of the original image size to displayed image size. + * 1 means original image size, 0.5 half size... + * Viewport zoom: ratio of the displayed image's width to viewport's width. + * 1 means identical width, 2 means image's width is twice the viewport's width... + * Note: not accurate with multi-image. + * @function + * @param {Number} imageZoom The image zoom + * @returns {Number} viewportZoom The viewport zoom + */ + imageToViewportZoom: function( imageZoom ) { + var ratio = this._scaleSpring.current.value * + this.viewport._containerInnerSize.x / this.source.dimensions.x; + return imageZoom / ratio; + }, + + /** + * Sets the TiledImage's position in the world. + * @param {OpenSeadragon.Point} position - The new position, in viewport coordinates. + * @param {Boolean} [immediately=false] - Whether to animate to the new position or snap immediately. + * @fires OpenSeadragon.TiledImage.event:bounds-change + */ + setPosition: function(position, immediately) { + var sameTarget = (this._xSpring.target.value === position.x && + this._ySpring.target.value === position.y); + + if (immediately) { + if (sameTarget && this._xSpring.current.value === position.x && + this._ySpring.current.value === position.y) { + return; + } + + this._xSpring.resetTo(position.x); + this._ySpring.resetTo(position.y); + this._needsDraw = true; + } else { + if (sameTarget) { + return; + } + + this._xSpring.springTo(position.x); + this._ySpring.springTo(position.y); + this._needsDraw = true; + } + + if (!sameTarget) { + this._raiseBoundsChange(); + } + }, + + /** + * Sets the TiledImage's width in the world, adjusting the height to match based on aspect ratio. + * @param {Number} width - The new width, in viewport coordinates. + * @param {Boolean} [immediately=false] - Whether to animate to the new size or snap immediately. + * @fires OpenSeadragon.TiledImage.event:bounds-change + */ + setWidth: function(width, immediately) { + this._setScale(width, immediately); + }, + + /** + * Sets the TiledImage's height in the world, adjusting the width to match based on aspect ratio. + * @param {Number} height - The new height, in viewport coordinates. + * @param {Boolean} [immediately=false] - Whether to animate to the new size or snap immediately. + * @fires OpenSeadragon.TiledImage.event:bounds-change + */ + setHeight: function(height, immediately) { + this._setScale(height / this.normHeight, immediately); + }, + + /** + * Positions and scales the TiledImage to fit in the specified bounds. + * Note: this method fires OpenSeadragon.TiledImage.event:bounds-change + * twice + * @param {OpenSeadragon.Rect} bounds The bounds to fit the image into. + * @param {OpenSeadragon.Placement} [anchor=OpenSeadragon.Placement.CENTER] + * How to anchor the image in the bounds. + * @param {Boolean} [immediately=false] Whether to animate to the new size + * or snap immediately. + * @fires OpenSeadragon.TiledImage.event:bounds-change + */ + fitBounds: function(bounds, anchor, immediately) { + anchor = anchor || $.Placement.CENTER; + var anchorProperties = $.Placement.properties[anchor]; + var aspectRatio = this.contentAspectX; + var xOffset = 0; + var yOffset = 0; + var displayedWidthRatio = 1; + var displayedHeightRatio = 1; + if (this._clip) { + aspectRatio = this._clip.getAspectRatio(); + displayedWidthRatio = this._clip.width / this.source.dimensions.x; + displayedHeightRatio = this._clip.height / this.source.dimensions.y; + if (bounds.getAspectRatio() > aspectRatio) { + xOffset = this._clip.x / this._clip.height * bounds.height; + yOffset = this._clip.y / this._clip.height * bounds.height; + } else { + xOffset = this._clip.x / this._clip.width * bounds.width; + yOffset = this._clip.y / this._clip.width * bounds.width; + } + } + + if (bounds.getAspectRatio() > aspectRatio) { + // We will have margins on the X axis + var height = bounds.height / displayedHeightRatio; + var marginLeft = 0; + if (anchorProperties.isHorizontallyCentered) { + marginLeft = (bounds.width - bounds.height * aspectRatio) / 2; + } else if (anchorProperties.isRight) { + marginLeft = bounds.width - bounds.height * aspectRatio; + } + this.setPosition( + new $.Point(bounds.x - xOffset + marginLeft, bounds.y - yOffset), + immediately); + this.setHeight(height, immediately); + } else { + // We will have margins on the Y axis + var width = bounds.width / displayedWidthRatio; + var marginTop = 0; + if (anchorProperties.isVerticallyCentered) { + marginTop = (bounds.height - bounds.width / aspectRatio) / 2; + } else if (anchorProperties.isBottom) { + marginTop = bounds.height - bounds.width / aspectRatio; + } + this.setPosition( + new $.Point(bounds.x - xOffset, bounds.y - yOffset + marginTop), + immediately); + this.setWidth(width, immediately); + } + }, + + /** + * @returns {OpenSeadragon.Rect|null} The TiledImage's current clip rectangle, + * in image pixels, or null if none. + */ + getClip: function() { + if (this._clip) { + return this._clip.clone(); + } + + return null; + }, + + /** + * @param {OpenSeadragon.Rect|null} newClip - An area, in image pixels, to clip to + * (portions of the image outside of this area will not be visible). Only works on + * browsers that support the HTML5 canvas. + */ + setClip: function(newClip) { + $.console.assert(!newClip || newClip instanceof $.Rect, + "[TiledImage.setClip] newClip must be an OpenSeadragon.Rect or null"); + + if (newClip instanceof $.Rect) { + this._clip = newClip.clone(); + } else { + this._clip = null; + } + + this._needsDraw = true; + }, + + /** + * @returns {Number} The TiledImage's current opacity. + */ + getOpacity: function() { + return this.opacity; + }, + + /** + * @param {Number} opacity Opacity the tiled image should be drawn at. + */ + setOpacity: function(opacity) { + this.opacity = opacity; + this._needsDraw = true; + }, + + /** + * @returns {String} The TiledImage's current compositeOperation. + */ + getCompositeOperation: function() { + return this.compositeOperation; + }, + + /** + * @param {String} compositeOperation the tiled image should be drawn with this globalCompositeOperation. + */ + setCompositeOperation: function(compositeOperation) { + this.compositeOperation = compositeOperation; + this._needsDraw = true; + }, + + // private + _setScale: function(scale, immediately) { + var sameTarget = (this._scaleSpring.target.value === scale); + if (immediately) { + if (sameTarget && this._scaleSpring.current.value === scale) { + return; + } + + this._scaleSpring.resetTo(scale); + this._updateForScale(); + this._needsDraw = true; + } else { + if (sameTarget) { + return; + } + + this._scaleSpring.springTo(scale); + this._updateForScale(); + this._needsDraw = true; + } + + if (!sameTarget) { + this._raiseBoundsChange(); + } + }, + + // private + _updateForScale: function() { + this._worldWidthTarget = this._scaleSpring.target.value; + this._worldHeightTarget = this.normHeight * this._scaleSpring.target.value; + this._worldWidthCurrent = this._scaleSpring.current.value; + this._worldHeightCurrent = this.normHeight * this._scaleSpring.current.value; + }, + + // private + _raiseBoundsChange: function() { + /** + * Raised when the TiledImage's bounds are changed. + * Note that this event is triggered only when the animation target is changed; + * not for every frame of animation. + * @event bounds-change + * @memberOf OpenSeadragon.TiledImage + * @type {object} + * @property {OpenSeadragon.World} eventSource - A reference to the TiledImage which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent('bounds-change'); + }, + + // private + _isBottomItem: function() { + return this.viewer.world.getItemAt(0) === this; + } +}); + +/** + * @private + * @inner + * Pretty much every other line in this needs to be documented so it's clear + * how each piece of this routine contributes to the drawing process. That's + * why there are so many TODO's inside this function. + */ +function updateViewport( tiledImage ) { + + tiledImage._needsDraw = false; + + var tile, + level, + best = null, + haveDrawn = false, + currentTime = $.now(), + viewportBounds = tiledImage.viewport.getBoundsWithMargins( true ), + zeroRatioC = tiledImage.viewport.deltaPixelsFromPointsNoRotate( + tiledImage.source.getPixelRatio( 0 ), + true + ).x * tiledImage._scaleSpring.current.value, + lowestLevel = Math.max( + tiledImage.source.minLevel, + Math.floor( + Math.log( tiledImage.minZoomImageRatio ) / + Math.log( 2 ) + ) + ), + highestLevel = Math.min( + Math.abs(tiledImage.source.maxLevel), + Math.abs(Math.floor( + Math.log( zeroRatioC / tiledImage.minPixelRatio ) / + Math.log( 2 ) + )) + ), + renderPixelRatioC, + renderPixelRatioT, + zeroRatioT, + optimalRatio, + levelOpacity, + levelVisibility; + + // Reset tile's internal drawn state + while (tiledImage.lastDrawn.length > 0) { + tile = tiledImage.lastDrawn.pop(); + tile.beingDrawn = false; + } + + if (!tiledImage.wrapHorizontal && !tiledImage.wrapVertical) { + var tiledImageBounds = tiledImage.getClippedBounds(true); + var intersection = viewportBounds.intersection(tiledImageBounds); + if (intersection === null) { + return; + } + viewportBounds = intersection; + } + viewportBounds = viewportBounds.getBoundingBox(); + viewportBounds.x -= tiledImage._xSpring.current.value; + viewportBounds.y -= tiledImage._ySpring.current.value; + + var viewportTL = viewportBounds.getTopLeft(); + var viewportBR = viewportBounds.getBottomRight(); + + //Don't draw if completely outside of the viewport + if ( !tiledImage.wrapHorizontal && (viewportBR.x < 0 || viewportTL.x > tiledImage._worldWidthCurrent ) ) { + return; + } + + if ( !tiledImage.wrapVertical && ( viewportBR.y < 0 || viewportTL.y > tiledImage._worldHeightCurrent ) ) { + return; + } + + // Calculate viewport rect / bounds + if ( !tiledImage.wrapHorizontal ) { + viewportTL.x = Math.max( viewportTL.x, 0 ); + viewportBR.x = Math.min( viewportBR.x, tiledImage._worldWidthCurrent ); + } + + if ( !tiledImage.wrapVertical ) { + viewportTL.y = Math.max( viewportTL.y, 0 ); + viewportBR.y = Math.min( viewportBR.y, tiledImage._worldHeightCurrent ); + } + + // Calculations for the interval of levels to draw + // (above in initial var statement) + // can return invalid intervals; fix that here if necessary + lowestLevel = Math.min( lowestLevel, highestLevel ); + + // Update any level that will be drawn + var drawLevel; // FIXME: drawLevel should have a more explanatory name + for ( level = highestLevel; level >= lowestLevel; level-- ) { + drawLevel = false; + + //Avoid calculations for draw if we have already drawn this + renderPixelRatioC = tiledImage.viewport.deltaPixelsFromPointsNoRotate( + tiledImage.source.getPixelRatio( level ), + true + ).x * tiledImage._scaleSpring.current.value; + + if ( ( !haveDrawn && renderPixelRatioC >= tiledImage.minPixelRatio ) || + ( level == lowestLevel ) ) { + drawLevel = true; + haveDrawn = true; + } else if ( !haveDrawn ) { + continue; + } + + //Perform calculations for draw if we haven't drawn this + renderPixelRatioT = tiledImage.viewport.deltaPixelsFromPointsNoRotate( + tiledImage.source.getPixelRatio( level ), + false + ).x * tiledImage._scaleSpring.current.value; + + zeroRatioT = tiledImage.viewport.deltaPixelsFromPointsNoRotate( + tiledImage.source.getPixelRatio( + Math.max( + tiledImage.source.getClosestLevel( tiledImage.viewport.containerSize ) - 1, + 0 + ) + ), + false + ).x * tiledImage._scaleSpring.current.value; + + optimalRatio = tiledImage.immediateRender ? + 1 : + zeroRatioT; + + levelOpacity = Math.min( 1, ( renderPixelRatioC - 0.5 ) / 0.5 ); + + levelVisibility = optimalRatio / Math.abs( + optimalRatio - renderPixelRatioT + ); + + // Update the level and keep track of 'best' tile to load + best = updateLevel( + tiledImage, + haveDrawn, + drawLevel, + level, + levelOpacity, + levelVisibility, + viewportTL, + viewportBR, + currentTime, + best + ); + + // Stop the loop if lower-res tiles would all be covered by + // already drawn tiles + if ( providesCoverage( tiledImage.coverage, level ) ) { + break; + } + } + + // Perform the actual drawing + drawTiles( tiledImage, tiledImage.lastDrawn ); + + // Load the new 'best' tile + if (best && !best.context2D) { + loadTile( tiledImage, best, currentTime ); + } + +} + + +function updateLevel( tiledImage, haveDrawn, drawLevel, level, levelOpacity, levelVisibility, viewportTL, viewportBR, currentTime, best ){ + + var x, y, + tileTL, + tileBR, + numberOfTiles, + viewportCenter = tiledImage.viewport.pixelFromPoint( tiledImage.viewport.getCenter() ); + + + if( tiledImage.viewer ){ + /** + * - Needs documentation - + * + * @event update-level + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @property {Object} havedrawn + * @property {Object} level + * @property {Object} opacity + * @property {Object} visibility + * @property {Object} topleft + * @property {Object} bottomright + * @property {Object} currenttime + * @property {Object} best + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + tiledImage.viewer.raiseEvent( 'update-level', { + tiledImage: tiledImage, + havedrawn: haveDrawn, + level: level, + opacity: levelOpacity, + visibility: levelVisibility, + topleft: viewportTL, + bottomright: viewportBR, + currenttime: currentTime, + best: best + }); + } + + //OK, a new drawing so do your calculations + tileTL = tiledImage.source.getTileAtPoint( level, viewportTL.divide( tiledImage._scaleSpring.current.value )); + tileBR = tiledImage.source.getTileAtPoint( level, viewportBR.divide( tiledImage._scaleSpring.current.value )); + numberOfTiles = tiledImage.source.getNumTiles( level ); + + resetCoverage( tiledImage.coverage, level ); + + if ( !tiledImage.wrapHorizontal ) { + tileBR.x = Math.min( tileBR.x, numberOfTiles.x - 1 ); + } + if ( !tiledImage.wrapVertical ) { + tileBR.y = Math.min( tileBR.y, numberOfTiles.y - 1 ); + } + + for ( x = tileTL.x; x <= tileBR.x; x++ ) { + for ( y = tileTL.y; y <= tileBR.y; y++ ) { + + best = updateTile( + tiledImage, + drawLevel, + haveDrawn, + x, y, + level, + levelOpacity, + levelVisibility, + viewportCenter, + numberOfTiles, + currentTime, + best + ); + + } + } + + return best; +} + +function updateTile( tiledImage, drawLevel, haveDrawn, x, y, level, levelOpacity, levelVisibility, viewportCenter, numberOfTiles, currentTime, best){ + + var tile = getTile( + x, y, + level, + tiledImage.source, + tiledImage.tilesMatrix, + currentTime, + numberOfTiles, + tiledImage._worldWidthCurrent, + tiledImage._worldHeightCurrent + ), + drawTile = drawLevel; + + if( tiledImage.viewer ){ + /** + * - Needs documentation - + * + * @event update-tile + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @property {OpenSeadragon.Tile} tile + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + tiledImage.viewer.raiseEvent( 'update-tile', { + tiledImage: tiledImage, + tile: tile + }); + } + + setCoverage( tiledImage.coverage, level, x, y, false ); + + if ( !tile.exists ) { + return best; + } + + if ( haveDrawn && !drawTile ) { + if ( isCovered( tiledImage.coverage, level, x, y ) ) { + setCoverage( tiledImage.coverage, level, x, y, true ); + } else { + drawTile = true; + } + } + + if ( !drawTile ) { + return best; + } + + positionTile( + tile, + tiledImage.source.tileOverlap, + tiledImage.viewport, + viewportCenter, + levelVisibility, + tiledImage + ); + + if (!tile.loaded) { + if (tile.context2D) { + setTileLoaded(tiledImage, tile); + } else { + var imageRecord = tiledImage._tileCache.getImageRecord(tile.url); + if (imageRecord) { + var image = imageRecord.getImage(); + setTileLoaded(tiledImage, tile, image); + } + } + } + + if ( tile.loaded ) { + var needsDraw = blendTile( + tiledImage, + tile, + x, y, + level, + levelOpacity, + currentTime + ); + + if ( needsDraw ) { + tiledImage._needsDraw = true; + } + } else if ( tile.loading ) { + // the tile is already in the download queue + // thanks josh1093 for finally translating this typo + } else { + best = compareTiles( best, tile ); + } + + return best; +} + +function getTile( x, y, level, tileSource, tilesMatrix, time, numTiles, worldWidth, worldHeight ) { + var xMod, + yMod, + bounds, + exists, + url, + context2D, + tile; + + if ( !tilesMatrix[ level ] ) { + tilesMatrix[ level ] = {}; + } + if ( !tilesMatrix[ level ][ x ] ) { + tilesMatrix[ level ][ x ] = {}; + } + + if ( !tilesMatrix[ level ][ x ][ y ] ) { + xMod = ( numTiles.x + ( x % numTiles.x ) ) % numTiles.x; + yMod = ( numTiles.y + ( y % numTiles.y ) ) % numTiles.y; + bounds = tileSource.getTileBounds( level, xMod, yMod ); + exists = tileSource.tileExists( level, xMod, yMod ); + url = tileSource.getTileUrl( level, xMod, yMod ); + context2D = tileSource.getContext2D ? + tileSource.getContext2D(level, xMod, yMod) : undefined; + + bounds.x += ( x - xMod ) / numTiles.x; + bounds.y += (worldHeight / worldWidth) * (( y - yMod ) / numTiles.y); + + tilesMatrix[ level ][ x ][ y ] = new $.Tile( + level, + x, + y, + bounds, + exists, + url, + context2D + ); + } + + tile = tilesMatrix[ level ][ x ][ y ]; + tile.lastTouchTime = time; + + return tile; +} + +function loadTile( tiledImage, tile, time ) { + tile.loading = true; + tiledImage._imageLoader.addJob({ + src: tile.url, + crossOriginPolicy: tiledImage.crossOriginPolicy, + callback: function( image, errorMsg ){ + onTileLoad( tiledImage, tile, time, image, errorMsg ); + }, + abort: function() { + tile.loading = false; + } + }); +} + +function onTileLoad( tiledImage, tile, time, image, errorMsg ) { + if ( !image ) { + $.console.log( "Tile %s failed to load: %s - error: %s", tile, tile.url, errorMsg ); + /** + * Triggered when a tile fails to load. + * + * @event tile-load-failed + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Tile} tile - The tile that failed to load. + * @property {OpenSeadragon.TiledImage} tiledImage - The tiled image the tile belongs to. + * @property {number} time - The time in milliseconds when the tile load began. + * @property {string} message - The error message. + */ + tiledImage.viewer.raiseEvent("tile-load-failed", {tile: tile, tiledImage: tiledImage, time: time, message: errorMsg}); + tile.loading = false; + tile.exists = false; + return; + } + + if ( time < tiledImage.lastResetTime ) { + $.console.log( "Ignoring tile %s loaded before reset: %s", tile, tile.url ); + tile.loading = false; + return; + } + + var finish = function() { + var cutoff = Math.ceil( Math.log( + tiledImage.source.getTileWidth(tile.level) ) / Math.log( 2 ) ); + setTileLoaded(tiledImage, tile, image, cutoff); + }; + + // Check if we're mid-update; this can happen on IE8 because image load events for + // cached images happen immediately there + if ( !tiledImage._midDraw ) { + finish(); + } else { + // Wait until after the update, in case caching unloads any tiles + window.setTimeout( finish, 1); + } +} + +function setTileLoaded(tiledImage, tile, image, cutoff) { + var increment = 0; + + function getCompletionCallback() { + increment++; + return completionCallback; + } + + function completionCallback() { + increment--; + if (increment === 0) { + tile.loading = false; + tile.loaded = true; + if (!tile.context2D) { + tiledImage._tileCache.cacheTile({ + image: image, + tile: tile, + cutoff: cutoff, + tiledImage: tiledImage + }); + } + tiledImage._needsDraw = true; + } + } + + /** + * Triggered when a tile has just been loaded in memory. That means that the + * image has been downloaded and can be modified before being drawn to the canvas. + * + * @event tile-loaded + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {Image} image - The image of the tile. + * @property {OpenSeadragon.TiledImage} tiledImage - The tiled image of the loaded tile. + * @property {OpenSeadragon.Tile} tile - The tile which has been loaded. + * @property {function} getCompletionCallback - A function giving a callback to call + * when the asynchronous processing of the image is done. The image will be + * marked as entirely loaded when the callback has been called once for each + * call to getCompletionCallback. + */ + tiledImage.viewer.raiseEvent("tile-loaded", { + tile: tile, + tiledImage: tiledImage, + image: image, + getCompletionCallback: getCompletionCallback + }); + // In case the completion callback is never called, we at least force it once. + getCompletionCallback()(); +} + +function positionTile( tile, overlap, viewport, viewportCenter, levelVisibility, tiledImage ){ + var boundsTL = tile.bounds.getTopLeft(); + + boundsTL.x *= tiledImage._scaleSpring.current.value; + boundsTL.y *= tiledImage._scaleSpring.current.value; + boundsTL.x += tiledImage._xSpring.current.value; + boundsTL.y += tiledImage._ySpring.current.value; + + var boundsSize = tile.bounds.getSize(); + + boundsSize.x *= tiledImage._scaleSpring.current.value; + boundsSize.y *= tiledImage._scaleSpring.current.value; + + var positionC = viewport.pixelFromPointNoRotate(boundsTL, true), + positionT = viewport.pixelFromPointNoRotate(boundsTL, false), + sizeC = viewport.deltaPixelsFromPointsNoRotate(boundsSize, true), + sizeT = viewport.deltaPixelsFromPointsNoRotate(boundsSize, false), + tileCenter = positionT.plus( sizeT.divide( 2 ) ), + tileDistance = viewportCenter.distanceTo( tileCenter ); + + if ( !overlap ) { + sizeC = sizeC.plus( new $.Point( 1, 1 ) ); + } + + tile.position = positionC; + tile.size = sizeC; + tile.distance = tileDistance; + tile.visibility = levelVisibility; +} + + +function blendTile( tiledImage, tile, x, y, level, levelOpacity, currentTime ){ + var blendTimeMillis = 1000 * tiledImage.blendTime, + deltaTime, + opacity; + + if ( !tile.blendStart ) { + tile.blendStart = currentTime; + } + + deltaTime = currentTime - tile.blendStart; + opacity = blendTimeMillis ? Math.min( 1, deltaTime / ( blendTimeMillis ) ) : 1; + + if ( tiledImage.alwaysBlend ) { + opacity *= levelOpacity; + } + + tile.opacity = opacity; + + tiledImage.lastDrawn.push( tile ); + + if ( opacity == 1 ) { + setCoverage( tiledImage.coverage, level, x, y, true ); + tiledImage._hasOpaqueTile = true; + } else if ( deltaTime < blendTimeMillis ) { + return true; + } + + return false; +} + +/** + * @private + * @inner + * Returns true if the given tile provides coverage to lower-level tiles of + * lower resolution representing the same content. If neither x nor y is + * given, returns true if the entire visible level provides coverage. + * + * Note that out-of-bounds tiles provide coverage in this sense, since + * there's no content that they would need to cover. Tiles at non-existent + * levels that are within the image bounds, however, do not. + */ +function providesCoverage( coverage, level, x, y ) { + var rows, + cols, + i, j; + + if ( !coverage[ level ] ) { + return false; + } + + if ( x === undefined || y === undefined ) { + rows = coverage[ level ]; + for ( i in rows ) { + if ( rows.hasOwnProperty( i ) ) { + cols = rows[ i ]; + for ( j in cols ) { + if ( cols.hasOwnProperty( j ) && !cols[ j ] ) { + return false; + } + } + } + } + + return true; + } + + return ( + coverage[ level ][ x] === undefined || + coverage[ level ][ x ][ y ] === undefined || + coverage[ level ][ x ][ y ] === true + ); +} + +/** + * @private + * @inner + * Returns true if the given tile is completely covered by higher-level + * tiles of higher resolution representing the same content. If neither x + * nor y is given, returns true if the entire visible level is covered. + */ +function isCovered( coverage, level, x, y ) { + if ( x === undefined || y === undefined ) { + return providesCoverage( coverage, level + 1 ); + } else { + return ( + providesCoverage( coverage, level + 1, 2 * x, 2 * y ) && + providesCoverage( coverage, level + 1, 2 * x, 2 * y + 1 ) && + providesCoverage( coverage, level + 1, 2 * x + 1, 2 * y ) && + providesCoverage( coverage, level + 1, 2 * x + 1, 2 * y + 1 ) + ); + } +} + +/** + * @private + * @inner + * Sets whether the given tile provides coverage or not. + */ +function setCoverage( coverage, level, x, y, covers ) { + if ( !coverage[ level ] ) { + $.console.warn( + "Setting coverage for a tile before its level's coverage has been reset: %s", + level + ); + return; + } + + if ( !coverage[ level ][ x ] ) { + coverage[ level ][ x ] = {}; + } + + coverage[ level ][ x ][ y ] = covers; +} + +/** + * @private + * @inner + * Resets coverage information for the given level. This should be called + * after every draw routine. Note that at the beginning of the next draw + * routine, coverage for every visible tile should be explicitly set. + */ +function resetCoverage( coverage, level ) { + coverage[ level ] = {}; +} + +/** + * @private + * @inner + * Determines whether the 'last best' tile for the area is better than the + * tile in question. + */ +function compareTiles( previousBest, tile ) { + if ( !previousBest ) { + return tile; + } + + if ( tile.visibility > previousBest.visibility ) { + return tile; + } else if ( tile.visibility == previousBest.visibility ) { + if ( tile.distance < previousBest.distance ) { + return tile; + } + } + + return previousBest; +} + +function drawTiles( tiledImage, lastDrawn ) { + if (lastDrawn.length === 0) { + return; + } + var tile = lastDrawn[0]; + + var useSketch = tiledImage.opacity < 1 || + (tiledImage.compositeOperation && + tiledImage.compositeOperation !== 'source-over') || + (!tiledImage._isBottomItem() && tile._hasTransparencyChannel()); + + var sketchScale; + var sketchTranslate; + + var zoom = tiledImage.viewport.getZoom(true); + var imageZoom = tiledImage.viewportToImageZoom(zoom); + if (imageZoom > tiledImage.smoothTileEdgesMinZoom && !tiledImage.iOSDevice) { + // When zoomed in a lot (>100%) the tile edges are visible. + // So we have to composite them at ~100% and scale them up together. + // Note: Disabled on iOS devices per default as it causes a native crash + useSketch = true; + sketchScale = tile.getScaleForEdgeSmoothing(); + sketchTranslate = tile.getTranslationForEdgeSmoothing(sketchScale, + tiledImage._drawer.getCanvasSize(false), + tiledImage._drawer.getCanvasSize(true)); + } + + var bounds; + if (useSketch) { + if (!sketchScale) { + // Except when edge smoothing, we only clean the part of the + // sketch canvas we are going to use for performance reasons. + bounds = tiledImage.viewport.viewportToViewerElementRectangle( + tiledImage.getClippedBounds(true)) + .getIntegerBoundingBox() + .times($.pixelDensityRatio); + } + tiledImage._drawer._clear(true, bounds); + } + + // When scaling, we must rotate only when blending the sketch canvas to avoid + // interpolation + if (tiledImage.viewport.degrees !== 0 && !sketchScale) { + tiledImage._drawer._offsetForRotation(tiledImage.viewport.degrees, useSketch); + } + + var usedClip = false; + if ( tiledImage._clip ) { + tiledImage._drawer.saveContext(useSketch); + + var box = tiledImage.imageToViewportRectangle(tiledImage._clip, true); + var clipRect = tiledImage._drawer.viewportToDrawerRectangle(box); + if (sketchScale) { + clipRect = clipRect.times(sketchScale); + } + if (sketchTranslate) { + clipRect = clipRect.translate(sketchTranslate); + } + tiledImage._drawer.setClip(clipRect, useSketch); + + usedClip = true; + } + + if ( tiledImage.placeholderFillStyle && tiledImage._hasOpaqueTile === false ) { + var placeholderRect = tiledImage._drawer.viewportToDrawerRectangle(tiledImage.getBounds(true)); + if (sketchScale) { + placeholderRect = placeholderRect.times(sketchScale); + } + if (sketchTranslate) { + placeholderRect = placeholderRect.translate(sketchTranslate); + } + + var fillStyle = null; + if ( typeof tiledImage.placeholderFillStyle === "function" ) { + fillStyle = tiledImage.placeholderFillStyle(tiledImage, tiledImage._drawer.context); + } + else { + fillStyle = tiledImage.placeholderFillStyle; + } + + tiledImage._drawer.drawRectangle(placeholderRect, fillStyle, useSketch); + } + + for (var i = lastDrawn.length - 1; i >= 0; i--) { + tile = lastDrawn[ i ]; + tiledImage._drawer.drawTile( tile, tiledImage._drawingHandler, useSketch, sketchScale, sketchTranslate ); + tile.beingDrawn = true; + + if( tiledImage.viewer ){ + /** + * - Needs documentation - + * + * @event tile-drawn + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {OpenSeadragon.TiledImage} tiledImage - Which TiledImage is being drawn. + * @property {OpenSeadragon.Tile} tile + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + tiledImage.viewer.raiseEvent( 'tile-drawn', { + tiledImage: tiledImage, + tile: tile + }); + } + } + + if ( usedClip ) { + tiledImage._drawer.restoreContext( useSketch ); + } + + if (tiledImage.viewport.degrees !== 0 && !sketchScale) { + tiledImage._drawer._restoreRotationChanges(useSketch); + } + + if (useSketch) { + var offsetForRotation = tiledImage.viewport.degrees !== 0 && sketchScale; + if (offsetForRotation) { + tiledImage._drawer._offsetForRotation(tiledImage.viewport.degrees, false); + } + tiledImage._drawer.blendSketch({ + opacity: tiledImage.opacity, + scale: sketchScale, + translate: sketchTranslate, + compositeOperation: tiledImage.compositeOperation, + bounds: bounds + }); + if (offsetForRotation) { + tiledImage._drawer._restoreRotationChanges(false); + } + } + drawDebugInfo( tiledImage, lastDrawn ); +} + +function drawDebugInfo( tiledImage, lastDrawn ) { + if( tiledImage.debugMode ) { + for ( var i = lastDrawn.length - 1; i >= 0; i-- ) { + var tile = lastDrawn[ i ]; + try { + tiledImage._drawer.drawDebugInfo( tile, lastDrawn.length, i ); + } catch(e) { + $.console.error(e); + } + } + } +} + +}( OpenSeadragon )); + +/* + * OpenSeadragon - TileCache + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +// private class +var TileRecord = function( options ) { + $.console.assert( options, "[TileCache.cacheTile] options is required" ); + $.console.assert( options.tile, "[TileCache.cacheTile] options.tile is required" ); + $.console.assert( options.tiledImage, "[TileCache.cacheTile] options.tiledImage is required" ); + this.tile = options.tile; + this.tiledImage = options.tiledImage; +}; + +// private class +var ImageRecord = function(options) { + $.console.assert( options, "[ImageRecord] options is required" ); + $.console.assert( options.image, "[ImageRecord] options.image is required" ); + this._image = options.image; + this._tiles = []; +}; + +ImageRecord.prototype = { + destroy: function() { + this._image = null; + this._renderedContext = null; + this._tiles = null; + }, + + getImage: function() { + return this._image; + }, + + getRenderedContext: function() { + if (!this._renderedContext) { + var canvas = document.createElement( 'canvas' ); + canvas.width = this._image.width; + canvas.height = this._image.height; + this._renderedContext = canvas.getContext('2d'); + this._renderedContext.drawImage( this._image, 0, 0 ); + //since we are caching the prerendered image on a canvas + //allow the image to not be held in memory + this._image = null; + } + return this._renderedContext; + }, + + setRenderedContext: function(renderedContext) { + $.console.error("ImageRecord.setRenderedContext is deprecated. " + + "The rendered context should be created by the ImageRecord " + + "itself when calling ImageRecord.getRenderedContext."); + this._renderedContext = renderedContext; + }, + + addTile: function(tile) { + $.console.assert(tile, '[ImageRecord.addTile] tile is required'); + this._tiles.push(tile); + }, + + removeTile: function(tile) { + for (var i = 0; i < this._tiles.length; i++) { + if (this._tiles[i] === tile) { + this._tiles.splice(i, 1); + return; + } + } + + $.console.warn('[ImageRecord.removeTile] trying to remove unknown tile', tile); + }, + + getTileCount: function() { + return this._tiles.length; + } +}; + +/** + * @class TileCache + * @memberof OpenSeadragon + * @classdesc Stores all the tiles displayed in a {@link OpenSeadragon.Viewer}. + * You generally won't have to interact with the TileCache directly. + * @param {Object} options - Configuration for this TileCache. + * @param {Number} [options.maxImageCacheCount] - See maxImageCacheCount in + * {@link OpenSeadragon.Options} for details. + */ +$.TileCache = function( options ) { + options = options || {}; + + this._maxImageCacheCount = options.maxImageCacheCount || $.DEFAULT_SETTINGS.maxImageCacheCount; + this._tilesLoaded = []; + this._imagesLoaded = []; + this._imagesLoadedCount = 0; +}; + +/** @lends OpenSeadragon.TileCache.prototype */ +$.TileCache.prototype = { + /** + * @returns {Number} The total number of tiles that have been loaded by + * this TileCache. + */ + numTilesLoaded: function() { + return this._tilesLoaded.length; + }, + + /** + * Caches the specified tile, removing an old tile if necessary to stay under the + * maxImageCacheCount specified on construction. Note that if multiple tiles reference + * the same image, there may be more tiles than maxImageCacheCount; the goal is to keep + * the number of images below that number. Note, as well, that even the number of images + * may temporarily surpass that number, but should eventually come back down to the max specified. + * @param {Object} options - Tile info. + * @param {OpenSeadragon.Tile} options.tile - The tile to cache. + * @param {Image} options.image - The image of the tile to cache. + * @param {OpenSeadragon.TiledImage} options.tiledImage - The TiledImage that owns that tile. + * @param {Number} [options.cutoff=0] - If adding this tile goes over the cache max count, this + * function will release an old tile. The cutoff option specifies a tile level at or below which + * tiles will not be released. + */ + cacheTile: function( options ) { + $.console.assert( options, "[TileCache.cacheTile] options is required" ); + $.console.assert( options.tile, "[TileCache.cacheTile] options.tile is required" ); + $.console.assert( options.tile.url, "[TileCache.cacheTile] options.tile.url is required" ); + $.console.assert( options.tiledImage, "[TileCache.cacheTile] options.tiledImage is required" ); + + var cutoff = options.cutoff || 0; + var insertionIndex = this._tilesLoaded.length; + + var imageRecord = this._imagesLoaded[options.tile.url]; + if (!imageRecord) { + $.console.assert( options.image, "[TileCache.cacheTile] options.image is required to create an ImageRecord" ); + imageRecord = this._imagesLoaded[options.tile.url] = new ImageRecord({ + image: options.image + }); + + this._imagesLoadedCount++; + } + + imageRecord.addTile(options.tile); + options.tile.cacheImageRecord = imageRecord; + + // Note that just because we're unloading a tile doesn't necessarily mean + // we're unloading an image. With repeated calls it should sort itself out, though. + if ( this._imagesLoadedCount > this._maxImageCacheCount ) { + var worstTile = null; + var worstTileIndex = -1; + var worstTileRecord = null; + var prevTile, worstTime, worstLevel, prevTime, prevLevel, prevTileRecord; + + for ( var i = this._tilesLoaded.length - 1; i >= 0; i-- ) { + prevTileRecord = this._tilesLoaded[ i ]; + prevTile = prevTileRecord.tile; + + if ( prevTile.level <= cutoff || prevTile.beingDrawn ) { + continue; + } else if ( !worstTile ) { + worstTile = prevTile; + worstTileIndex = i; + worstTileRecord = prevTileRecord; + continue; + } + + prevTime = prevTile.lastTouchTime; + worstTime = worstTile.lastTouchTime; + prevLevel = prevTile.level; + worstLevel = worstTile.level; + + if ( prevTime < worstTime || + ( prevTime == worstTime && prevLevel > worstLevel ) ) { + worstTile = prevTile; + worstTileIndex = i; + worstTileRecord = prevTileRecord; + } + } + + if ( worstTile && worstTileIndex >= 0 ) { + this._unloadTile(worstTileRecord); + insertionIndex = worstTileIndex; + } + } + + this._tilesLoaded[ insertionIndex ] = new TileRecord({ + tile: options.tile, + tiledImage: options.tiledImage + }); + }, + + /** + * Clears all tiles associated with the specified tiledImage. + * @param {OpenSeadragon.TiledImage} tiledImage + */ + clearTilesFor: function( tiledImage ) { + $.console.assert(tiledImage, '[TileCache.clearTilesFor] tiledImage is required'); + var tileRecord; + for ( var i = 0; i < this._tilesLoaded.length; ++i ) { + tileRecord = this._tilesLoaded[ i ]; + if ( tileRecord.tiledImage === tiledImage ) { + this._unloadTile(tileRecord); + this._tilesLoaded.splice( i, 1 ); + i--; + } + } + }, + + // private + getImageRecord: function(url) { + $.console.assert(url, '[TileCache.getImageRecord] url is required'); + return this._imagesLoaded[url]; + }, + + // private + _unloadTile: function(tileRecord) { + $.console.assert(tileRecord, '[TileCache._unloadTile] tileRecord is required'); + var tile = tileRecord.tile; + var tiledImage = tileRecord.tiledImage; + + tile.unload(); + tile.cacheImageRecord = null; + + var imageRecord = this._imagesLoaded[tile.url]; + imageRecord.removeTile(tile); + if (!imageRecord.getTileCount()) { + imageRecord.destroy(); + delete this._imagesLoaded[tile.url]; + this._imagesLoadedCount--; + } + + /** + * Triggered when a tile has just been unloaded from memory. + * + * @event tile-unloaded + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.TiledImage} tiledImage - The tiled image of the unloaded tile. + * @property {OpenSeadragon.Tile} tile - The tile which has been unloaded. + */ + tiledImage.viewer.raiseEvent("tile-unloaded", { + tile: tile, + tiledImage: tiledImage + }); + } +}; + +}( OpenSeadragon )); + +/* + * OpenSeadragon - World + * + * Copyright (C) 2009 CodePlex Foundation + * Copyright (C) 2010-2013 OpenSeadragon contributors + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of CodePlex Foundation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function( $ ){ + +/** + * @class World + * @memberof OpenSeadragon + * @extends OpenSeadragon.EventSource + * @classdesc Keeps track of all of the tiled images in the scene. + * @param {Object} options - World options. + * @param {OpenSeadragon.Viewer} options.viewer - The Viewer that owns this World. + **/ +$.World = function( options ) { + var _this = this; + + $.console.assert( options.viewer, "[World] options.viewer is required" ); + + $.EventSource.call( this ); + + this.viewer = options.viewer; + this._items = []; + this._needsDraw = false; + this._autoRefigureSizes = true; + this._needsSizesFigured = false; + this._delegatedFigureSizes = function(event) { + if (_this._autoRefigureSizes) { + _this._figureSizes(); + } else { + _this._needsSizesFigured = true; + } + }; + + this._figureSizes(); +}; + +$.extend( $.World.prototype, $.EventSource.prototype, /** @lends OpenSeadragon.World.prototype */{ + /** + * Add the specified item. + * @param {OpenSeadragon.TiledImage} item - The item to add. + * @param {Number} [options.index] - Index for the item. If not specified, goes at the top. + * @fires OpenSeadragon.World.event:add-item + * @fires OpenSeadragon.World.event:metrics-change + */ + addItem: function( item, options ) { + $.console.assert(item, "[World.addItem] item is required"); + $.console.assert(item instanceof $.TiledImage, "[World.addItem] only TiledImages supported at this time"); + + options = options || {}; + if (options.index !== undefined) { + var index = Math.max(0, Math.min(this._items.length, options.index)); + this._items.splice(index, 0, item); + } else { + this._items.push( item ); + } + + if (this._autoRefigureSizes) { + this._figureSizes(); + } else { + this._needsSizesFigured = true; + } + + this._needsDraw = true; + + item.addHandler('bounds-change', this._delegatedFigureSizes); + + /** + * Raised when an item is added to the World. + * @event add-item + * @memberOf OpenSeadragon.World + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the World which raised the event. + * @property {OpenSeadragon.TiledImage} item - The item that has been added. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'add-item', { + item: item + } ); + }, + + /** + * Get the item at the specified index. + * @param {Number} index - The item's index. + * @returns {OpenSeadragon.TiledImage} The item at the specified index. + */ + getItemAt: function( index ) { + $.console.assert(index !== undefined, "[World.getItemAt] index is required"); + return this._items[ index ]; + }, + + /** + * Get the index of the given item or -1 if not present. + * @param {OpenSeadragon.TiledImage} item - The item. + * @returns {Number} The index of the item or -1 if not present. + */ + getIndexOfItem: function( item ) { + $.console.assert(item, "[World.getIndexOfItem] item is required"); + return $.indexOf( this._items, item ); + }, + + /** + * @returns {Number} The number of items used. + */ + getItemCount: function() { + return this._items.length; + }, + + /** + * Change the index of a item so that it appears over or under others. + * @param {OpenSeadragon.TiledImage} item - The item to move. + * @param {Number} index - The new index. + * @fires OpenSeadragon.World.event:item-index-change + */ + setItemIndex: function( item, index ) { + $.console.assert(item, "[World.setItemIndex] item is required"); + $.console.assert(index !== undefined, "[World.setItemIndex] index is required"); + + var oldIndex = this.getIndexOfItem( item ); + + if ( index >= this._items.length ) { + throw new Error( "Index bigger than number of layers." ); + } + + if ( index === oldIndex || oldIndex === -1 ) { + return; + } + + this._items.splice( oldIndex, 1 ); + this._items.splice( index, 0, item ); + this._needsDraw = true; + + /** + * Raised when the order of the indexes has been changed. + * @event item-index-change + * @memberOf OpenSeadragon.World + * @type {object} + * @property {OpenSeadragon.World} eventSource - A reference to the World which raised the event. + * @property {OpenSeadragon.TiledImage} item - The item whose index has + * been changed + * @property {Number} previousIndex - The previous index of the item + * @property {Number} newIndex - The new index of the item + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'item-index-change', { + item: item, + previousIndex: oldIndex, + newIndex: index + } ); + }, + + /** + * Remove an item. + * @param {OpenSeadragon.TiledImage} item - The item to remove. + * @fires OpenSeadragon.World.event:remove-item + * @fires OpenSeadragon.World.event:metrics-change + */ + removeItem: function( item ) { + $.console.assert(item, "[World.removeItem] item is required"); + + var index = $.indexOf(this._items, item ); + if ( index === -1 ) { + return; + } + + item.removeHandler('bounds-change', this._delegatedFigureSizes); + item.destroy(); + this._items.splice( index, 1 ); + this._figureSizes(); + this._needsDraw = true; + this._raiseRemoveItem(item); + }, + + /** + * Remove all items. + * @fires OpenSeadragon.World.event:remove-item + * @fires OpenSeadragon.World.event:metrics-change + */ + removeAll: function() { + // We need to make sure any pending images are canceled so the world items don't get messed up + this.viewer._cancelPendingImages(); + var item; + for (var i = 0; i < this._items.length; i++) { + item = this._items[i]; + item.removeHandler('bounds-change', this._delegatedFigureSizes); + item.destroy(); + } + + var removedItems = this._items; + this._items = []; + this._figureSizes(); + this._needsDraw = true; + + for (i = 0; i < removedItems.length; i++) { + item = removedItems[i]; + this._raiseRemoveItem(item); + } + }, + + /** + * Clears all tiles and triggers updates for all items. + */ + resetItems: function() { + for ( var i = 0; i < this._items.length; i++ ) { + this._items[i].reset(); + } + }, + + /** + * Updates (i.e. animates bounds of) all items. + */ + update: function() { + var animated = false; + for ( var i = 0; i < this._items.length; i++ ) { + animated = this._items[i].update() || animated; + } + + return animated; + }, + + /** + * Draws all items. + */ + draw: function() { + for ( var i = 0; i < this._items.length; i++ ) { + this._items[i].draw(); + } + + this._needsDraw = false; + }, + + /** + * @returns {Boolean} true if any items need updating. + */ + needsDraw: function() { + for ( var i = 0; i < this._items.length; i++ ) { + if ( this._items[i].needsDraw() ) { + return true; + } + } + return this._needsDraw; + }, + + /** + * @returns {OpenSeadragon.Rect} The smallest rectangle that encloses all items, in viewport coordinates. + */ + getHomeBounds: function() { + return this._homeBounds.clone(); + }, + + /** + * To facilitate zoom constraints, we keep track of the pixel density of the + * densest item in the World (i.e. the item whose content size to viewport size + * ratio is the highest) and save it as this "content factor". + * @returns {Number} the number of content units per viewport unit. + */ + getContentFactor: function() { + return this._contentFactor; + }, + + /** + * As a performance optimization, setting this flag to false allows the bounds-change event handler + * on tiledImages to skip calculations on the world bounds. If a lot of images are going to be positioned in + * rapid succession, this is a good idea. When finished, setAutoRefigureSizes should be called with true + * or the system may behave oddly. + * @param {Boolean} [value] The value to which to set the flag. + */ + setAutoRefigureSizes: function(value) { + this._autoRefigureSizes = value; + if (value & this._needsSizesFigured) { + this._figureSizes(); + this._needsSizesFigured = false; + } + }, + + /** + * Arranges all of the TiledImages with the specified settings. + * @param {Object} options - Specifies how to arrange. + * @param {Boolean} [options.immediately=false] - Whether to animate to the new arrangement. + * @param {String} [options.layout] - See collectionLayout in {@link OpenSeadragon.Options}. + * @param {Number} [options.rows] - See collectionRows in {@link OpenSeadragon.Options}. + * @param {Number} [options.columns] - See collectionColumns in {@link OpenSeadragon.Options}. + * @param {Number} [options.tileSize] - See collectionTileSize in {@link OpenSeadragon.Options}. + * @param {Number} [options.tileMargin] - See collectionTileMargin in {@link OpenSeadragon.Options}. + * @fires OpenSeadragon.World.event:metrics-change + */ + arrange: function(options) { + options = options || {}; + var immediately = options.immediately || false; + var layout = options.layout || $.DEFAULT_SETTINGS.collectionLayout; + var rows = options.rows || $.DEFAULT_SETTINGS.collectionRows; + var columns = options.columns || $.DEFAULT_SETTINGS.collectionColumns; + var tileSize = options.tileSize || $.DEFAULT_SETTINGS.collectionTileSize; + var tileMargin = options.tileMargin || $.DEFAULT_SETTINGS.collectionTileMargin; + var increment = tileSize + tileMargin; + var wrap; + if (!options.rows && columns) { + wrap = columns; + } else { + wrap = Math.ceil(this._items.length / rows); + } + var x = 0; + var y = 0; + var item, box, width, height, position; + + this.setAutoRefigureSizes(false); + for (var i = 0; i < this._items.length; i++) { + if (i && (i % wrap) === 0) { + if (layout === 'horizontal') { + y += increment; + x = 0; + } else { + x += increment; + y = 0; + } + } + + item = this._items[i]; + box = item.getBounds(); + if (box.width > box.height) { + width = tileSize; + } else { + width = tileSize * (box.width / box.height); + } + + height = width * (box.height / box.width); + position = new $.Point(x + ((tileSize - width) / 2), + y + ((tileSize - height) / 2)); + + item.setPosition(position, immediately); + item.setWidth(width, immediately); + + if (layout === 'horizontal') { + x += increment; + } else { + y += increment; + } + } + this.setAutoRefigureSizes(true); + }, + + // private + _figureSizes: function() { + var oldHomeBounds = this._homeBounds ? this._homeBounds.clone() : null; + var oldContentSize = this._contentSize ? this._contentSize.clone() : null; + var oldContentFactor = this._contentFactor || 0; + + if (!this._items.length) { + this._homeBounds = new $.Rect(0, 0, 1, 1); + this._contentSize = new $.Point(1, 1); + this._contentFactor = 1; + } else { + var item = this._items[0]; + var bounds = item.getBounds(); + this._contentFactor = item.getContentSize().x / bounds.width; + var clippedBounds = item.getClippedBounds(); + var left = clippedBounds.x; + var top = clippedBounds.y; + var right = clippedBounds.x + clippedBounds.width; + var bottom = clippedBounds.y + clippedBounds.height; + for (var i = 1; i < this._items.length; i++) { + item = this._items[i]; + bounds = item.getBounds(); + this._contentFactor = Math.max(this._contentFactor, + item.getContentSize().x / bounds.width); + clippedBounds = item.getClippedBounds(); + left = Math.min(left, clippedBounds.x); + top = Math.min(top, clippedBounds.y); + right = Math.max(right, clippedBounds.x + clippedBounds.width); + bottom = Math.max(bottom, clippedBounds.y + clippedBounds.height); + } + + this._homeBounds = new $.Rect(left, top, right - left, bottom - top); + this._contentSize = new $.Point( + this._homeBounds.width * this._contentFactor, + this._homeBounds.height * this._contentFactor); + } + + if (this._contentFactor !== oldContentFactor || + !this._homeBounds.equals(oldHomeBounds) || + !this._contentSize.equals(oldContentSize)) { + /** + * Raised when the home bounds or content factor change. + * @event metrics-change + * @memberOf OpenSeadragon.World + * @type {object} + * @property {OpenSeadragon.World} eventSource - A reference to the World which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent('metrics-change', {}); + } + }, + + // private + _raiseRemoveItem: function(item) { + /** + * Raised when an item is removed. + * @event remove-item + * @memberOf OpenSeadragon.World + * @type {object} + * @property {OpenSeadragon.World} eventSource - A reference to the World which raised the event. + * @property {OpenSeadragon.TiledImage} item - The item's underlying item. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'remove-item', { item: item } ); + } +}); + +}( OpenSeadragon )); + + +},{}],6:[function(require,module,exports){ +/** + * Allows application to access and update current app state via query string + */ +module.exports = queryState; + +var eventify = require('ngraph.events'); +var windowHashHistory = require('./lib/windowHashHistory.js'); + +/** + * Just a convenience function that returns singleton instance of a query state + */ +queryState.instance = instance; + +// this variable holds singleton instance of the query state +var singletonQS; + +/** + * Creates new instance of the query state. + */ +function queryState(defaults, history) { + history = history || windowHashHistory(defaults); + validateHistoryAPI(history); + + history.onChanged(updateQuery) + + var query = history.get() || Object.create(null); + + var api = { + + /** + * Gets current state. + * + * @param {string?} keyName if present then value for this key is returned. + * Otherwise the entire app state is returend. + */ + get: getValue, + + /** + * Merges current app state with new key/value. + * + * @param {string} key name + * @param {string|number|date} value + */ + set: setValue, + + /** + * Similar to `set()`, but only sets value if it was not set before. + * + * @param {string} key name + * @param {string|number|date} value + */ + setIfEmpty: setIfEmpty, + + /** + * Releases all resources acquired by query state. After calling this method + * no hash monitoring will happen and no more events will be fired. + */ + dispose: dispose, + + onChange: onChange, + offChange: offChange, + + getHistoryObject: getHistoryObject, + } + + var eventBus = eventify({}); + + return api; + + function onChange(callback, ctx) { + eventBus.on('change', callback, ctx); + } + + function offChange(callback, ctx) { + eventBus.off('change', callback, ctx) + } + + function getHistoryObject() { + return history; + } + + function dispose() { + // dispose all history listeners + history.dispose(); + + // And remove our own listeners + eventBus.off(); + } + + function getValue(keyName) { + if (keyName === undefined) return query; + + return query[keyName]; + } + + function setValue(keyName, value) { + var keyNameType = typeof keyName; + + if (keyNameType === 'object') { + Object.keys(keyName).forEach(function(key) { + query[key] = keyName[key]; + }); + } else if (keyNameType === 'string') { + query[keyName] = value; + } + + history.set(query); + + return api; + } + + function updateQuery(newAppState) { + query = newAppState; + eventBus.fire('change', query); + } + + function setIfEmpty(keyName, value) { + if (typeof keyName === 'object') { + Object.keys(keyName).forEach(function(key) { + // TODO: Can i remove code duplication? The main reason why I don't + // want recursion here is to avoid spamming `history.set()` + if (key in query) return; // key name is not empty + + query[key] = keyName[key]; + }); + } + + if (keyName in query) return; // key name is not empty + query[keyName] = value; + + history.set(query); + + return api; + } +} + +/** + * Returns singleton instance of the query state. + * + * @param {Object} defaults - if present, then it is passed to the current instance + * of the query state. Defaults are applied only if they were not present before. + */ +function instance(defaults) { + if (!singletonQS) { + singletonQS = queryState(defaults); + } else if (defaults) { + singletonQS.setIfEmpty(defaults); + } + + return singletonQS; +} + +function validateHistoryAPI(history) { + if (!history) throw new Error('history is required'); + if (typeof history.dispose !== 'function') throw new Error('dispose is required'); + if (typeof history.onChanged !== 'function') throw new Error('onChanged is required'); +} + +},{"./lib/windowHashHistory.js":9,"ngraph.events":4}],7:[function(require,module,exports){ +/** + * Provides a `null` object that matches history API + */ +module.exports = inMemoryHistory; + +function inMemoryHistory(defaults) { + var listeners = []; + var lastQueryObject = defaults; + + return { + dispose: dispose, + onChanged: onChanged, + set: set, + get: get + }; + + function get() { + return lastQueryObject; + } + + function set(newQueryObject) { + lastQueryObject = newQueryObject; + setTimeout(function() { + triggerChange(newQueryObject); + }, 0); + } + + function dispose() { + listeners = []; + } + + function onChanged(changeCallback) { + if (typeof changeCallback !== 'function') { + throw new Error('changeCallback should be a function') + } + + listeners.push(changeCallback); + } + + function triggerChange(appState) { + listeners.forEach(function(listener) { + listener(appState); + }); + } +} + +},{}],8:[function(require,module,exports){ +/** + * This module is similar to JSON, but it encodes/decodes in query string + * format `key1=value1...` + */ +module.exports = { + parse: parse, + stringify: stringify +}; + +function stringify(object) { + if (!object) return ''; + + return Object.keys(object).map(toPairs).join('&'); + + function toPairs(key) { + var value = object[key]; + var pair = encodeURIComponent(key); + if (value !== undefined) { + pair += '=' + encodeValue(value); + } + + return pair; + } +} + +function parse(queryString) { + var query = Object.create(null); + + if (!queryString) return query; + + queryString.split('&').forEach(decodeRecord); + + return query; + + function decodeRecord(queryRecord) { + if (!queryRecord) return; + + var pair = queryRecord.split('='); + query[decodeURIComponent(pair[0])] = decodeValue(pair[1]); + } +} + +function encodeValue(value) { + // TODO: Do I need this? + // if (typeof value === 'string') { + // if (value.match(/^(true|false)$/)) { + // // special handling of strings that look like booleans + // value = JSON.stringify('' + value); + // } else if (value.match(/^-?\d+\.?\d*$/)) { + // // special handling of strings that look like numbers + // value = JSON.stringify('' + value); + // } + // } + if (value instanceof Date) { + value = value.toISOString(); + } + var uriValue = encodeURIComponent(value); + return uriValue; +} + +/** + * This method returns typed value from string + */ +function decodeValue(value) { + value = decodeURIComponent(value); + if (!isNaN(value)) { + return parseFloat(value); + } + if (isBolean(value)) { + return value === 'true'; + } + if (isISODateString(value)) { + return new Date(value); + } + + return value; +} + +function isBolean(strValue) { + return strValue === 'true' || strValue === 'false'; +} + +function isISODateString(str) { + return str && str.match(/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/) +} + +},{}],9:[function(require,module,exports){ +/** + * Uses `window` to monitor hash and update hash + */ +module.exports = windowHistory; + +var inMemoryHistory = require('./inMemoryHistory.js'); +var query = require('./query.js'); + +function windowHistory(defaults) { + // If we don't support window, we are probably running in node. Just return + // in memory history + if (typeof window === 'undefined') return inMemoryHistory(defaults); + + // Store all `onChanged()` listeners here, so that we can have just one + // `hashchange` listener, and notify one listeners within single event. + var listeners = []; + + // This prefix is used for all query strings. So our state is stored as + // my-app.com/#?key=value + var hashPrefix = '#?'; + + init(); + + // This is our public API: + return { + /** + * Adds callback that is called when hash change happen. Callback receives + * current hash string with `#?` sign + * + * @param {Function} changeCallback - a function that is called when hash is + * changed. Callback gets one argument that represents the new state. + */ + onChanged: onChanged, + + /** + * Releases all resources + */ + dispose: dispose, + + /** + * Sets a new app state + * + * @param {object} appState - the new application state, that should be + * persisted in the hash string + */ + set: set, + + /** + * Gets current app state + */ + get: getStateFromHash + }; + + // Public API is over. You can ignore this part. + + function init() { + var stateFromHash = getStateFromHash(); + var stateChanged = false; + + if (typeof defaults === 'object' && defaults) { + Object.keys(defaults).forEach(function(key) { + if (key in stateFromHash) return; + + stateFromHash[key] = defaults[key] + stateChanged = true; + }); + } + + if (stateChanged) set(stateFromHash); + } + + function set(appState) { + var hash = hashPrefix + query.stringify(appState); + + if (window.history) { + window.history.replaceState(undefined, undefined, hash); + } else { + window.location.replace(hash); + } + } + + function onChanged(changeCallback) { + if (typeof changeCallback !== 'function') throw new Error('changeCallback needs to be a function'); + + // we start listen just once, only if we didn't listen before: + if (listeners.length === 0) { + window.addEventListener('hashchange', onHashChanged, false); + } + + listeners.push(changeCallback); + } + + function dispose() { + if (listeners.length === 0) return; // no need to do anything. + + // Let garbage collector collect all listeners; + listeners = []; + + // And release hash change event: + window.removeEventListener('hashchange', onHashChanged, false); + } + + function onHashChanged() { + var appState = getStateFromHash(); + notifyListeners(appState); + } + + function notifyListeners(appState) { + for (var i = 0; i < listeners.length; ++i) { + var listener = listeners[i]; + listener(appState); + } + } + + function getStateFromHash() { + var queryString = (window.location.hash || hashPrefix).substr(hashPrefix.length); + + return query.parse(queryString); + } +} + +},{"./inMemoryHistory.js":7,"./query.js":8}]},{},[1]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy5udm0vdmVyc2lvbnMvbm9kZS92Ni4zLjAvbGliL25vZGVfbW9kdWxlcy93YXRjaGlmeS9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiaW5kZXguanMiLCJsaWIvaGVscC5qcyIsImxpYi9uYXZpZ2F0b3IuanMiLCJub2RlX21vZHVsZXMvbmdyYXBoLmV2ZW50cy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9vcGVuc2VhZHJhZ29uL2J1aWxkL29wZW5zZWFkcmFnb24vb3BlbnNlYWRyYWdvbi5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeS1zdGF0ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeS1zdGF0ZS9saWIvaW5NZW1vcnlIaXN0b3J5LmpzIiwibm9kZV9tb2R1bGVzL3F1ZXJ5LXN0YXRlL2xpYi9xdWVyeS5qcyIsIm5vZGVfbW9kdWxlcy9xdWVyeS1zdGF0ZS9saWIvd2luZG93SGFzaEhpc3RvcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvNG9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwidmFyIGxhc3RSZXF1ZXN0ID0gMDtcbnZhciBzYXZlRGVsYXkgPSAyMDA7IC8vIERvbid0IHdhbnQgdG8gc3BhbSB3aXRoIGhpc3RvcnkgdXBkYXRlc1xuXG52YXIgaGVscCA9IHJlcXVpcmUoJy4vbGliL2hlbHAuanMnKTtcbnZhciBxdWVyeVN0YXRlID0gcmVxdWlyZSgncXVlcnktc3RhdGUnKTtcbnJlcXVpcmUoJ29wZW5zZWFkcmFnb24nKTsgLy8gaXQgYWRkcyBpdHNlbGYgdG8gd2luZG93LlxuXG52YXIgcXMgPSBxdWVyeVN0YXRlKHtcbiAgaW5kZXg6ICdtYXJrX3R3YWluJ1xufSk7XG5cbnZhciBpbmRleE5hbWUgPSBxcy5nZXQoJ2luZGV4JylcbnZhciBpbmRleFJvb3QgPSAnaHR0cHM6Ly9hbnZha2EuZ2l0aHViLmlvL3BvcnRyYWl0LWRhdGEvJyArIGluZGV4TmFtZSArICcvJztcblxudmFyIHZpZXdlciA9IHdpbmRvdy5PcGVuU2VhZHJhZ29uKHtcbiAgaWQ6ICdtYXAnLFxuICBzaG93TmF2aWdhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAvLyBzaG93TmF2aWdhdG9yOiB0cnVlLFxuICBwcmVmaXhVcmw6ICcnLFxuICBwcmVzZXJ2ZVZpZXdwb3J0OiB0cnVlLFxuICB0aWxlU291cmNlczogaW5kZXhSb290ICsgJ2luZGV4LmR6aSdcbn0pO1xuXG5yZXF1aXJlKCcuL2xpYi9uYXZpZ2F0b3IuanMnKSh2aWV3ZXIsIGluZGV4Um9vdCArICdtaW5pLW1hcC5qcGcnKTtcblxudmFyIGJveCA9IGdldEJveCgpO1xuXG52aWV3ZXIuYWRkSGFuZGxlcignb3BlbicsIGZ1bmN0aW9uKCkge1xuICBpZiAoYm94KSB7XG4gICAgdmlld2VyLnZpZXdwb3J0LmZpdEJvdW5kcyhib3gsIHRydWUpXG4gIH1cbn0pO1xuXG52aWV3ZXIuYWRkSGFuZGxlcigndmlld3BvcnQtY2hhbmdlJywgZnVuY3Rpb24oKSB7XG4gIHZhciB2aWV3cG9ydCA9IHZpZXdlci52aWV3cG9ydDtcbiAgdmFyIGJveCA9IHZpZXdwb3J0LmdldEJvdW5kcygpO1xuICBpZiAodmlld3BvcnQuZ2V0Wm9vbSgpIDw9IDEpIHtcbiAgICBoZWxwLnNob3coKTtcbiAgfVxuICBzYXZlQ3VycmVudEJveChib3gpO1xufSk7XG5cbmZ1bmN0aW9uIGdldEJveCgpIHtcbiAgdmFyIGRlZ3JlZXMgPSBxcy5nZXQoJ2RlZ3JlZXMnKSB8fCAwO1xuICB2YXIgaGVpZ2h0ID0gcXMuZ2V0KCdoZWlnaHQnKTtcbiAgdmFyIHdpZHRoID0gcXMuZ2V0KCd3aWR0aCcpO1xuICB2YXIgeCA9IHFzLmdldCgneCcpO1xuICB2YXIgeSA9IHFzLmdldCgneScpO1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHkgPT09IHVuZGVmaW5lZCB8fCB3aWR0aCA9PT0gdW5kZWZpbmVkIHx8IGhlaWdodCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgcmV0dXJuIG5ldyB3aW5kb3cuT3BlblNlYWRyYWdvbi5SZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIGRlZ3JlZXMpXG59XG5cbmZ1bmN0aW9uIHNhdmVDdXJyZW50Qm94KGJveCkge1xuICBpZiAobGFzdFJlcXVlc3QpIHtcbiAgICBjbGVhclRpbWVvdXQobGFzdFJlcXVlc3QpO1xuICB9XG5cbiAgbGFzdFJlcXVlc3QgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgIHFzLnNldChib3gpO1xuICB9LCBzYXZlRGVsYXkpO1xufVxuXG5cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVIZWxwKCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUhlbHAoKSB7XG4gIHZhciBzdWJzY3JpYmVkID0gZmFsc2U7XG4gIHZhciBldmVudFNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKVxuICBsaXN0ZW5Ub0V2ZW50cygpO1xuXG4gIHJldHVybiB7XG4gICAgc2hvdzogc2hvd1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuVG9FdmVudHMoKSB7XG4gICAgaWYgKHN1YnNjcmliZWQpIHJldHVybjtcblxuICAgIHN1YnNjcmliZWQgPSB0cnVlO1xuICAgIGV2ZW50U291cmNlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGlkZUhlbHAsIHRydWUpO1xuICAgIGV2ZW50U291cmNlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBoaWRlSGVscCwgdHJ1ZSk7XG4gICAgZXZlbnRTb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhpZGVIZWxwLCB0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3coKSB7XG4gICAgdmFyIGl0ZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmhlbHAnKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGl0ZW1zW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH1cbiAgICBsaXN0ZW5Ub0V2ZW50cygpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGlkZUhlbHAoKSB7XG4gICAgZXZlbnRTb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoaWRlSGVscCwgdHJ1ZSk7XG4gICAgZXZlbnRTb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIGhpZGVIZWxwLCB0cnVlKTtcbiAgICBldmVudFNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGlkZUhlbHAsIHRydWUpO1xuICAgIHN1YnNjcmliZWQgPSBmYWxzZTtcbiAgICB2YXIgaXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaGVscCcpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgaXRlbXNbaV0uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU5hdmlnYXRvcjtcblxuZnVuY3Rpb24gY3JlYXRlTmF2aWdhdG9yKHZpZXdlciwgYmFja2dyb3VuZEltYWdlKSB7XG4gIHZhciBkaXNwbGF5UmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rpc3BsYXktcmVnaW9uJyk7XG4gIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaS1tYXAnKTtcbiAgY29udGFpbmVyLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoXCInICsgYmFja2dyb3VuZEltYWdlICsgJ1wiKSc7XG5cbiAgdmlld2VyLmFkZEhhbmRsZXIoJ3ZpZXdwb3J0LWNoYW5nZScsIHVwZGF0ZSk7XG4gIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCByZXNldFpvb20pO1xuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHJlc2V0Wm9vbSk7XG5cbiAgcmV0dXJuO1xuXG4gIGZ1bmN0aW9uIHJlc2V0Wm9vbShlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdmlld2VyLnZpZXdwb3J0LmdvSG9tZSgpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHZhciB2aWV3cG9ydCA9IHZpZXdlci52aWV3cG9ydDtcbiAgICB2YXIgYm91bmRzID0gdmlld3BvcnQuZ2V0Qm91bmRzTm9Sb3RhdGUodHJ1ZSk7XG5cbiAgICAvLyBUT0RPOiBUaGlzIGlzIG5vdCBlbnRpcmVseSBjb3JyZWN0LiBOb3Qgc3VyZSB3aHkuIExpa2UgSSdtIG1pc3Npbmcgc29tZVxuICAgIC8vIHBhc3Npbmcgb3IgcmF0aW8uLi4gVGhpcyBjYW4gYmUgc2VlbiBpZiB5b3Ugem9vbSB0byB0aGUgcmlnaHQgc2lkZS5cbiAgICAvLyBSZWN0YW5nbGUgc2hvd3MgYmxhbmssIHdoaWxlIHBpeGVscyBhcmUgc3RpbGwgdmlzaWJsZVxuICAgIHZhciBNQVhfV0lEVEggPSA3NTtcbiAgICB2YXIgTUFYX0hFSUdIVCA9IE1BWF9XSURUSDtcblxuICAgIHZhciB4ID0gTUFYX1dJRFRIICogYm91bmRzLng7XG4gICAgdmFyIHkgPSBNQVhfSEVJR0hUICogYm91bmRzLnk7XG4gICAgdmFyIHdpZHRoID0gTUFYX1dJRFRIICogYm91bmRzLndpZHRoO1xuICAgIHZhciBoZWlnaHQgPSBNQVhfSEVJR0hUICogYm91bmRzLmhlaWdodDtcblxuICAgIC8vdXBkYXRlIHN0eWxlIGZvciBuYXZpZ2F0b3ItYm94XG4gICAgdmFyIHN0eWxlID0gZGlzcGxheVJlZ2lvbi5zdHlsZTtcblxuXG4gICAgc3R5bGUudG9wID0gcHgoeSk7XG4gICAgc3R5bGUubGVmdCA9IHB4KHgpO1xuICAgIHN0eWxlLndpZHRoICA9IHB4KE1hdGgubWF4KHdpZHRoLCAwKSk7XG4gICAgc3R5bGUuaGVpZ2h0ID0gcHgoTWF0aC5tYXgoaGVpZ2h0LCAwKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHgoeCkge1xuICByZXR1cm4gTWF0aC5yb3VuZCh4KSArICdweCdcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oc3ViamVjdCkge1xuICB2YWxpZGF0ZVN1YmplY3Qoc3ViamVjdCk7XG5cbiAgdmFyIGV2ZW50c1N0b3JhZ2UgPSBjcmVhdGVFdmVudHNTdG9yYWdlKHN1YmplY3QpO1xuICBzdWJqZWN0Lm9uID0gZXZlbnRzU3RvcmFnZS5vbjtcbiAgc3ViamVjdC5vZmYgPSBldmVudHNTdG9yYWdlLm9mZjtcbiAgc3ViamVjdC5maXJlID0gZXZlbnRzU3RvcmFnZS5maXJlO1xuICByZXR1cm4gc3ViamVjdDtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50c1N0b3JhZ2Uoc3ViamVjdCkge1xuICAvLyBTdG9yZSBhbGwgZXZlbnQgbGlzdGVuZXJzIHRvIHRoaXMgaGFzaC4gS2V5IGlzIGV2ZW50IG5hbWUsIHZhbHVlIGlzIGFycmF5XG4gIC8vIG9mIGNhbGxiYWNrIHJlY29yZHMuXG4gIC8vXG4gIC8vIEEgY2FsbGJhY2sgcmVjb3JkIGNvbnNpc3RzIG9mIGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBpdHMgb3B0aW9uYWwgY29udGV4dDpcbiAgLy8geyAnZXZlbnROYW1lJyA9PiBbe2NhbGxiYWNrOiBmdW5jdGlvbiwgY3R4OiBvYmplY3R9XSB9XG4gIHZhciByZWdpc3RlcmVkRXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICByZXR1cm4ge1xuICAgIG9uOiBmdW5jdGlvbiAoZXZlbnROYW1lLCBjYWxsYmFjaywgY3R4KSB7XG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY2FsbGJhY2sgaXMgZXhwZWN0ZWQgdG8gYmUgYSBmdW5jdGlvbicpO1xuICAgICAgfVxuICAgICAgdmFyIGhhbmRsZXJzID0gcmVnaXN0ZXJlZEV2ZW50c1tldmVudE5hbWVdO1xuICAgICAgaWYgKCFoYW5kbGVycykge1xuICAgICAgICBoYW5kbGVycyA9IHJlZ2lzdGVyZWRFdmVudHNbZXZlbnROYW1lXSA9IFtdO1xuICAgICAgfVxuICAgICAgaGFuZGxlcnMucHVzaCh7Y2FsbGJhY2s6IGNhbGxiYWNrLCBjdHg6IGN0eH0pO1xuXG4gICAgICByZXR1cm4gc3ViamVjdDtcbiAgICB9LFxuXG4gICAgb2ZmOiBmdW5jdGlvbiAoZXZlbnROYW1lLCBjYWxsYmFjaykge1xuICAgICAgdmFyIHdhbnRUb1JlbW92ZUFsbCA9ICh0eXBlb2YgZXZlbnROYW1lID09PSAndW5kZWZpbmVkJyk7XG4gICAgICBpZiAod2FudFRvUmVtb3ZlQWxsKSB7XG4gICAgICAgIC8vIEtpbGxpbmcgb2xkIGV2ZW50cyBzdG9yYWdlIHNob3VsZCBiZSBlbm91Z2ggaW4gdGhpcyBjYXNlOlxuICAgICAgICByZWdpc3RlcmVkRXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWdpc3RlcmVkRXZlbnRzW2V2ZW50TmFtZV0pIHtcbiAgICAgICAgdmFyIGRlbGV0ZUFsbENhbGxiYWNrc0ZvckV2ZW50ID0gKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJyk7XG4gICAgICAgIGlmIChkZWxldGVBbGxDYWxsYmFja3NGb3JFdmVudCkge1xuICAgICAgICAgIGRlbGV0ZSByZWdpc3RlcmVkRXZlbnRzW2V2ZW50TmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHJlZ2lzdGVyZWRFdmVudHNbZXZlbnROYW1lXTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrc1tpXS5jYWxsYmFjayA9PT0gY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgfSxcblxuICAgIGZpcmU6IGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgIHZhciBjYWxsYmFja3MgPSByZWdpc3RlcmVkRXZlbnRzW2V2ZW50TmFtZV07XG4gICAgICBpZiAoIWNhbGxiYWNrcykge1xuICAgICAgICByZXR1cm4gc3ViamVjdDtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpcmVBcmd1bWVudHM7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZmlyZUFyZ3VtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgfVxuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2FsbGJhY2tJbmZvID0gY2FsbGJhY2tzW2ldO1xuICAgICAgICBjYWxsYmFja0luZm8uY2FsbGJhY2suYXBwbHkoY2FsbGJhY2tJbmZvLmN0eCwgZmlyZUFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdWJqZWN0KHN1YmplY3QpIHtcbiAgaWYgKCFzdWJqZWN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFdmVudGlmeSBjYW5ub3QgdXNlIGZhbHN5IG9iamVjdCBhcyBldmVudHMgc3ViamVjdCcpO1xuICB9XG4gIHZhciByZXNlcnZlZFdvcmRzID0gWydvbicsICdmaXJlJywgJ29mZiddO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc2VydmVkV29yZHMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoc3ViamVjdC5oYXNPd25Qcm9wZXJ0eShyZXNlcnZlZFdvcmRzW2ldKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViamVjdCBjYW5ub3QgYmUgZXZlbnRpZmllZCwgc2luY2UgaXQgYWxyZWFkeSBoYXMgcHJvcGVydHkgJ1wiICsgcmVzZXJ2ZWRXb3Jkc1tpXSArIFwiJ1wiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vISBvcGVuc2VhZHJhZ29uIDIuMi4xXG4vLyEgQnVpbHQgb24gMjAxNi0wNy0wMVxuLy8hIEdpdCBjb21taXQ6IHYyLjIuMS0wLWJhYmRlZmRcbi8vISBodHRwOi8vb3BlbnNlYWRyYWdvbi5naXRodWIuaW9cbi8vISBMaWNlbnNlOiBodHRwOi8vb3BlbnNlYWRyYWdvbi5naXRodWIuaW8vbGljZW5zZS9cblxuLypcbiAqIE9wZW5TZWFkcmFnb25cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuLypcbiAqIFBvcnRpb25zIG9mIHRoaXMgc291cmNlIGZpbGUgdGFrZW4gZnJvbSBqUXVlcnk6XG4gKlxuICogQ29weXJpZ2h0IDIwMTEgSm9obiBSZXNpZ1xuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZ1xuICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4gKiBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbiAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvXG4gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmVcbiAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EXG4gKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFXG4gKiBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OXG4gKiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT05cbiAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICovXG5cbi8qXG4gKiBQb3J0aW9ucyBvZiB0aGlzIHNvdXJjZSBmaWxlIHRha2VuIGZyb20gbWF0dHNuaWRlci5jb206XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgTWF0dCBTbmlkZXJcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1NcbiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC5cbiAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUXG4gKiBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1JcbiAqIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuICovXG5cblxuLyoqXG4gKiBAbmFtZXNwYWNlIE9wZW5TZWFkcmFnb25cbiAqIEB2ZXJzaW9uIG9wZW5zZWFkcmFnb24gMi4yLjFcbiAqIEBjbGFzc2Rlc2MgVGhlIHJvb3QgbmFtZXNwYWNlIGZvciBPcGVuU2VhZHJhZ29uLiAgQWxsIHV0aWxpdHkgbWV0aG9kc1xuICogYW5kIGNsYXNzZXMgYXJlIGRlZmluZWQgb24gb3IgYmVsb3cgdGhpcyBuYW1lc3BhY2UuXG4gKlxuICovXG5cblxuLy8gVHlwZWRlZnNcblxuIC8qKlxuICAqIEFsbCByZXF1aXJlZCBhbmQgb3B0aW9uYWwgc2V0dGluZ3MgZm9yIGluc3RhbnRpYXRpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgYW4gT3BlblNlYWRyYWdvbiBpbWFnZSB2aWV3ZXIuXG4gICpcbiAgKiBAdHlwZWRlZiB7T2JqZWN0fSBPcHRpb25zXG4gICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpZFxuICAqICAgICBJZCBvZiB0aGUgZWxlbWVudCB0byBhcHBlbmQgdGhlIHZpZXdlcidzIGNvbnRhaW5lciBlbGVtZW50IHRvLiBJZiBub3QgcHJvdmlkZWQsIHRoZSAnZWxlbWVudCcgcHJvcGVydHkgbXVzdCBiZSBwcm92aWRlZC5cbiAgKiAgICAgSWYgYm90aCB0aGUgZWxlbWVudCBhbmQgaWQgcHJvcGVydGllcyBhcmUgc3BlY2lmaWVkLCB0aGUgdmlld2VyIGlzIGFwcGVuZGVkIHRvIHRoZSBlbGVtZW50IHByb3ZpZGVkIGluIHRoZSBlbGVtZW50IHByb3BlcnR5LlxuICAqXG4gICogQHByb3BlcnR5IHtFbGVtZW50fSBlbGVtZW50XG4gICogICAgIFRoZSBlbGVtZW50IHRvIGFwcGVuZCB0aGUgdmlld2VyJ3MgY29udGFpbmVyIGVsZW1lbnQgdG8uIElmIG5vdCBwcm92aWRlZCwgdGhlICdpZCcgcHJvcGVydHkgbXVzdCBiZSBwcm92aWRlZC5cbiAgKiAgICAgSWYgYm90aCB0aGUgZWxlbWVudCBhbmQgaWQgcHJvcGVydGllcyBhcmUgc3BlY2lmaWVkLCB0aGUgdmlld2VyIGlzIGFwcGVuZGVkIHRvIHRoZSBlbGVtZW50IHByb3ZpZGVkIGluIHRoZSBlbGVtZW50IHByb3BlcnR5LlxuICAqXG4gICogQHByb3BlcnR5IHtBcnJheXxTdHJpbmd8RnVuY3Rpb258T2JqZWN0fSBbdGlsZVNvdXJjZXM9bnVsbF1cbiAgKiAgICAgVGlsZSBzb3VyY2UocykgdG8gb3BlbiBpbml0aWFsbHkuIFRoaXMgaXMgYSBjb21wbGV4IHBhcmFtZXRlcjsgc2VlXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNvcGVufSBmb3IgZGV0YWlscy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbdGFiSW5kZXg9MF1cbiAgKiAgICAgVGFiYmluZyBvcmRlciBpbmRleCB0byBhc3NpZ24gdG8gdGhlIHZpZXdlciBlbGVtZW50LiBQb3NpdGl2ZSB2YWx1ZXMgYXJlIHNlbGVjdGVkIGluIGluY3JlYXNpbmcgb3JkZXIuIFdoZW4gdGFiSW5kZXggaXMgMFxuICAqICAgICBzb3VyY2Ugb3JkZXIgaXMgdXNlZC4gQSBuZWdhdGl2ZSB2YWx1ZSBvbWl0cyB0aGUgdmlld2VyIGZyb20gdGhlIHRhYmJpbmcgb3JkZXIuXG4gICpcbiAgKiBAcHJvcGVydHkge0FycmF5fSBvdmVybGF5cyBBcnJheSBvZiBvYmplY3RzIGRlZmluaW5nIHBlcm1hbmVudCBvdmVybGF5cyBvZlxuICAqICAgICB0aGUgdmlld2VyLiBUaGUgb3ZlcmxheXMgYWRkZWQgdmlhIHRoaXMgb3B0aW9uIGFuZCBsYXRlciByZW1vdmVkIHdpdGhcbiAgKiAgICAge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3JlbW92ZU92ZXJsYXl9IHdpbGwgYmUgYWRkZWQgYmFjayB3aGVuIGEgbmV3XG4gICogICAgIGltYWdlIGlzIG9wZW5lZC5cbiAgKiAgICAgVG8gYWRkIG92ZXJsYXlzIHdoaWNoIGNhbiBiZSBkZWZpbml0aXZlbHkgcmVtb3ZlZCwgb25lIG11c3QgdXNlXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNhZGRPdmVybGF5fVxuICAqICAgICBJZiBkaXNwbGF5aW5nIGEgc2VxdWVuY2Ugb2YgaW1hZ2VzLCB0aGUgb3ZlcmxheXMgY2FuIGJlIGFzc29jaWF0ZWRcbiAgKiAgICAgd2l0aCBhIHNwZWNpZmljIHBhZ2UgYnkgcGFzc2luZyB0aGUgb3ZlcmxheXMgYXJyYXkgdG8gdGhlIHBhZ2Unc1xuICAqICAgICB0aWxlIHNvdXJjZSBjb25maWd1cmF0aW9uLlxuICAqICAgICBFeHBlY3RlZCBwcm9wZXJ0aWVzOlxuICAqICAgICAqIHgsIHksIChvciBweCwgcHkgZm9yIHBpeGVsIGNvb3JkaW5hdGVzKSB0byBkZWZpbmUgdGhlIGxvY2F0aW9uLlxuICAqICAgICAqIHdpZHRoLCBoZWlnaHQgaW4gcG9pbnQgaWYgdXNpbmcgeCx5IG9yIGluIHBpeGVscyBpZiB1c2luZyBweCxweS4gSWYgd2lkdGhcbiAgKiAgICAgICBhbmQgaGVpZ2h0IGFyZSBzcGVjaWZpZWQsIHRoZSBvdmVybGF5IHNpemUgaXMgYWRqdXN0ZWQgd2hlbiB6b29taW5nLFxuICAqICAgICAgIG90aGVyd2lzZSB0aGUgc2l6ZSBzdGF5cyB0aGUgc2l6ZSBvZiB0aGUgY29udGVudCAob3IgdGhlIHNpemUgZGVmaW5lZCBieSBDU1MpLlxuICAqICAgICAqIGNsYXNzTmFtZSB0byBhc3NvY2lhdGUgYSBjbGFzcyB0byB0aGUgb3ZlcmxheVxuICAqICAgICAqIGlkIHRvIHNldCB0aGUgb3ZlcmxheSBlbGVtZW50LiBJZiBhbiBlbGVtZW50IHdpdGggdGhpcyBpZCBhbHJlYWR5IGV4aXN0cyxcbiAgKiAgICAgICBpdCBpcyByZXVzZWQsIG90aGVyd2lzZSBpdCBpcyBjcmVhdGVkLiBJZiBub3Qgc3BlY2lmaWVkLCBhIG5ldyBlbGVtZW50IGlzXG4gICogICAgICAgY3JlYXRlZC5cbiAgKiAgICAgKiBwbGFjZW1lbnQgYSBzdHJpbmcgdG8gZGVmaW5lIHRoZSByZWxhdGl2ZSBwb3NpdGlvbiB0byB0aGUgdmlld3BvcnQuXG4gICogICAgICAgT25seSB1c2VkIGlmIG5vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHNwZWNpZmllZC4gRGVmYXVsdDogJ1RPUF9MRUZUJy5cbiAgKiAgICAgICBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IFt4bWxQYXRoPW51bGxdXG4gICogICAgIDxzdHJvbmc+REVQUkVDQVRFRDwvc3Ryb25nPi4gQSByZWxhdGl2ZSBwYXRoIHRvIGxvYWQgYSBEWkkgZmlsZSBmcm9tIHRoZSBzZXJ2ZXIuXG4gICogICAgIFByZWZlciB0aGUgbmV3ZXIgT3B0aW9ucy50aWxlU291cmNlcy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBbcHJlZml4VXJsPScvaW1hZ2VzLyddXG4gICogICAgIFByZXBlbmRzIHRoZSBwcmVmaXhVcmwgdG8gbmF2SW1hZ2VzIHBhdGhzLCB3aGljaCBpcyB2ZXJ5IHVzZWZ1bFxuICAqICAgICBzaW5jZSB0aGUgZGVmYXVsdCBwYXRocyBhcmUgcmFyZWx5IHVzZWZ1bCBmb3IgcHJvZHVjdGlvblxuICAqICAgICBlbnZpcm9ubWVudHMuXG4gICpcbiAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uTmF2SW1hZ2VzfSBbbmF2SW1hZ2VzXVxuICAqICAgICBBbiBvYmplY3Qgd2l0aCBhIHByb3BlcnR5IGZvciBlYWNoIGJ1dHRvbiBvciBvdGhlciBidWlsdC1pbiBuYXZpZ2F0aW9uXG4gICogICAgIGNvbnRyb2wsIGVnIHRoZSBjdXJyZW50ICd6b29tSW4nLCAnem9vbU91dCcsICdob21lJywgYW5kICdmdWxscGFnZScuXG4gICogICAgIEVhY2ggb2YgdGhvc2UgaW4gdHVybiBwcm92aWRlcyBhbiBpbWFnZSBwYXRoIGZvciBlYWNoIHN0YXRlIG9mIHRoZSBidXR0b25cbiAgKiAgICAgb3IgbmF2aWdhdGlvbiBjb250cm9sLCBlZyAnUkVTVCcsICdHUk9VUCcsICdIT1ZFUicsICdQUkVTUycuIEZpbmFsbHkgdGhlXG4gICogICAgIGltYWdlIHBhdGhzLCBieSBkZWZhdWx0IGFzc3VtZSB0aGVyZSBpcyBhIGZvbGRlciBvbiB0aGUgc2VydmVycyByb290IHBhdGhcbiAgKiAgICAgY2FsbGVkICcvaW1hZ2VzJywgZWcgJy9pbWFnZXMvem9vbWluX3Jlc3QucG5nJy4gIElmIHlvdSBuZWVkIHRvIGFkanVzdFxuICAqICAgICB0aGVzZSBwYXRocywgcHJlZmVyIHNldHRpbmcgdGhlIG9wdGlvbi5wcmVmaXhVcmwgcmF0aGVyIHRoYW4gb3ZlcnJpZGluZ1xuICAqICAgICBldmVyeSBpbWFnZSBwYXRoIGRpcmVjdGx5IHRocm91Z2ggdGhpcyBzZXR0aW5nLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZGVidWdNb2RlPWZhbHNlXVxuICAqICAgICBUT0RPOiBwcm92aWRlIGFuIGluLXNjcmVlbiBwYW5lbCBwcm92aWRpbmcgZXZlbnQgZGV0YWlsIGZlZWRiYWNrLlxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IFtkZWJ1Z0dyaWRDb2xvcj0nIzQzN0FCMiddXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2JsZW5kVGltZT0wXVxuICAqICAgICBTcGVjaWZpZXMgdGhlIGR1cmF0aW9uIG9mIGFuaW1hdGlvbiBhcyBoaWdoZXIgb3IgbG93ZXIgbGV2ZWwgdGlsZXMgYXJlXG4gICogICAgIHJlcGxhY2luZyB0aGUgZXhpc3RpbmcgdGlsZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2Fsd2F5c0JsZW5kPWZhbHNlXVxuICAqICAgICBGb3JjZXMgdGhlIHRpbGUgdG8gYWx3YXlzIGJsZW5kLiAgQnkgZGVmYXVsdCB0aGUgdGlsZXMgc2tpcCBibGVuZGluZ1xuICAqICAgICB3aGVuIHRoZSBibGVuZFRpbWUgaXMgc3VycGFzc2VkIGFuZCB0aGUgY3VycmVudCBhbmltYXRpb24gZnJhbWUgd291bGRcbiAgKiAgICAgbm90IGNvbXBsZXRlIHRoZSBibGVuZC5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2F1dG9IaWRlQ29udHJvbHM9dHJ1ZV1cbiAgKiAgICAgSWYgdGhlIHVzZXIgc3RvcHMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdmlld3BvcnQsIGZhZGUgdGhlIG5hdmlnYXRpb25cbiAgKiAgICAgY29udHJvbHMuICBVc2VmdWwgZm9yIHByZXNlbnRhdGlvbiBzaW5jZSB0aGUgY29udHJvbHMgYXJlIGJ5IGRlZmF1bHRcbiAgKiAgICAgZmxvYXRlZCBvbiB0b3Agb2YgdGhlIGltYWdlIHRoZSB1c2VyIGlzIHZpZXdpbmcuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtpbW1lZGlhdGVSZW5kZXI9ZmFsc2VdXG4gICogICAgIFJlbmRlciB0aGUgYmVzdCBjbG9zZXN0IGxldmVsIGZpcnN0LCBpZ25vcmluZyB0aGUgbG93ZXJpbmcgbGV2ZWxzIHdoaWNoXG4gICogICAgIHByb3ZpZGUgdGhlIGVmZmVjdCBvZiB2ZXJ5IGJsdXJyeSB0byBzaGFycC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gY2hhbmdlXG4gICogICAgIHNldHRpbmcgdG8gdHJ1ZSBmb3IgbW9iaWxlIGRldmljZXMuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2RlZmF1bHRab29tTGV2ZWw9MF1cbiAgKiAgICAgWm9vbSBsZXZlbCB0byB1c2Ugd2hlbiBpbWFnZSBpcyBmaXJzdCBvcGVuZWQgb3IgdGhlIGhvbWUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICogICAgIElmIDAsIGFkanVzdHMgdG8gZml0IHZpZXdlci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbb3BhY2l0eT0xXVxuICAqICAgICBEZWZhdWx0IG9wYWNpdHkgb2YgdGhlIHRpbGVkIGltYWdlcyAoMT1vcGFxdWUsIDA9dHJhbnNwYXJlbnQpXG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gW2NvbXBvc2l0ZU9wZXJhdGlvbj1udWxsXVxuICAqICAgICBWYWxpZCB2YWx1ZXMgYXJlICdzb3VyY2Utb3ZlcicsICdzb3VyY2UtYXRvcCcsICdzb3VyY2UtaW4nLCAnc291cmNlLW91dCcsXG4gICogICAgICdkZXN0aW5hdGlvbi1vdmVyJywgJ2Rlc3RpbmF0aW9uLWF0b3AnLCAnZGVzdGluYXRpb24taW4nLFxuICAqICAgICAnZGVzdGluYXRpb24tb3V0JywgJ2xpZ2h0ZXInLCAnY29weScgb3IgJ3hvcidcbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfENhbnZhc0dyYWRpZW50fENhbnZhc1BhdHRlcm58RnVuY3Rpb259IFtwbGFjZWhvbGRlckZpbGxTdHlsZT1udWxsXVxuICAqICAgICBEcmF3cyBhIGNvbG9yZWQgcmVjdGFuZ2xlIGJlaGluZCB0aGUgdGlsZSBpZiBpdCBpcyBub3QgbG9hZGVkIHlldC5cbiAgKiAgICAgWW91IGNhbiBwYXNzIGEgQ1NTIGNvbG9yIHZhbHVlIGxpa2UgXCIjRkY4ODAwXCIuXG4gICogICAgIFdoZW4gcGFzc2luZyBhIGZ1bmN0aW9uIHRoZSB0aWxlZEltYWdlIGFuZCBjYW52YXMgY29udGV4dCBhcmUgYXZhaWxhYmxlIGFzIGFyZ3VtZW50IHdoaWNoIGlzIHVzZWZ1bCB3aGVuIHlvdSBkcmF3IGEgZ3JhZGllbnQgb3IgcGF0dGVybi5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbZGVncmVlcz0wXVxuICAqICAgICBJbml0aWFsIHJvdGF0aW9uLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFttaW5ab29tTGV2ZWw9bnVsbF1cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbbWF4Wm9vbUxldmVsPW51bGxdXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtob21lRmlsbHNWaWV3ZXI9ZmFsc2VdXG4gICogICAgIE1ha2UgdGhlICdob21lJyBidXR0b24gZmlsbCB0aGUgdmlld2VyIGFuZCBjbGlwIHRoZSBpbWFnZSwgaW5zdGVhZFxuICAqICAgICBvZiBmaXR0aW5nIHRoZSBpbWFnZSB0byB0aGUgdmlld2VyIGFuZCBsZXR0ZXJib3hpbmcuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtwYW5Ib3Jpem9udGFsPXRydWVdXG4gICogICAgIEFsbG93IGhvcml6b250YWwgcGFuLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbcGFuVmVydGljYWw9dHJ1ZV1cbiAgKiAgICAgQWxsb3cgdmVydGljYWwgcGFuLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbY29uc3RyYWluRHVyaW5nUGFuPWZhbHNlXVxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbd3JhcEhvcml6b250YWw9ZmFsc2VdXG4gICogICAgIFNldCB0byB0cnVlIHRvIGZvcmNlIHRoZSBpbWFnZSB0byB3cmFwIGhvcml6b250YWxseSB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAqICAgICBVc2VmdWwgZm9yIG1hcHMgb3IgaW1hZ2VzIHJlcHJlc2VudGluZyB0aGUgc3VyZmFjZSBvZiBhIHNwaGVyZSBvciBjeWxpbmRlci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3dyYXBWZXJ0aWNhbD1mYWxzZV1cbiAgKiAgICAgU2V0IHRvIHRydWUgdG8gZm9yY2UgdGhlIGltYWdlIHRvIHdyYXAgdmVydGljYWxseSB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAqICAgICBVc2VmdWwgZm9yIG1hcHMgb3IgaW1hZ2VzIHJlcHJlc2VudGluZyB0aGUgc3VyZmFjZSBvZiBhIHNwaGVyZSBvciBjeWxpbmRlci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbbWluWm9vbUltYWdlUmF0aW89MC45XVxuICAqICAgICBUaGUgbWluaW11bSBwZXJjZW50YWdlICggZXhwcmVzc2VkIGFzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSApIG9mXG4gICogICAgIHRoZSB2aWV3cG9ydCBoZWlnaHQgb3Igd2lkdGggYXQgd2hpY2ggdGhlIHpvb20gb3V0IHdpbGwgYmUgY29uc3RyYWluZWQuXG4gICogICAgIFNldHRpbmcgaXQgdG8gMCwgZm9yIGV4YW1wbGUgd2lsbCBhbGxvdyB5b3UgdG8gem9vbSBvdXQgaW5maW5pdHkuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW21heFpvb21QaXhlbFJhdGlvPTEuMV1cbiAgKiAgICAgVGhlIG1heGltdW0gcmF0aW8gdG8gYWxsb3cgYSB6b29tLWluIHRvIGFmZmVjdCB0aGUgaGlnaGVzdCBsZXZlbCBwaXhlbFxuICAqICAgICByYXRpby4gVGhpcyBjYW4gYmUgc2V0IHRvIEluZmluaXR5IHRvIGFsbG93ICdpbmZpbml0ZScgem9vbWluZyBpbnRvIHRoZVxuICAqICAgICBpbWFnZSB0aG91Z2ggaXQgaXMgbGVzcyBlZmZlY3RpdmUgdmlzdWFsbHkgaWYgdGhlIEhUTUw1IENhbnZhcyBpcyBub3RcbiAgKiAgICAgYXZhaWxibGUgb24gdGhlIHZpZXdpbmcgZGV2aWNlLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtzbW9vdGhUaWxlRWRnZXNNaW5ab29tPTEuMV1cbiAgKiAgICAgQSB6b29tIHBlcmNlbnRhZ2UgKCB3aGVyZSAxIGlzIDEwMCUgKSBvZiB0aGUgaGlnaGVzdCByZXNvbHV0aW9uIGxldmVsLlxuICAqICAgICBXaGVuIHpvb21lZCBpbiBiZXlvbmQgdGhpcyB2YWx1ZSBhbHRlcm5hdGl2ZSBjb21wb3NpdGluZyB3aWxsIGJlIHVzZWQgdG9cbiAgKiAgICAgc21vb3RoIG91dCB0aGUgZWRnZXMgYmV0d2VlbiB0aWxlcy4gVGhpcyB3aWxsIGhhdmUgYSBwZXJmb3JtYW5jZSBpbXBhY3QuXG4gICogICAgIENhbiBiZSBzZXQgdG8gSW5maW5pdHkgdG8gdHVybiBpdCBvZmYuXG4gICogICAgIE5vdGU6IFRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIG9uIGlPUyBkZXZpY2VzIGR1ZSB0byBhIGtub3duIGJ1ZyAoU2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNlYWRyYWdvbi9vcGVuc2VhZHJhZ29uL2lzc3Vlcy85NTJ9KVxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbaU9TRGV2aWNlPT9dXG4gICogICAgIFRydWUgaWYgcnVubmluZyBvbiBhbiBpT1MgZGV2aWNlLCBmYWxzZSBvdGhlcndpc2UuXG4gICogICAgIFVzZWQgdG8gZGlzYWJsZSBjZXJ0YWluIGZlYXR1cmVzIHRoYXQgYmVoYXZlIGRpZmZlcmVudGx5IG9uIGlPUyBkZXZpY2VzLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbYXV0b1Jlc2l6ZT10cnVlXVxuICAqICAgICBTZXQgdG8gZmFsc2UgdG8gcHJldmVudCBwb2xsaW5nIGZvciB2aWV3ZXIgc2l6ZSBjaGFuZ2VzLiBVc2VmdWwgZm9yIHByb3ZpZGluZyBjdXN0b20gcmVzaXplIGJlaGF2aW9yLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbcHJlc2VydmVJbWFnZVNpemVPblJlc2l6ZT1mYWxzZV1cbiAgKiAgICAgU2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgaW1hZ2Ugc2l6ZSBwcmVzZXJ2ZWQgd2hlbiB0aGUgdmlld2VyIGlzIHJlc2l6ZWQuIFRoaXMgcmVxdWlyZXMgYXV0b1Jlc2l6ZT10cnVlIChkZWZhdWx0KS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbbWluU2Nyb2xsRGVsdGFUaW1lPTUwXVxuICAqICAgICBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gY2FudmFzLXNjcm9sbCBldmVudHMuIFRoaXMgdmFsdWUgaGVscHMgbm9ybWFsaXplIHRoZSByYXRlIG9mIGNhbnZhcy1zY3JvbGxcbiAgKiAgICAgZXZlbnRzIGJldHdlZW4gZGlmZmVyZW50IGRldmljZXMsIGNhdXNpbmcgdGhlIGZhc3RlciBkZXZpY2VzIHRvIHNsb3cgZG93biBlbm91Z2ggdG8gbWFrZSB0aGUgem9vbSBjb250cm9sXG4gICogICAgIG1vcmUgbWFuYWdlYWJsZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbcGl4ZWxzUGVyV2hlZWxMaW5lPTQwXVxuICAqICAgICBGb3IgcGl4ZWwtcmVzb2x1dGlvbiBzY3JvbGxpbmcgZGV2aWNlcywgdGhlIG51bWJlciBvZiBwaXhlbHMgZXF1YWwgdG8gb25lIHNjcm9sbCBsaW5lLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFt2aXNpYmlsaXR5UmF0aW89MC41XVxuICAqICAgICBUaGUgcGVyY2VudGFnZSAoIGFzIGEgbnVtYmVyIGZyb20gMCB0byAxICkgb2YgdGhlIHNvdXJjZSBpbWFnZSB3aGljaFxuICAqICAgICBtdXN0IGJlIGtlcHQgd2l0aGluIHRoZSB2aWV3cG9ydC4gIElmIHRoZSBpbWFnZSBpcyBkcmFnZ2VkIGJleW9uZCB0aGF0XG4gICogICAgIGxpbWl0LCBpdCB3aWxsICdib3VuY2UnIGJhY2sgdW50aWwgdGhlIG1pbmltdW0gdmlzaWJpbGl0eSByYXRpbyBpc1xuICAqICAgICBhY2hpZXZlZC4gIFNldHRpbmcgdGhpcyB0byAwIGFuZCB3cmFwSG9yaXpvbnRhbCAoIG9yIHdyYXBWZXJ0aWNhbCApIHRvXG4gICogICAgIHRydWUgd2lsbCBwcm92aWRlIHRoZSBlZmZlY3Qgb2YgYW4gaW5maW5pdGVseSBzY3JvbGxpbmcgdmlld3BvcnQuXG4gICpcbiAgKiBAcHJvcGVydHkge09iamVjdH0gW3ZpZXdwb3J0TWFyZ2lucz17fV1cbiAgKiAgICAgUHVzaGVzIHRoZSBcImhvbWVcIiByZWdpb24gaW4gZnJvbSB0aGUgc2lkZXMgYnkgdGhlIHNwZWNpZmllZCBhbW91bnRzLlxuICAqICAgICBQb3NzaWJsZSBzdWJwcm9wZXJ0aWVzIChOdW1iZXJzLCBpbiBzY3JlZW4gY29vcmRpbmF0ZXMpOiBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20uXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2ltYWdlTG9hZGVyTGltaXQ9MF1cbiAgKiAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlIHJlcXVlc3RzIHRvIG1ha2UgY29uY3VycmVudGx5LiBCeSBkZWZhdWx0XG4gICogICAgIGl0IGlzIHNldCB0byAwIGFsbG93aW5nIHRoZSBicm93c2VyIHRvIG1ha2UgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICogICAgIGltYWdlIHJlcXVlc3RzIGluIHBhcmFsbGVsIGFzIGFsbG93ZWQgYnkgdGhlIGJyb3dzZXJzIHBvbGljeS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbY2xpY2tUaW1lVGhyZXNob2xkPTMwMF1cbiAgKiAgICAgIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHdpdGhpbiB3aGljaCBhIHBvaW50ZXIgZG93bi11cCBldmVudCBjb21iaW5hdGlvblxuICAqICAgICAgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY2xpY2sgZ2VzdHVyZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbY2xpY2tEaXN0VGhyZXNob2xkPTVdXG4gICogICAgICBUaGUgbWF4aW11bSBkaXN0YW5jZSBhbGxvd2VkIGJldHdlZW4gYSBwb2ludGVyIGRvd24gZXZlbnQgYW5kIGEgcG9pbnRlciB1cCBldmVudFxuICAqICAgICAgdG8gYmUgdHJlYXRlZCBhcyBhIGNsaWNrIGdlc3R1cmUuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2RibENsaWNrVGltZVRocmVzaG9sZD0zMDBdXG4gICogICAgICBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3aXRoaW4gd2hpY2ggdHdvIHBvaW50ZXIgZG93bi11cCBldmVudCBjb21iaW5hdGlvbnNcbiAgKiAgICAgIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGRvdWJsZS1jbGljayBnZXN0dXJlLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtkYmxDbGlja0Rpc3RUaHJlc2hvbGQ9MjBdXG4gICogICAgICBUaGUgbWF4aW11bSBkaXN0YW5jZSBhbGxvd2VkIGJldHdlZW4gdHdvIHBvaW50ZXIgY2xpY2sgZXZlbnRzXG4gICogICAgICB0byBiZSB0cmVhdGVkIGFzIGEgZG91YmxlLWNsaWNrIGdlc3R1cmUuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW3NwcmluZ1N0aWZmbmVzcz02LjVdXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2FuaW1hdGlvblRpbWU9MS4yXVxuICAqICAgICBTcGVjaWZpZXMgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBwZXIgZWFjaCB7QGxpbmsgT3BlblNlYWRyYWdvbi5TcHJpbmd9XG4gICogICAgIHdoaWNoIG9jY3VyIHdoZW4gdGhlIGltYWdlIGlzIGRyYWdnZWQgb3Igem9vbWVkLlxuICAqXG4gICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLkdlc3R1cmVTZXR0aW5nc30gW2dlc3R1cmVTZXR0aW5nc01vdXNlXVxuICAqICAgICBTZXR0aW5ncyBmb3IgZ2VzdHVyZXMgZ2VuZXJhdGVkIGJ5IGEgbW91c2UgcG9pbnRlciBkZXZpY2UuIChTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uR2VzdHVyZVNldHRpbmdzfSlcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NNb3VzZS5zY3JvbGxUb1pvb209dHJ1ZV0gLSBab29tIG9uIHNjcm9sbCBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzTW91c2UuY2xpY2tUb1pvb209dHJ1ZV0gLSBab29tIG9uIGNsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NNb3VzZS5kYmxDbGlja1RvWm9vbT1mYWxzZV0gLSBab29tIG9uIGRvdWJsZS1jbGljayBnZXN0dXJlLiBOb3RlOiBJZiBzZXQgdG8gdHJ1ZVxuICAqICAgICB0aGVuIGNsaWNrVG9ab29tIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gcHJldmVudCBtdWx0aXBsZSB6b29tcy5cbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NNb3VzZS5waW5jaFRvWm9vbT1mYWxzZV0gLSBab29tIG9uIHBpbmNoIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NNb3VzZS5mbGlja0VuYWJsZWQ9ZmFsc2VdIC0gRW5hYmxlIGZsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2dlc3R1cmVTZXR0aW5nc01vdXNlLmZsaWNrTWluU3BlZWQ9MTIwXSAtIElmIGZsaWNrRW5hYmxlZCBpcyB0cnVlLCB0aGUgbWluaW11bSBzcGVlZCB0byBpbml0aWF0ZSBhIGZsaWNrIGdlc3R1cmUgKHBpeGVscy1wZXItc2Vjb25kKVxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbZ2VzdHVyZVNldHRpbmdzTW91c2UuZmxpY2tNb21lbnR1bT0wLjI1XSAtIElmIGZsaWNrRW5hYmxlZCBpcyB0cnVlLCB0aGUgbW9tZW50dW0gZmFjdG9yIGZvciB0aGUgZmxpY2sgZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc01vdXNlLnBpbmNoUm90YXRlPWZhbHNlXSAtIElmIHBpbmNoUm90YXRlIGlzIHRydWUsIHRoZSB1c2VyIHdpbGwgaGF2ZSB0aGUgYWJpbGl0eSB0byByb3RhdGUgdGhlIGltYWdlIHVzaW5nIHRoZWlyIGZpbmdlcnMuXG4gICpcbiAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uR2VzdHVyZVNldHRpbmdzfSBbZ2VzdHVyZVNldHRpbmdzVG91Y2hdXG4gICogICAgIFNldHRpbmdzIGZvciBnZXN0dXJlcyBnZW5lcmF0ZWQgYnkgYSB0b3VjaCBwb2ludGVyIGRldmljZS4gKFNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5HZXN0dXJlU2V0dGluZ3N9KVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1RvdWNoLnNjcm9sbFRvWm9vbT1mYWxzZV0gLSBab29tIG9uIHNjcm9sbCBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzVG91Y2guY2xpY2tUb1pvb209ZmFsc2VdIC0gWm9vbSBvbiBjbGljayBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzVG91Y2guZGJsQ2xpY2tUb1pvb209dHJ1ZV0gLSBab29tIG9uIGRvdWJsZS1jbGljayBnZXN0dXJlLiBOb3RlOiBJZiBzZXQgdG8gdHJ1ZVxuICAqICAgICB0aGVuIGNsaWNrVG9ab29tIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gcHJldmVudCBtdWx0aXBsZSB6b29tcy5cbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NUb3VjaC5waW5jaFRvWm9vbT10cnVlXSAtIFpvb20gb24gcGluY2ggZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1RvdWNoLmZsaWNrRW5hYmxlZD10cnVlXSAtIEVuYWJsZSBmbGljayBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtnZXN0dXJlU2V0dGluZ3NUb3VjaC5mbGlja01pblNwZWVkPTEyMF0gLSBJZiBmbGlja0VuYWJsZWQgaXMgdHJ1ZSwgdGhlIG1pbmltdW0gc3BlZWQgdG8gaW5pdGlhdGUgYSBmbGljayBnZXN0dXJlIChwaXhlbHMtcGVyLXNlY29uZClcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2dlc3R1cmVTZXR0aW5nc1RvdWNoLmZsaWNrTW9tZW50dW09MC4yNV0gLSBJZiBmbGlja0VuYWJsZWQgaXMgdHJ1ZSwgdGhlIG1vbWVudHVtIGZhY3RvciBmb3IgdGhlIGZsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NUb3VjaC5waW5jaFJvdGF0ZT1mYWxzZV0gLSBJZiBwaW5jaFJvdGF0ZSBpcyB0cnVlLCB0aGUgdXNlciB3aWxsIGhhdmUgdGhlIGFiaWxpdHkgdG8gcm90YXRlIHRoZSBpbWFnZSB1c2luZyB0aGVpciBmaW5nZXJzLlxuICAqXG4gICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLkdlc3R1cmVTZXR0aW5nc30gW2dlc3R1cmVTZXR0aW5nc1Blbl1cbiAgKiAgICAgU2V0dGluZ3MgZm9yIGdlc3R1cmVzIGdlbmVyYXRlZCBieSBhIHBlbiBwb2ludGVyIGRldmljZS4gKFNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5HZXN0dXJlU2V0dGluZ3N9KVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1Blbi5zY3JvbGxUb1pvb209ZmFsc2VdIC0gWm9vbSBvbiBzY3JvbGwgZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1Blbi5jbGlja1RvWm9vbT10cnVlXSAtIFpvb20gb24gY2xpY2sgZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1Blbi5kYmxDbGlja1RvWm9vbT1mYWxzZV0gLSBab29tIG9uIGRvdWJsZS1jbGljayBnZXN0dXJlLiBOb3RlOiBJZiBzZXQgdG8gdHJ1ZVxuICAqICAgICB0aGVuIGNsaWNrVG9ab29tIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gcHJldmVudCBtdWx0aXBsZSB6b29tcy5cbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NQZW4ucGluY2hUb1pvb209ZmFsc2VdIC0gWm9vbSBvbiBwaW5jaCBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzUGVuLmZsaWNrRW5hYmxlZD1mYWxzZV0gLSBFbmFibGUgZmxpY2sgZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbZ2VzdHVyZVNldHRpbmdzUGVuLmZsaWNrTWluU3BlZWQ9MTIwXSAtIElmIGZsaWNrRW5hYmxlZCBpcyB0cnVlLCB0aGUgbWluaW11bSBzcGVlZCB0byBpbml0aWF0ZSBhIGZsaWNrIGdlc3R1cmUgKHBpeGVscy1wZXItc2Vjb25kKVxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbZ2VzdHVyZVNldHRpbmdzUGVuLmZsaWNrTW9tZW50dW09MC4yNV0gLSBJZiBmbGlja0VuYWJsZWQgaXMgdHJ1ZSwgdGhlIG1vbWVudHVtIGZhY3RvciBmb3IgdGhlIGZsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NQZW4ucGluY2hSb3RhdGU9ZmFsc2VdIC0gSWYgcGluY2hSb3RhdGUgaXMgdHJ1ZSwgdGhlIHVzZXIgd2lsbCBoYXZlIHRoZSBhYmlsaXR5IHRvIHJvdGF0ZSB0aGUgaW1hZ2UgdXNpbmcgdGhlaXIgZmluZ2Vycy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5HZXN0dXJlU2V0dGluZ3N9IFtnZXN0dXJlU2V0dGluZ3NVbmtub3duXVxuICAqICAgICBTZXR0aW5ncyBmb3IgZ2VzdHVyZXMgZ2VuZXJhdGVkIGJ5IHVua25vd24gcG9pbnRlciBkZXZpY2VzLiAoU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLkdlc3R1cmVTZXR0aW5nc30pXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzVW5rbm93bi5zY3JvbGxUb1pvb209dHJ1ZV0gLSBab29tIG9uIHNjcm9sbCBnZXN0dXJlXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzVW5rbm93bi5jbGlja1RvWm9vbT1mYWxzZV0gLSBab29tIG9uIGNsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NVbmtub3duLmRibENsaWNrVG9ab29tPXRydWVdIC0gWm9vbSBvbiBkb3VibGUtY2xpY2sgZ2VzdHVyZS4gTm90ZTogSWYgc2V0IHRvIHRydWVcbiAgKiAgICAgdGhlbiBjbGlja1RvWm9vbSBzaG91bGQgYmUgc2V0IHRvIGZhbHNlIHRvIHByZXZlbnQgbXVsdGlwbGUgem9vbXMuXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbZ2VzdHVyZVNldHRpbmdzVW5rbm93bi5waW5jaFRvWm9vbT10cnVlXSAtIFpvb20gb24gcGluY2ggZ2VzdHVyZVxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2dlc3R1cmVTZXR0aW5nc1Vua25vd24uZmxpY2tFbmFibGVkPXRydWVdIC0gRW5hYmxlIGZsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2dlc3R1cmVTZXR0aW5nc1Vua25vd24uZmxpY2tNaW5TcGVlZD0xMjBdIC0gSWYgZmxpY2tFbmFibGVkIGlzIHRydWUsIHRoZSBtaW5pbXVtIHNwZWVkIHRvIGluaXRpYXRlIGEgZmxpY2sgZ2VzdHVyZSAocGl4ZWxzLXBlci1zZWNvbmQpXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtnZXN0dXJlU2V0dGluZ3NVbmtub3duLmZsaWNrTW9tZW50dW09MC4yNV0gLSBJZiBmbGlja0VuYWJsZWQgaXMgdHJ1ZSwgdGhlIG1vbWVudHVtIGZhY3RvciBmb3IgdGhlIGZsaWNrIGdlc3R1cmVcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtnZXN0dXJlU2V0dGluZ3NVbmtub3duLnBpbmNoUm90YXRlPWZhbHNlXSAtIElmIHBpbmNoUm90YXRlIGlzIHRydWUsIHRoZSB1c2VyIHdpbGwgaGF2ZSB0aGUgYWJpbGl0eSB0byByb3RhdGUgdGhlIGltYWdlIHVzaW5nIHRoZWlyIGZpbmdlcnMuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW3pvb21QZXJDbGljaz0yLjBdXG4gICogICAgIFRoZSBcInpvb20gZGlzdGFuY2VcIiBwZXIgbW91c2UgY2xpY2sgb3IgdG91Y2ggdGFwLiA8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBTZXR0aW5nIHRoaXMgdG8gMS4wIGVmZmVjdGl2ZWx5IGRpc2FibGVzIHRoZSBjbGljay10by16b29tIGZlYXR1cmUgKGFsc28gc2VlIGdlc3R1cmVTZXR0aW5nc1tNb3VzZXxUb3VjaHxQZW5dLmNsaWNrVG9ab29tL2RibENsaWNrVG9ab29tKS48L2VtPlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFt6b29tUGVyU2Nyb2xsPTEuMl1cbiAgKiAgICAgVGhlIFwiem9vbSBkaXN0YW5jZVwiIHBlciBtb3VzZSBzY3JvbGwgb3IgdG91Y2ggcGluY2guIDxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFNldHRpbmcgdGhpcyB0byAxLjAgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIG1vdXNlLXdoZWVsIHpvb20gZmVhdHVyZSAoYWxzbyBzZWUgZ2VzdHVyZVNldHRpbmdzW01vdXNlfFRvdWNofFBlbl0uc2Nyb2xsVG9ab29tfSkuPC9lbT5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbem9vbVBlclNlY29uZD0xLjBdXG4gICogICAgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBhbmltYXRlIGEgc2luZ2xlIHpvb20gZXZlbnQgb3Zlci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3Nob3dOYXZpZ2F0b3I9ZmFsc2VdXG4gICogICAgIFNldCB0byB0cnVlIHRvIG1ha2UgdGhlIG5hdmlnYXRvciBtaW5pbWFwIGFwcGVhci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBbbmF2aWdhdG9ySWQ9bmF2aWdhdG9yLUdFTkVSQVRFRCBEQVRFXVxuICAqICAgICBUaGUgSUQgb2YgYSBkaXYgdG8gaG9sZCB0aGUgbmF2aWdhdG9yIG1pbmltYXAuXG4gICogICAgIElmIGFuIElEIGlzIHNwZWNpZmllZCwgdGhlIG5hdmlnYXRvclBvc2l0aW9uLCBuYXZpZ2F0b3JTaXplUmF0aW8sIG5hdmlnYXRvck1haW50YWluU2l6ZVJhdGlvLCBuYXZpZ2F0b3JbVG9wfExlZnR8SGVpZ2h0fFdpZHRoXSBhbmQgbmF2aWdhdG9yQXV0b0ZhZGUgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQuXG4gICogICAgIElmIGFuIElEIGlzIG5vdCBzcGVjaWZpZWQsIGEgZGl2IGVsZW1lbnQgd2lsbCBiZSBnZW5lcmF0ZWQgYW5kIHBsYWNlZCBvbiB0b3Agb2YgdGhlIG1haW4gaW1hZ2UuXG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gW25hdmlnYXRvclBvc2l0aW9uPSdUT1BfUklHSFQnXVxuICAqICAgICBWYWxpZCB2YWx1ZXMgYXJlICdUT1BfTEVGVCcsICdUT1BfUklHSFQnLCAnQk9UVE9NX0xFRlQnLCAnQk9UVE9NX1JJR0hUJywgb3IgJ0FCU09MVVRFJy48YnI+XG4gICogICAgIElmICdBQlNPTFVURScgaXMgc3BlY2lmaWVkLCB0aGVuIG5hdmlnYXRvcltUb3B8TGVmdHxIZWlnaHR8V2lkdGhdIGRldGVybWluZXMgdGhlIHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBuYXZpZ2F0b3IgbWluaW1hcCBpbiB0aGUgdmlld2VyLCBhbmQgbmF2aWdhdG9yU2l6ZVJhdGlvIGFuZCBuYXZpZ2F0b3JNYWludGFpblNpemVSYXRpbyBhcmUgaWdub3JlZC48YnI+XG4gICogICAgIEZvciAnVE9QX0xFRlQnLCAnVE9QX1JJR0hUJywgJ0JPVFRPTV9MRUZUJywgYW5kICdCT1RUT01fUklHSFQnLCB0aGUgbmF2aWdhdG9yU2l6ZVJhdGlvIG9yIG5hdmlnYXRvcltIZWlnaHR8V2lkdGhdIHZhbHVlcyBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIG5hdmlnYXRvciBtaW5pbWFwLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtuYXZpZ2F0b3JTaXplUmF0aW89MC4yXVxuICAqICAgICBSYXRpbyBvZiBuYXZpZ2F0b3Igc2l6ZSB0byB2aWV3ZXIgc2l6ZS4gSWdub3JlZCBpZiBuYXZpZ2F0b3JbSGVpZ2h0fFdpZHRoXSBhcmUgc3BlY2lmaWVkLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbbmF2aWdhdG9yTWFpbnRhaW5TaXplUmF0aW89ZmFsc2VdXG4gICogICAgIElmIHRydWUsIHRoZSBuYXZpZ2F0b3IgbWluaW1hcCBpcyByZXNpemVkICh1c2luZyBuYXZpZ2F0b3JTaXplUmF0aW8pIHdoZW4gdGhlIHZpZXdlciBzaXplIGNoYW5nZXMuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcnxTdHJpbmd9IFtuYXZpZ2F0b3JUb3A9bnVsbF1cbiAgKiAgICAgU3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmF2aWdhdG9yIG1pbmltYXAgKHNlZSBuYXZpZ2F0b3JQb3NpdGlvbikuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcnxTdHJpbmd9IFtuYXZpZ2F0b3JMZWZ0PW51bGxdXG4gICogICAgIFNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIG5hdmlnYXRvciBtaW5pbWFwIChzZWUgbmF2aWdhdG9yUG9zaXRpb24pLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ8U3RyaW5nfSBbbmF2aWdhdG9ySGVpZ2h0PW51bGxdXG4gICogICAgIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgbmF2aWdhdG9yIG1pbmltYXAgKHNlZSBuYXZpZ2F0b3JQb3NpdGlvbikuXG4gICogICAgIElmIHNwZWNpZmllZCwgbmF2aWdhdG9yU2l6ZVJhdGlvIGFuZCBuYXZpZ2F0b3JNYWludGFpblNpemVSYXRpbyBhcmUgaWdub3JlZC5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfFN0cmluZ30gW25hdmlnYXRvcldpZHRoPW51bGxdXG4gICogICAgIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgbmF2aWdhdG9yIG1pbmltYXAgKHNlZSBuYXZpZ2F0b3JQb3NpdGlvbikuXG4gICogICAgIElmIHNwZWNpZmllZCwgbmF2aWdhdG9yU2l6ZVJhdGlvIGFuZCBuYXZpZ2F0b3JNYWludGFpblNpemVSYXRpbyBhcmUgaWdub3JlZC5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW25hdmlnYXRvckF1dG9SZXNpemU9dHJ1ZV1cbiAgKiAgICAgU2V0IHRvIGZhbHNlIHRvIHByZXZlbnQgcG9sbGluZyBmb3IgbmF2aWdhdG9yIHNpemUgY2hhbmdlcy4gVXNlZnVsIGZvciBwcm92aWRpbmcgY3VzdG9tIHJlc2l6ZSBiZWhhdmlvci5cbiAgKiAgICAgU2V0dGluZyB0byBmYWxzZSBjYW4gYWxzbyBpbXByb3ZlIHBlcmZvcm1hbmNlIHdoZW4gdGhlIG5hdmlnYXRvciBpcyBjb25maWd1cmVkIHRvIGEgZml4ZWQgc2l6ZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW25hdmlnYXRvckF1dG9GYWRlPXRydWVdXG4gICogICAgIElmIHRoZSB1c2VyIHN0b3BzIGludGVyYWN0aW5nIHdpdGggdGhlIHZpZXdwb3J0LCBmYWRlIHRoZSBuYXZpZ2F0b3IgbWluaW1hcC5cbiAgKiAgICAgU2V0dGluZyB0byBmYWxzZSB3aWxsIG1ha2UgdGhlIG5hdmlnYXRvciBtaW5pbWFwIGFsd2F5cyB2aXNpYmxlLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbbmF2aWdhdG9yUm90YXRlPXRydWVdXG4gICogICAgIElmIHRydWUsIHRoZSBuYXZpZ2F0b3Igd2lsbCBiZSByb3RhdGVkIHRvZ2V0aGVyIHdpdGggdGhlIHZpZXdlci5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbY29udHJvbHNGYWRlRGVsYXk9MjAwMF1cbiAgKiAgICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBvbmNlIHRoZSB1c2VyIGhhcyBzdG9wcGVkIGludGVyYWN0aW5nXG4gICogICAgIHdpdGggdGhlIGludGVyZmFjZSBiZWZvcmUgYmVnaW5pbmcgdG8gZmFkZSB0aGUgY29udHJvbHMuIEFzc3VtZXNcbiAgKiAgICAgc2hvd05hdmlnYXRpb25Db250cm9sIGFuZCBhdXRvSGlkZUNvbnRyb2xzIGFyZSBib3RoIHRydWUuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2NvbnRyb2xzRmFkZUxlbmd0aD0xNTAwXVxuICAqICAgICBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBhbmltYXRlIHRoZSBjb250cm9scyBmYWRpbmcgb3V0LlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFttYXhJbWFnZUNhY2hlQ291bnQ9MjAwXVxuICAqICAgICBUaGUgbWF4IG51bWJlciBvZiBpbWFnZXMgd2Ugc2hvdWxkIGtlZXAgaW4gbWVtb3J5IChwZXIgZHJhd2VyKS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbdGltZW91dD0zMDAwMF1cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3VzZUNhbnZhcz10cnVlXVxuICAqICAgICBTZXQgdG8gZmFsc2UgdG8gbm90IHVzZSBhbiBIVE1MIGNhbnZhcyBlbGVtZW50IGZvciBpbWFnZSByZW5kZXJpbmcgZXZlbiBpZiBjYW52YXMgaXMgc3VwcG9ydGVkLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFttaW5QaXhlbFJhdGlvPTAuNV1cbiAgKiAgICAgVGhlIGhpZ2hlciB0aGUgbWluUGl4ZWxSYXRpbywgdGhlIGxvd2VyIHRoZSBxdWFsaXR5IG9mIHRoZSBpbWFnZSB0aGF0XG4gICogICAgIGlzIGNvbnNpZGVyZWQgc3VmZmljaWVudCB0byBzdG9wIHJlbmRlcmluZyBhIGdpdmVuIHpvb20gbGV2ZWwuICBGb3JcbiAgKiAgICAgZXhhbXBsZSwgaWYgeW91IGFyZSB0YXJnZXRpbmcgbW9iaWxlIGRldmljZXMgd2l0aCBsZXNzIGJhbmR3aXRoIHlvdSBtYXlcbiAgKiAgICAgdHJ5IHNldHRpbmcgdGhpcyB0byAxLjUgb3IgaGlnaGVyLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbbW91c2VOYXZFbmFibGVkPXRydWVdXG4gICogICAgIElzIHRoZSB1c2VyIGFibGUgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaW1hZ2UgdmlhIG1vdXNlIG9yIHRvdWNoLiBEZWZhdWx0XG4gICogICAgIGludGVyYWN0aW9ucyBpbmNsdWRlIGRyYWdpbmcgdGhlIGltYWdlIGluIGEgcGxhbmUsIGFuZCB6b29taW5nIGluIHRvd2FyZFxuICAqICAgICBhbmQgYXdheSBmcm9tIHRoZSBpbWFnZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3Nob3dOYXZpZ2F0aW9uQ29udHJvbD10cnVlXVxuICAqICAgICBTZXQgdG8gZmFsc2UgdG8gcHJldmVudCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIGNvbnRyb2xzLjxicj5cbiAgKiAgICAgTm90ZSB0aGF0IGlmIHNldCB0byBmYWxzZSwgdGhlIGN1c3RvbXMgYnV0dG9ucyBzZXQgYnkgdGhlIG9wdGlvbnNcbiAgKiAgICAgem9vbUluQnV0dG9uLCB6b29tT3V0QnV0dG9uIGV0YywgYXJlIHJlbmRlcmVkIGluYWN0aXZlLlxuICAqXG4gICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLkNvbnRyb2xBbmNob3J9IFtuYXZpZ2F0aW9uQ29udHJvbEFuY2hvcj1UT1BfTEVGVF1cbiAgKiAgICAgUGxhY2VtZW50IG9mIHRoZSBkZWZhdWx0IG5hdmlnYXRpb24gY29udHJvbHMuXG4gICogICAgIFRvIHNldCB0aGUgcGxhY2VtZW50IG9mIHRoZSBzZXF1ZW5jZSBjb250cm9scywgc2VlIHRoZVxuICAqICAgICBzZXF1ZW5jZUNvbnRyb2xBbmNob3Igb3B0aW9uLlxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbc2hvd1pvb21Db250cm9sPXRydWVdXG4gICogICAgIElmIHRydWUgdGhlbiArIGFuZCAtIGJ1dHRvbnMgdG8gem9vbSBpbiBhbmQgb3V0IGFyZSBkaXNwbGF5ZWQuPGJyPlxuICAqICAgICBOb3RlOiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zLnNob3dOYXZpZ2F0aW9uQ29udHJvbH0gaXMgb3ZlcnJpZGluZ1xuICAqICAgICB0aGlzIHNldHRpbmcgd2hlbiBzZXQgdG8gZmFsc2UuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtzaG93SG9tZUNvbnRyb2w9dHJ1ZV1cbiAgKiAgICAgSWYgdHJ1ZSB0aGVuIHRoZSAnR28gaG9tZScgYnV0dG9uIGlzIGRpc3BsYXllZCB0byBnbyBiYWNrIHRvIHRoZSBvcmlnaW5hbFxuICAqICAgICB6b29tIGFuZCBwYW4uPGJyPlxuICAqICAgICBOb3RlOiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zLnNob3dOYXZpZ2F0aW9uQ29udHJvbH0gaXMgb3ZlcnJpZGluZ1xuICAqICAgICB0aGlzIHNldHRpbmcgd2hlbiBzZXQgdG8gZmFsc2UuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtzaG93RnVsbFBhZ2VDb250cm9sPXRydWVdXG4gICogICAgIElmIHRydWUgdGhlbiB0aGUgJ1RvZ2dsZSBmdWxsIHBhZ2UnIGJ1dHRvbiBpcyBkaXNwbGF5ZWQgdG8gc3dpdGNoXG4gICogICAgIGJldHdlZW4gZnVsbCBwYWdlIGFuZCBub3JtYWwgbW9kZS48YnI+XG4gICogICAgIE5vdGU6IHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMuc2hvd05hdmlnYXRpb25Db250cm9sfSBpcyBvdmVycmlkaW5nXG4gICogICAgIHRoaXMgc2V0dGluZyB3aGVuIHNldCB0byBmYWxzZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3Nob3dSb3RhdGlvbkNvbnRyb2w9ZmFsc2VdXG4gICogICAgIElmIHRydWUgdGhlbiB0aGUgcm90YXRlIGxlZnQvcmlnaHQgY29udHJvbHMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGVcbiAgKiAgICAgc3RhbmRhcmQgY29udHJvbHMuIFRoaXMgaXMgYWxzbyBzdWJqZWN0IHRvIHRoZSBicm93c2VyIHN1cHBvcnQgZm9yIHJvdGF0ZVxuICAqICAgICAoZS5nLiB2aWV3ZXIuZHJhd2VyLmNhblJvdGF0ZSgpKS48YnI+XG4gICogICAgIE5vdGU6IHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMuc2hvd05hdmlnYXRpb25Db250cm9sfSBpcyBvdmVycmlkaW5nXG4gICogICAgIHRoaXMgc2V0dGluZyB3aGVuIHNldCB0byBmYWxzZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3Nob3dTZXF1ZW5jZUNvbnRyb2w9dHJ1ZV1cbiAgKiAgICAgSWYgc2VxdWVuY2VNb2RlIGlzIHRydWUsIHRoZW4gcHJvdmlkZSBidXR0b25zIGZvciBuYXZpZ2F0aW5nIGZvcndhcmQgYW5kXG4gICogICAgIGJhY2t3YXJkIHRocm91Z2ggdGhlIGltYWdlcy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Db250cm9sQW5jaG9yfSBbc2VxdWVuY2VDb250cm9sQW5jaG9yPVRPUF9MRUZUXVxuICAqICAgICBQbGFjZW1lbnQgb2YgdGhlIGRlZmF1bHQgc2VxdWVuY2UgY29udHJvbHMuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtuYXZQcmV2TmV4dFdyYXA9ZmFsc2VdXG4gICogICAgIElmIHRydWUgdGhlbiB0aGUgJ3ByZXZpb3VzJyBidXR0b24gd2lsbCB3cmFwIHRvIHRoZSBsYXN0IGltYWdlIHdoZW5cbiAgKiAgICAgdmlld2luZyB0aGUgZmlyc3QgaW1hZ2UgYW5kIHRoZSAnbmV4dCcgYnV0dG9uIHdpbGwgd3JhcCB0byB0aGUgZmlyc3RcbiAgKiAgICAgaW1hZ2Ugd2hlbiB2aWV3aW5nIHRoZSBsYXN0IGltYWdlLlxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHpvb21JbkJ1dHRvblxuICAqICAgICBTZXQgdGhlIGlkIG9mIHRoZSBjdXN0b20gJ1pvb20gaW4nIGJ1dHRvbiB0byB1c2UuXG4gICogICAgIFRoaXMgaXMgdXNlZnVsIHRvIGhhdmUgYSBjdXN0b20gYnV0dG9uIGFueXdoZXJlIGluIHRoZSB3ZWIgcGFnZS48YnI+XG4gICogICAgIFRvIG9ubHkgY2hhbmdlIHRoZSBidXR0b24gaW1hZ2VzLCBjb25zaWRlciB1c2luZ1xuICAqICAgICB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zLm5hdkltYWdlc31cbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB6b29tT3V0QnV0dG9uXG4gICogICAgIFNldCB0aGUgaWQgb2YgdGhlIGN1c3RvbSAnWm9vbSBvdXQnIGJ1dHRvbiB0byB1c2UuXG4gICogICAgIFRoaXMgaXMgdXNlZnVsIHRvIGhhdmUgYSBjdXN0b20gYnV0dG9uIGFueXdoZXJlIGluIHRoZSB3ZWIgcGFnZS48YnI+XG4gICogICAgIFRvIG9ubHkgY2hhbmdlIHRoZSBidXR0b24gaW1hZ2VzLCBjb25zaWRlciB1c2luZ1xuICAqICAgICB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zLm5hdkltYWdlc31cbiAgKlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBob21lQnV0dG9uXG4gICogICAgIFNldCB0aGUgaWQgb2YgdGhlIGN1c3RvbSAnR28gaG9tZScgYnV0dG9uIHRvIHVzZS5cbiAgKiAgICAgVGhpcyBpcyB1c2VmdWwgdG8gaGF2ZSBhIGN1c3RvbSBidXR0b24gYW55d2hlcmUgaW4gdGhlIHdlYiBwYWdlLjxicj5cbiAgKiAgICAgVG8gb25seSBjaGFuZ2UgdGhlIGJ1dHRvbiBpbWFnZXMsIGNvbnNpZGVyIHVzaW5nXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMubmF2SW1hZ2VzfVxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IGZ1bGxQYWdlQnV0dG9uXG4gICogICAgIFNldCB0aGUgaWQgb2YgdGhlIGN1c3RvbSAnVG9nZ2xlIGZ1bGwgcGFnZScgYnV0dG9uIHRvIHVzZS5cbiAgKiAgICAgVGhpcyBpcyB1c2VmdWwgdG8gaGF2ZSBhIGN1c3RvbSBidXR0b24gYW55d2hlcmUgaW4gdGhlIHdlYiBwYWdlLjxicj5cbiAgKiAgICAgVG8gb25seSBjaGFuZ2UgdGhlIGJ1dHRvbiBpbWFnZXMsIGNvbnNpZGVyIHVzaW5nXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMubmF2SW1hZ2VzfVxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZUxlZnRCdXR0b25cbiAgKiAgICAgU2V0IHRoZSBpZCBvZiB0aGUgY3VzdG9tICdSb3RhdGUgbGVmdCcgYnV0dG9uIHRvIHVzZS5cbiAgKiAgICAgVGhpcyBpcyB1c2VmdWwgdG8gaGF2ZSBhIGN1c3RvbSBidXR0b24gYW55d2hlcmUgaW4gdGhlIHdlYiBwYWdlLjxicj5cbiAgKiAgICAgVG8gb25seSBjaGFuZ2UgdGhlIGJ1dHRvbiBpbWFnZXMsIGNvbnNpZGVyIHVzaW5nXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMubmF2SW1hZ2VzfVxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZVJpZ2h0QnV0dG9uXG4gICogICAgIFNldCB0aGUgaWQgb2YgdGhlIGN1c3RvbSAnUm90YXRlIHJpZ2h0JyBidXR0b24gdG8gdXNlLlxuICAqICAgICBUaGlzIGlzIHVzZWZ1bCB0byBoYXZlIGEgY3VzdG9tIGJ1dHRvbiBhbnl3aGVyZSBpbiB0aGUgd2ViIHBhZ2UuPGJyPlxuICAqICAgICBUbyBvbmx5IGNoYW5nZSB0aGUgYnV0dG9uIGltYWdlcywgY29uc2lkZXIgdXNpbmdcbiAgKiAgICAge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9ucy5uYXZJbWFnZXN9XG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gcHJldmlvdXNCdXR0b25cbiAgKiAgICAgU2V0IHRoZSBpZCBvZiB0aGUgY3VzdG9tICdQcmV2aW91cyBwYWdlJyBidXR0b24gdG8gdXNlLlxuICAqICAgICBUaGlzIGlzIHVzZWZ1bCB0byBoYXZlIGEgY3VzdG9tIGJ1dHRvbiBhbnl3aGVyZSBpbiB0aGUgd2ViIHBhZ2UuPGJyPlxuICAqICAgICBUbyBvbmx5IGNoYW5nZSB0aGUgYnV0dG9uIGltYWdlcywgY29uc2lkZXIgdXNpbmdcbiAgKiAgICAge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9ucy5uYXZJbWFnZXN9XG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gbmV4dEJ1dHRvblxuICAqICAgICBTZXQgdGhlIGlkIG9mIHRoZSBjdXN0b20gJ05leHQgcGFnZScgYnV0dG9uIHRvIHVzZS5cbiAgKiAgICAgVGhpcyBpcyB1c2VmdWwgdG8gaGF2ZSBhIGN1c3RvbSBidXR0b24gYW55d2hlcmUgaW4gdGhlIHdlYiBwYWdlLjxicj5cbiAgKiAgICAgVG8gb25seSBjaGFuZ2UgdGhlIGJ1dHRvbiBpbWFnZXMsIGNvbnNpZGVyIHVzaW5nXG4gICogICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnMubmF2SW1hZ2VzfVxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbc2VxdWVuY2VNb2RlPWZhbHNlXVxuICAqICAgICBTZXQgdG8gdHJ1ZSB0byBoYXZlIHRoZSB2aWV3ZXIgdHJlYXQgeW91ciB0aWxlc291cmNlcyBhcyBhIHNlcXVlbmNlIG9mIGltYWdlcyB0b1xuICAqICAgICBiZSBvcGVuZWQgb25lIGF0IGEgdGltZSByYXRoZXIgdGhhbiBhbGwgYXQgb25jZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbaW5pdGlhbFBhZ2U9MF1cbiAgKiAgICAgSWYgc2VxdWVuY2VNb2RlIGlzIHRydWUsIGRpc3BsYXkgdGhpcyBwYWdlIGluaXRpYWxseS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW3ByZXNlcnZlVmlld3BvcnQ9ZmFsc2VdXG4gICogICAgIElmIHNlcXVlbmNlTW9kZSBpcyB0cnVlLCB0aGVuIG5vcm1hbGx5IG5hdmlnYXRpbmcgdGhyb3VnaCBlYWNoIGltYWdlIHJlc2V0cyB0aGVcbiAgKiAgICAgdmlld3BvcnQgdG8gJ2hvbWUnIHBvc2l0aW9uLiAgSWYgcHJlc2VydmVWaWV3cG9ydCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgdmlld3BvcnRcbiAgKiAgICAgcG9zaXRpb24gaXMgcHJlc2VydmVkIHdoZW4gbmF2aWdhdGluZyBiZXR3ZWVuIGltYWdlcyBpbiB0aGUgc2VxdWVuY2UuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtwcmVzZXJ2ZU92ZXJsYXlzPWZhbHNlXVxuICAqICAgICBJZiBzZXF1ZW5jZU1vZGUgaXMgdHJ1ZSwgdGhlbiBub3JtYWxseSBuYXZpZ2F0aW5nIHRocm91Z2ggZWFjaCBpbWFnZVxuICAqICAgICByZXNldHMgdGhlIG92ZXJsYXlzLlxuICAqICAgICBJZiBwcmVzZXJ2ZU92ZXJsYXlzIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBvdmVybGF5cyBhZGRlZCB3aXRoIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNhZGRPdmVybGF5fVxuICAqICAgICBhcmUgcHJlc2VydmVkIHdoZW4gbmF2aWdhdGluZyBiZXR3ZWVuIGltYWdlcyBpbiB0aGUgc2VxdWVuY2UuXG4gICogICAgIE5vdGU6IHNldHRpbmcgcHJlc2VydmVPdmVybGF5cyBvdmVycmlkZXMgYW55IG92ZXJsYXlzIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsXG4gICogICAgIFwib3ZlcmxheXNcIiBvcHRpb24gZm9yIHRoZSBWaWV3ZXIuIEl0J3MgYWxzbyBub3QgY29tcGF0aWJsZSB3aXRoIHNwZWNpZnlpbmdcbiAgKiAgICAgcGVyLXRpbGVTb3VyY2Ugb3ZlcmxheXMgdmlhIHRoZSBvcHRpb25zLCBhcyB0aG9zZSBvdmVybGF5cyB3aWxsIHBlcnNpc3RcbiAgKiAgICAgZXZlbiBhZnRlciB0aGUgdGlsZVNvdXJjZSBpcyBjbG9zZWQuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFtzaG93UmVmZXJlbmNlU3RyaXA9ZmFsc2VdXG4gICogICAgIElmIHNlcXVlbmNlTW9kZSBpcyB0cnVlLCB0aGVuIGRpc3BsYXkgYSBzY3JvbGxpbmcgc3RyaXAgb2YgaW1hZ2UgdGh1bWJuYWlscyBmb3JcbiAgKiAgICAgbmF2aWdhdGluZyB0aHJvdWdoIHRoZSBpbWFnZXMuXG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gW3JlZmVyZW5jZVN0cmlwU2Nyb2xsPSdob3Jpem9udGFsJ11cbiAgKlxuICAqIEBwcm9wZXJ0eSB7RWxlbWVudH0gW3JlZmVyZW5jZVN0cmlwRWxlbWVudD1udWxsXVxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtyZWZlcmVuY2VTdHJpcEhlaWdodD1udWxsXVxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtyZWZlcmVuY2VTdHJpcFdpZHRoPW51bGxdXG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gW3JlZmVyZW5jZVN0cmlwUG9zaXRpb249J0JPVFRPTV9MRUZUJ11cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBbcmVmZXJlbmNlU3RyaXBTaXplUmF0aW89MC4yXVxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBbY29sbGVjdGlvbk1vZGU9ZmFsc2VdXG4gICogICAgIFNldCB0byB0cnVlIHRvIGhhdmUgdGhlIHZpZXdlciBhcnJhbmdlIHlvdXIgVGlsZWRJbWFnZXMgaW4gYSBncmlkIG9yIGxpbmUuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2NvbGxlY3Rpb25Sb3dzPTNdXG4gICogICAgIElmIGNvbGxlY3Rpb25Nb2RlIGlzIHRydWUsIHNwZWNpZmllcyBob3cgbWFueSByb3dzIHRoZSBncmlkIHNob3VsZCBoYXZlLiBVc2UgMSB0byBtYWtlIGEgbGluZS5cbiAgKiAgICAgSWYgY29sbGVjdGlvbkxheW91dCBpcyAndmVydGljYWwnLCBzcGVjaWZpZXMgaG93IG1hbnkgY29sdW1ucyBpbnN0ZWFkLlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtjb2xsZWN0aW9uQ29sdW1ucz0wXVxuICAqICAgICBJZiBjb2xsZWN0aW9uTW9kZSBpcyB0cnVlLCBzcGVjaWZpZXMgaG93IG1hbnkgY29sdW1ucyB0aGUgZ3JpZCBzaG91bGQgaGF2ZS4gVXNlIDEgdG8gbWFrZSBhIGxpbmUuXG4gICogICAgIElmIGNvbGxlY3Rpb25MYXlvdXQgaXMgJ3ZlcnRpY2FsJywgc3BlY2lmaWVzIGhvdyBtYW55IHJvd3MgaW5zdGVhZC4gSWdub3JlZCBpZiBjb2xsZWN0aW9uUm93cyBpcyBub3Qgc2V0IHRvIGEgZmFsc3kgdmFsdWUuXG4gICpcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gW2NvbGxlY3Rpb25MYXlvdXQ9J2hvcml6b250YWwnXVxuICAqICAgICBJZiBjb2xsZWN0aW9uTW9kZSBpcyB0cnVlLCBzcGVjaWZpZXMgd2hldGhlciB0byBhcnJhbmdlIHZlcnRpY2FsbHkgb3IgaG9yaXpvbnRhbGx5LlxuICAqXG4gICogQHByb3BlcnR5IHtOdW1iZXJ9IFtjb2xsZWN0aW9uVGlsZVNpemU9ODAwXVxuICAqICAgICBJZiBjb2xsZWN0aW9uTW9kZSBpcyB0cnVlLCBzcGVjaWZpZXMgdGhlIHNpemUsIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLCBmb3IgZWFjaCBUaWxlZEltYWdlIHRvIGZpdCBpbnRvLlxuICAqICAgICBUaGUgVGlsZWRJbWFnZSB3aWxsIGJlIGNlbnRlcmVkIHdpdGhpbiBhIHNxdWFyZSBvZiB0aGUgc3BlY2lmaWVkIHNpemUuXG4gICpcbiAgKiBAcHJvcGVydHkge051bWJlcn0gW2NvbGxlY3Rpb25UaWxlTWFyZ2luPTgwXVxuICAqICAgICBJZiBjb2xsZWN0aW9uTW9kZSBpcyB0cnVlLCBzcGVjaWZpZXMgdGhlIG1hcmdpbiwgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMsIGJldHdlZW4gZWFjaCBUaWxlZEltYWdlLlxuICAqXG4gICogQHByb3BlcnR5IHtTdHJpbmd8Qm9vbGVhbn0gW2Nyb3NzT3JpZ2luUG9saWN5PWZhbHNlXVxuICAqICAgICBWYWxpZCB2YWx1ZXMgYXJlICdBbm9ueW1vdXMnLCAndXNlLWNyZWRlbnRpYWxzJywgYW5kIGZhbHNlLiBJZiBmYWxzZSwgY2FudmFzIHJlcXVlc3RzIHdpbGxcbiAgKiAgICAgbm90IHVzZSBDT1JTLCBhbmQgdGhlIGNhbnZhcyB3aWxsIGJlIHRhaW50ZWQuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IFthamF4V2l0aENyZWRlbnRpYWxzPWZhbHNlXVxuICAqICAgICBXaGV0aGVyIHRvIHNldCB0aGUgd2l0aENyZWRlbnRpYWxzIFhIUiBmbGFnIGZvciBBSkFYIHJlcXVlc3RzICh3aGVuIGxvYWRpbmcgdGlsZSBzb3VyY2VzKS5cbiAgKiAgICAgTm90ZSB0aGF0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYXQgdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2V9IGxldmVsLlxuICAqXG4gICovXG5cbiAvKipcbiAgKiBTZXR0aW5ncyBmb3IgZ2VzdHVyZXMgZ2VuZXJhdGVkIGJ5IGEgcG9pbnRlciBkZXZpY2UuXG4gICpcbiAgKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXN0dXJlU2V0dGluZ3NcbiAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAqXG4gICogQHByb3BlcnR5IHtCb29sZWFufSBzY3JvbGxUb1pvb21cbiAgKiAgICAgU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgem9vbWluZyBvbiBzY3JvbGwgZ2VzdHVyZXMuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGNsaWNrVG9ab29tXG4gICogICAgIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHpvb21pbmcgb24gY2xpY2sgZ2VzdHVyZXMuXG4gICpcbiAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGRibENsaWNrVG9ab29tXG4gICogICAgIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHpvb21pbmcgb24gZG91YmxlLWNsaWNrIGdlc3R1cmVzLiBOb3RlOiBJZiBzZXQgdG8gdHJ1ZVxuICAqICAgICB0aGVuIGNsaWNrVG9ab29tIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgdG8gcHJldmVudCBtdWx0aXBsZSB6b29tcy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcGluY2hUb1pvb21cbiAgKiAgICAgU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgem9vbWluZyBvbiBwaW5jaCBnZXN0dXJlcy5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZmxpY2tFbmFibGVkXG4gICogICAgIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHRoZSBraW5ldGljIHBhbm5pbmcgZWZmZWN0IChmbGljaykgYXQgdGhlIGVuZCBvZiBhIGRyYWcgZ2VzdHVyZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBmbGlja01pblNwZWVkXG4gICogICAgIElmIGZsaWNrRW5hYmxlZCBpcyB0cnVlLCB0aGUgbWluaW11bSBzcGVlZCAoaW4gcGl4ZWxzLXBlci1zZWNvbmQpIHJlcXVpcmVkIHRvIGNhdXNlIHRoZSBraW5ldGljIHBhbm5pbmcgZWZmZWN0IChmbGljaykgYXQgdGhlIGVuZCBvZiBhIGRyYWcgZ2VzdHVyZS5cbiAgKlxuICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBmbGlja01vbWVudHVtXG4gICogICAgIElmIGZsaWNrRW5hYmxlZCBpcyB0cnVlLCBhIGNvbnN0YW50IG11bHRpcGxpZWQgYnkgdGhlIHZlbG9jaXR5IHRvIGRldGVybWluZSB0aGUgZGlzdGFuY2Ugb2YgdGhlIGtpbmV0aWMgcGFubmluZyBlZmZlY3QgKGZsaWNrKSBhdCB0aGUgZW5kIG9mIGEgZHJhZyBnZXN0dXJlLlxuICAqICAgICBBIGxhcmdlciB2YWx1ZSB3aWxsIG1ha2UgdGhlIGZsaWNrIGZlZWwgXCJsaWdodGVyXCIsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSB3aWxsIG1ha2UgdGhlIGZsaWNrIGZlZWwgXCJoZWF2aWVyXCIuXG4gICogICAgIE5vdGU6IHNwcmluZ1N0aWZmbmVzcyBhbmQgYW5pbWF0aW9uVGltZSBhbHNvIGFmZmVjdCB0aGUgXCJzcHJpbmdcIiB1c2VkIHRvIHN0b3AgdGhlIGZsaWNrIGFuaW1hdGlvbi5cbiAgKlxuICAqL1xuXG4vKipcbiAgKiBUaGUgbmFtZXMgZm9yIHRoZSBpbWFnZSByZXNvdXJjZXMgdXNlZCBmb3IgdGhlIGltYWdlIG5hdmlnYXRpb24gYnV0dG9ucy5cbiAgKlxuICAqIEB0eXBlZGVmIHtPYmplY3R9IE5hdkltYWdlc1xuICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gICpcbiAgKiBAcHJvcGVydHkge09iamVjdH0gem9vbUluIC0gSW1hZ2VzIGZvciB0aGUgem9vbS1pbiBidXR0b24uXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHpvb21Jbi5SRVNUXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHpvb21Jbi5HUk9VUFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB6b29tSW4uSE9WRVJcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gem9vbUluLkRPV05cbiAgKlxuICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSB6b29tT3V0IC0gSW1hZ2VzIGZvciB0aGUgem9vbS1vdXQgYnV0dG9uLlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB6b29tT3V0LlJFU1RcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gem9vbU91dC5HUk9VUFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB6b29tT3V0LkhPVkVSXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHpvb21PdXQuRE9XTlxuICAqXG4gICogQHByb3BlcnR5IHtPYmplY3R9IGhvbWUgLSBJbWFnZXMgZm9yIHRoZSBob21lIGJ1dHRvbi5cbiAgKiBAcHJvcGVydHkge1N0cmluZ30gaG9tZS5SRVNUXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IGhvbWUuR1JPVVBcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gaG9tZS5IT1ZFUlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBob21lLkRPV05cbiAgKlxuICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBmdWxscGFnZSAtIEltYWdlcyBmb3IgdGhlIGZ1bGwtcGFnZSBidXR0b24uXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IGZ1bGxwYWdlLlJFU1RcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gZnVsbHBhZ2UuR1JPVVBcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gZnVsbHBhZ2UuSE9WRVJcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gZnVsbHBhZ2UuRE9XTlxuICAqXG4gICogQHByb3BlcnR5IHtPYmplY3R9IHJvdGF0ZWxlZnQgLSBJbWFnZXMgZm9yIHRoZSByb3RhdGUgbGVmdCBidXR0b24uXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZWxlZnQuUkVTVFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByb3RhdGVsZWZ0LkdST1VQXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZWxlZnQuSE9WRVJcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gcm90YXRlbGVmdC5ET1dOXG4gICpcbiAgKiBAcHJvcGVydHkge09iamVjdH0gcm90YXRlcmlnaHQgLSBJbWFnZXMgZm9yIHRoZSByb3RhdGUgcmlnaHQgYnV0dG9uLlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByb3RhdGVyaWdodC5SRVNUXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZXJpZ2h0LkdST1VQXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZXJpZ2h0LkhPVkVSXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IHJvdGF0ZXJpZ2h0LkRPV05cbiAgKlxuICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBwcmV2aW91cyAtIEltYWdlcyBmb3IgdGhlIHByZXZpb3VzIGJ1dHRvbi5cbiAgKiBAcHJvcGVydHkge1N0cmluZ30gcHJldmlvdXMuUkVTVFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwcmV2aW91cy5HUk9VUFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwcmV2aW91cy5IT1ZFUlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwcmV2aW91cy5ET1dOXG4gICpcbiAgKiBAcHJvcGVydHkge09iamVjdH0gbmV4dCAtIEltYWdlcyBmb3IgdGhlIG5leHQgYnV0dG9uLlxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuZXh0LlJFU1RcbiAgKiBAcHJvcGVydHkge1N0cmluZ30gbmV4dC5HUk9VUFxuICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuZXh0LkhPVkVSXG4gICogQHByb3BlcnR5IHtTdHJpbmd9IG5leHQuRE9XTlxuICAqXG4gICovXG5cblxuIC8qKlxuICAqIFRoaXMgZnVuY3Rpb24gc2VydmVzIGFzIGEgc2luZ2xlIHBvaW50IG9mIGluc3RhbnRpYXRpb24gZm9yIGFuIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlcn0sIGluY2x1ZGluZyBhbGxcbiAgKiBjb21iaW5hdGlvbnMgb2Ygb3V0LW9mLXRoZS1ib3ggY29uZmlndXJhYmxlIGZlYXR1cmVzLlxuICAqXG4gICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk9wdGlvbnN9IG9wdGlvbnMgLSBWaWV3ZXIgb3B0aW9ucy5cbiAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9XG4gICovXG53aW5kb3cuT3BlblNlYWRyYWdvbiA9IHdpbmRvdy5PcGVuU2VhZHJhZ29uIHx8IGZ1bmN0aW9uKCBvcHRpb25zICl7XG5cbiAgICByZXR1cm4gbmV3IE9wZW5TZWFkcmFnb24uVmlld2VyKCBvcHRpb25zICk7XG5cbn07XG5cbmlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICAgcmV0dXJuICh3aW5kb3cuT3BlblNlYWRyYWdvbik7XG4gICB9KTtcbn1cblxuXG4oZnVuY3Rpb24oICQgKXtcblxuXG4gICAgLyoqXG4gICAgICogVGhlIE9wZW5TZWFkcmFnb24gdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEBtZW1iZXIge09iamVjdH0gT3BlblNlYWRyYWdvbi52ZXJzaW9uXG4gICAgICogQHByb3BlcnR5IHtTdHJpbmd9IHZlcnNpb25TdHIgLSBUaGUgdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcgKCdtYWpvci5taW5vci5yZXZpc2lvbicpLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYWpvciAtIFRoZSBtYWpvciB2ZXJzaW9uIG51bWJlci5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gbWlub3IgLSBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHJldmlzaW9uIC0gVGhlIHJldmlzaW9uIG51bWJlci5cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKi9cbiAgICAkLnZlcnNpb24gPSB7XG4gICAgICAgIHZlcnNpb25TdHI6ICcyLjIuMScsXG4gICAgICAgIG1ham9yOiBwYXJzZUludCgnMicsIDEwKSxcbiAgICAgICAgbWlub3I6IHBhcnNlSW50KCcyJywgMTApLFxuICAgICAgICByZXZpc2lvbjogcGFyc2VJbnQoJzEnLCAxMClcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBUYWtlbiBmcm9tIGpxdWVyeSAxLjYuMVxuICAgICAqIFtbQ2xhc3NdXSAtPiB0eXBlIHBhaXJzXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICB2YXIgY2xhc3MydHlwZSA9IHtcbiAgICAgICAgICAgICdbb2JqZWN0IEJvb2xlYW5dJzogICAgICdib29sZWFuJyxcbiAgICAgICAgICAgICdbb2JqZWN0IE51bWJlcl0nOiAgICAgICdudW1iZXInLFxuICAgICAgICAgICAgJ1tvYmplY3QgU3RyaW5nXSc6ICAgICAgJ3N0cmluZycsXG4gICAgICAgICAgICAnW29iamVjdCBGdW5jdGlvbl0nOiAgICAnZnVuY3Rpb24nLFxuICAgICAgICAgICAgJ1tvYmplY3QgQXJyYXldJzogICAgICAgJ2FycmF5JyxcbiAgICAgICAgICAgICdbb2JqZWN0IERhdGVdJzogICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICdbb2JqZWN0IFJlZ0V4cF0nOiAgICAgICdyZWdleHAnLFxuICAgICAgICAgICAgJ1tvYmplY3QgT2JqZWN0XSc6ICAgICAgJ29iamVjdCdcbiAgICAgICAgfSxcbiAgICAgICAgLy8gU2F2ZSBhIHJlZmVyZW5jZSB0byBzb21lIGNvcmUgbWV0aG9kc1xuICAgICAgICB0b1N0cmluZyAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsXG4gICAgICAgIGhhc093biAgICAgID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIC8qKlxuICAgICAqIFRha2VuIGZyb20galF1ZXJ5IDEuNi4xXG4gICAgICogQGZ1bmN0aW9uIGlzRnVuY3Rpb25cbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cuanF1ZXJ5LmNvbS8galF1ZXJ5fVxuICAgICAqL1xuICAgICQuaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKCBvYmogKSB7XG4gICAgICAgIHJldHVybiAkLnR5cGUob2JqKSA9PT0gXCJmdW5jdGlvblwiO1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIFRha2VuIGZyb20galF1ZXJ5IDEuNi4xXG4gICAgICogQGZ1bmN0aW9uIGlzQXJyYXlcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cuanF1ZXJ5LmNvbS8galF1ZXJ5fVxuICAgICAqL1xuICAgICQuaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oIG9iaiApIHtcbiAgICAgICAgcmV0dXJuICQudHlwZShvYmopID09PSBcImFycmF5XCI7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogQSBjcnVkZSB3YXkgb2YgZGV0ZXJtaW5pbmcgaWYgYW4gb2JqZWN0IGlzIGEgd2luZG93LlxuICAgICAqIFRha2VuIGZyb20galF1ZXJ5IDEuNi4xXG4gICAgICogQGZ1bmN0aW9uIGlzV2luZG93XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAc2VlIHtAbGluayBodHRwOi8vd3d3LmpxdWVyeS5jb20vIGpRdWVyeX1cbiAgICAgKi9cbiAgICAkLmlzV2luZG93ID0gZnVuY3Rpb24oIG9iaiApIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIFwic2V0SW50ZXJ2YWxcIiBpbiBvYmo7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogVGFrZW4gZnJvbSBqUXVlcnkgMS42LjFcbiAgICAgKiBAZnVuY3Rpb24gdHlwZVxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gICAgICogQHNlZSB7QGxpbmsgaHR0cDovL3d3dy5qcXVlcnkuY29tLyBqUXVlcnl9XG4gICAgICovXG4gICAgJC50eXBlID0gZnVuY3Rpb24oIG9iaiApIHtcbiAgICAgICAgcmV0dXJuICggb2JqID09PSBudWxsICkgfHwgKCBvYmogPT09IHVuZGVmaW5lZCApID9cbiAgICAgICAgICAgIFN0cmluZyggb2JqICkgOlxuICAgICAgICAgICAgY2xhc3MydHlwZVsgdG9TdHJpbmcuY2FsbChvYmopIF0gfHwgXCJvYmplY3RcIjtcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBUYWtlbiBmcm9tIGpRdWVyeSAxLjYuMVxuICAgICAqIEBmdW5jdGlvbiBpc1BsYWluT2JqZWN0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAc2VlIHtAbGluayBodHRwOi8vd3d3LmpxdWVyeS5jb20vIGpRdWVyeX1cbiAgICAgKi9cbiAgICAkLmlzUGxhaW5PYmplY3QgPSBmdW5jdGlvbiggb2JqICkge1xuICAgICAgICAvLyBNdXN0IGJlIGFuIE9iamVjdC5cbiAgICAgICAgLy8gQmVjYXVzZSBvZiBJRSwgd2UgYWxzbyBoYXZlIHRvIGNoZWNrIHRoZSBwcmVzZW5jZSBvZiB0aGUgY29uc3RydWN0b3IgcHJvcGVydHkuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IERPTSBub2RlcyBhbmQgd2luZG93IG9iamVjdHMgZG9uJ3QgcGFzcyB0aHJvdWdoLCBhcyB3ZWxsXG4gICAgICAgIGlmICggIW9iaiB8fCBPcGVuU2VhZHJhZ29uLnR5cGUob2JqKSAhPT0gXCJvYmplY3RcIiB8fCBvYmoubm9kZVR5cGUgfHwgJC5pc1dpbmRvdyggb2JqICkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3Qgb3duIGNvbnN0cnVjdG9yIHByb3BlcnR5IG11c3QgYmUgT2JqZWN0XG4gICAgICAgIGlmICggb2JqLmNvbnN0cnVjdG9yICYmXG4gICAgICAgICAgICAhaGFzT3duLmNhbGwob2JqLCBcImNvbnN0cnVjdG9yXCIpICYmXG4gICAgICAgICAgICAhaGFzT3duLmNhbGwob2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgXCJpc1Byb3RvdHlwZU9mXCIpICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3duIHByb3BlcnRpZXMgYXJlIGVudW1lcmF0ZWQgZmlyc3RseSwgc28gdG8gc3BlZWQgdXAsXG4gICAgICAgIC8vIGlmIGxhc3Qgb25lIGlzIG93biwgdGhlbiBhbGwgcHJvcGVydGllcyBhcmUgb3duLlxuXG4gICAgICAgIHZhciBsYXN0S2V5O1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqICkge1xuICAgICAgICAgICAgbGFzdEtleSA9IGtleTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsYXN0S2V5ID09PSB1bmRlZmluZWQgfHwgaGFzT3duLmNhbGwoIG9iaiwgbGFzdEtleSApO1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIFRha2VuIGZyb20galF1ZXJ5IDEuNi4xXG4gICAgICogQGZ1bmN0aW9uIGlzRW1wdHlPYmplY3RcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cuanF1ZXJ5LmNvbS8galF1ZXJ5fVxuICAgICAqL1xuICAgICQuaXNFbXB0eU9iamVjdCA9IGZ1bmN0aW9uKCBvYmogKSB7XG4gICAgICAgIGZvciAoIHZhciBuYW1lIGluIG9iaiApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2hpbSBhcm91bmQgT2JqZWN0LmZyZWV6ZS4gRG9lcyBub3RoaW5nIGlmIE9iamVjdC5mcmVlemUgaXMgbm90IHN1cHBvcnRlZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gZnJlZXplLlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gb2JqIFRoZSBmcm96ZW4gb2JqZWN0LlxuICAgICAqL1xuICAgICQuZnJlZXplT2JqZWN0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICAgICAgICAkLmZyZWV6ZU9iamVjdCA9IE9iamVjdC5mcmVlemU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLmZyZWV6ZU9iamVjdCA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAkLmZyZWV6ZU9iamVjdChvYmopO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBIVE1MNSBjYW52YXMgZWxlbWVudFxuICAgICAqIEBtZW1iZXIge0Jvb2xlYW59IHN1cHBvcnRzQ2FudmFzXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKi9cbiAgICAkLnN1cHBvcnRzQ2FudmFzID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnY2FudmFzJyApO1xuICAgICAgICByZXR1cm4gISEoICQuaXNGdW5jdGlvbiggY2FudmFzRWxlbWVudC5nZXRDb250ZXh0ICkgJiZcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzRWxlbWVudC5nZXRDb250ZXh0KCAnMmQnICkgKTtcbiAgICB9KCkpO1xuXG4gICAgLyoqXG4gICAgICogVGVzdCB3aGV0aGVyIHRoZSBzdWJtaXR0ZWQgY2FudmFzIGlzIHRhaW50ZWQgb3Igbm90LlxuICAgICAqIEBhcmd1bWVudCB7Q2FudmFzfSBjYW52YXMgVGhlIGNhbnZhcyB0byB0ZXN0LlxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHRoZSBjYW52YXMgaXMgdGFpbnRlZC5cbiAgICAgKi9cbiAgICAkLmlzQ2FudmFzVGFpbnRlZCA9IGZ1bmN0aW9uKGNhbnZhcykge1xuICAgICAgICB2YXIgaXNUYWludGVkID0gZmFsc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXZSB0ZXN0IGlmIHRoZSBjYW52YXMgaXMgdGFpbnRlZCBieSByZXRyaWV2aW5nIGRhdGEgZnJvbSBpdC5cbiAgICAgICAgICAgIC8vIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgY2FudmFzIGlzIHRhaW50ZWQuXG4gICAgICAgICAgICB2YXIgZGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaXNUYWludGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNUYWludGVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBIHJhdGlvIGNvbXBhcmluZyB0aGUgZGV2aWNlIHNjcmVlbidzIHBpeGVsIGRlbnNpdHkgdG8gdGhlIGNhbnZhcydzIGJhY2tpbmcgc3RvcmUgcGl4ZWwgZGVuc2l0eS4gRGVmYXVsdHMgdG8gMSBpZiBjYW52YXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyLlxuICAgICAqIEBtZW1iZXIge051bWJlcn0gcGl4ZWxEZW5zaXR5UmF0aW9cbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqL1xuICAgICQucGl4ZWxEZW5zaXR5UmF0aW8gPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoICQuc3VwcG9ydHNDYW52YXMgKSB7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICB2YXIgZGV2aWNlUGl4ZWxSYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gICAgICAgICAgICB2YXIgYmFja2luZ1N0b3JlUmF0aW8gPSBjb250ZXh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubW96QmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fCAxO1xuICAgICAgICAgICAgcmV0dXJuIGRldmljZVBpeGVsUmF0aW8gLyBiYWNraW5nU3RvcmVSYXRpbztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgfSgpKTtcblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLyoqXG4gKiAgVGhpcyBjbG9zdXJlIGRlZmluZXMgYWxsIHN0YXRpYyBtZXRob2RzIGF2YWlsYWJsZSB0byB0aGUgT3BlblNlYWRyYWdvblxuICogIG5hbWVzcGFjZS4gIE1hbnksIGlmIG5vdCBtb3N0LCBhcmUgdGFrZWQgZGlyZWN0bHkgZnJvbSBqUXVlcnkgZm9yIHVzZVxuICogIHRvIHNpbXBsaWZ5IGFuZCByZWR1Y2UgY29tbW9uIHByb2dyYW1taW5nIHBhdHRlcm5zLiAgTW9yZSBzdGF0aWMgbWV0aG9kc1xuICogIGZyb20galF1ZXJ5IG1heSBldmVudHVhbGx5IG1ha2UgdGhlaXIgd2F5IGludG8gdGhpcyB0aG91Z2ggd2UgYXJlXG4gKiAgYXR0ZW1wdGluZyB0byBhdm9pZCBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIGpRdWVyeSBvbmx5IGJlY2F1c2VcbiAqICBPcGVuU2VhZHJhZ29uIGlzIGEgYnJvYWRseSB1c2VmdWwgY29kZSBiYXNlIGFuZCB3b3VsZCBiZSBtYWRlIGxlc3MgYnJvYWRcbiAqICBieSByZXF1aXJpbmcgalF1ZXJ5IGZ1bGx5LlxuICpcbiAqICBTb21lIHN0YXRpYyBtZXRob2RzIGhhdmUgYWxzbyBiZWVuIHJlZmFjdG9yZWQgZnJvbSB0aGUgb3JpZ2luYWwgT3BlblNlYWRyYWdvblxuICogIHByb2plY3QuXG4gKi9cbihmdW5jdGlvbiggJCApe1xuXG4gICAgLyoqXG4gICAgICogVGFrZW4gZnJvbSBqUXVlcnkgMS42LjFcbiAgICAgKiBAZnVuY3Rpb24gZXh0ZW5kXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAc2VlIHtAbGluayBodHRwOi8vd3d3LmpxdWVyeS5jb20vIGpRdWVyeX1cbiAgICAgKi9cbiAgICAkLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBzcmMsXG4gICAgICAgICAgICBjb3B5LFxuICAgICAgICAgICAgY29weUlzQXJyYXksXG4gICAgICAgICAgICBjbG9uZSxcbiAgICAgICAgICAgIHRhcmdldCAgPSBhcmd1bWVudHNbIDAgXSB8fCB7fSxcbiAgICAgICAgICAgIGxlbmd0aCAgPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgZGVlcCAgICA9IGZhbHNlLFxuICAgICAgICAgICAgaSAgICAgICA9IDE7XG5cbiAgICAgICAgLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuICAgICAgICBpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuICAgICAgICAgICAgZGVlcCAgICA9IHRhcmdldDtcbiAgICAgICAgICAgIHRhcmdldCAgPSBhcmd1bWVudHNbIDEgXSB8fCB7fTtcbiAgICAgICAgICAgIC8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcbiAgICAgICAgICAgIGkgPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG4gICAgICAgIGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhT3BlblNlYWRyYWdvbi5pc0Z1bmN0aW9uKCB0YXJnZXQgKSApIHtcbiAgICAgICAgICAgIHRhcmdldCA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXh0ZW5kIGpRdWVyeSBpdHNlbGYgaWYgb25seSBvbmUgYXJndW1lbnQgaXMgcGFzc2VkXG4gICAgICAgIGlmICggbGVuZ3RoID09PSBpICkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcztcbiAgICAgICAgICAgIC0taTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdO1xuICAgICAgICAgICAgaWYgKCBvcHRpb25zICE9PSBudWxsIHx8IG9wdGlvbnMgIT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0XG4gICAgICAgICAgICAgICAgZm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuICAgICAgICAgICAgICAgICAgICBzcmMgPSB0YXJnZXRbIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgICAgY29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG4gICAgICAgICAgICAgICAgICAgIGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIGNvcHkgJiYgKCBPcGVuU2VhZHJhZ29uLmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fCAoIGNvcHlJc0FycmF5ID0gT3BlblNlYWRyYWdvbi5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb3B5SXNBcnJheSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5SXNBcnJheSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gc3JjICYmIE9wZW5TZWFkcmFnb24uaXNBcnJheSggc3JjICkgPyBzcmMgOiBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSA9IHNyYyAmJiBPcGVuU2VhZHJhZ29uLmlzUGxhaW5PYmplY3QoIHNyYyApID8gc3JjIDoge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBPcGVuU2VhZHJhZ29uLmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFsgbmFtZSBdID0gY29weTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIHZhciBpc0lPU0RldmljZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlckFnZW50ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZignaVBob25lJykgIT09IC0xIHx8XG4gICAgICAgICAgICAgICB1c2VyQWdlbnQuaW5kZXhPZignaVBhZCcpICE9PSAtMSB8fFxuICAgICAgICAgICAgICAgdXNlckFnZW50LmluZGV4T2YoJ2lQb2QnKSAhPT0gLTE7XG4gICAgfTtcblxuICAgICQuZXh0ZW5kKCAkLCAvKiogQGxlbmRzIE9wZW5TZWFkcmFnb24gKi97XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBvcHRpb25hbCBzZXR0aW5ncyBkb2N1bWVudGVkIGF0IHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgICAqL1xuICAgICAgICBERUZBVUxUX1NFVFRJTkdTOiB7XG4gICAgICAgICAgICAvL0RBVEEgU09VUkNFIERFVEFJTFNcbiAgICAgICAgICAgIHhtbFBhdGg6ICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0aWxlU291cmNlczogICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdGlsZUhvc3Q6ICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGluaXRpYWxQYWdlOiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjcm9zc09yaWdpblBvbGljeTogICAgICBmYWxzZSxcbiAgICAgICAgICAgIGFqYXhXaXRoQ3JlZGVudGlhbHM6ICAgIGZhbHNlLFxuXG4gICAgICAgICAgICAvL1BBTiBBTkQgWk9PTSBTRVRUSU5HUyBBTkQgQ09OU1RSQUlOVFNcbiAgICAgICAgICAgIHBhbkhvcml6b250YWw6ICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICBwYW5WZXJ0aWNhbDogICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgY29uc3RyYWluRHVyaW5nUGFuOiAgICAgZmFsc2UsXG4gICAgICAgICAgICB3cmFwSG9yaXpvbnRhbDogICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIHdyYXBWZXJ0aWNhbDogICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgdmlzaWJpbGl0eVJhdGlvOiAgICAgICAgMC41LCAvLy0+IGhvdyBtdWNoIG9mIHRoZSB2aWV3ZXIgY2FuIGJlIG5lZ2F0aXZlIHNwYWNlXG4gICAgICAgICAgICBtaW5QaXhlbFJhdGlvOiAgICAgICAgICAwLjUsIC8vLT5jbG9zZXIgdG8gMCBkcmF3cyB0aWxlcyBtZWFudCBmb3IgYSBoaWdoZXIgem9vbSBhdCB0aGlzIHpvb21cbiAgICAgICAgICAgIGRlZmF1bHRab29tTGV2ZWw6ICAgICAgIDAsXG4gICAgICAgICAgICBtaW5ab29tTGV2ZWw6ICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbWF4Wm9vbUxldmVsOiAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGhvbWVGaWxsc1ZpZXdlcjogICAgICAgIGZhbHNlLFxuXG4gICAgICAgICAgICAvL1VJIFJFU1BPTlNJVkVORVNTIEFORCBGRUVMXG4gICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6ICAgICAzMDAsXG4gICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6ICAgICA1LFxuICAgICAgICAgICAgZGJsQ2xpY2tUaW1lVGhyZXNob2xkOiAgMzAwLFxuICAgICAgICAgICAgZGJsQ2xpY2tEaXN0VGhyZXNob2xkOiAgMjAsXG4gICAgICAgICAgICBzcHJpbmdTdGlmZm5lc3M6ICAgICAgICA2LjUsXG4gICAgICAgICAgICBhbmltYXRpb25UaW1lOiAgICAgICAgICAxLjIsXG4gICAgICAgICAgICBnZXN0dXJlU2V0dGluZ3NNb3VzZTogICB7IHNjcm9sbFRvWm9vbTogdHJ1ZSwgIGNsaWNrVG9ab29tOiB0cnVlLCAgZGJsQ2xpY2tUb1pvb206IGZhbHNlLCBwaW5jaFRvWm9vbTogZmFsc2UsIGZsaWNrRW5hYmxlZDogZmFsc2UsIGZsaWNrTWluU3BlZWQ6IDEyMCwgZmxpY2tNb21lbnR1bTogMC4yNSwgcGluY2hSb3RhdGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBnZXN0dXJlU2V0dGluZ3NUb3VjaDogICB7IHNjcm9sbFRvWm9vbTogZmFsc2UsIGNsaWNrVG9ab29tOiBmYWxzZSwgZGJsQ2xpY2tUb1pvb206IHRydWUsICBwaW5jaFRvWm9vbTogdHJ1ZSwgIGZsaWNrRW5hYmxlZDogdHJ1ZSwgIGZsaWNrTWluU3BlZWQ6IDEyMCwgZmxpY2tNb21lbnR1bTogMC4yNSwgcGluY2hSb3RhdGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBnZXN0dXJlU2V0dGluZ3NQZW46ICAgICB7IHNjcm9sbFRvWm9vbTogZmFsc2UsIGNsaWNrVG9ab29tOiB0cnVlLCAgZGJsQ2xpY2tUb1pvb206IGZhbHNlLCBwaW5jaFRvWm9vbTogZmFsc2UsIGZsaWNrRW5hYmxlZDogZmFsc2UsIGZsaWNrTWluU3BlZWQ6IDEyMCwgZmxpY2tNb21lbnR1bTogMC4yNSwgcGluY2hSb3RhdGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBnZXN0dXJlU2V0dGluZ3NVbmtub3duOiB7IHNjcm9sbFRvWm9vbTogZmFsc2UsIGNsaWNrVG9ab29tOiBmYWxzZSwgZGJsQ2xpY2tUb1pvb206IHRydWUsICBwaW5jaFRvWm9vbTogdHJ1ZSwgIGZsaWNrRW5hYmxlZDogdHJ1ZSwgIGZsaWNrTWluU3BlZWQ6IDEyMCwgZmxpY2tNb21lbnR1bTogMC4yNSwgcGluY2hSb3RhdGU6IGZhbHNlIH0sXG4gICAgICAgICAgICB6b29tUGVyQ2xpY2s6ICAgICAgICAgICAyLFxuICAgICAgICAgICAgem9vbVBlclNjcm9sbDogICAgICAgICAgMS4yLFxuICAgICAgICAgICAgem9vbVBlclNlY29uZDogICAgICAgICAgMS4wLFxuICAgICAgICAgICAgYmxlbmRUaW1lOiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIGFsd2F5c0JsZW5kOiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgYXV0b0hpZGVDb250cm9sczogICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgbWluWm9vbUltYWdlUmF0aW86ICAgICAgMC45LCAvLy0+IGNsb3NlciB0byAwIGFsbG93cyB6b29tIG91dCB0byBpbmZpbml0eVxuICAgICAgICAgICAgbWF4Wm9vbVBpeGVsUmF0aW86ICAgICAgMS4xLCAvLy0+IGhpZ2hlciBhbGxvd3MgJ292ZXIgem9vbScgaW50byBwaXhlbHNcbiAgICAgICAgICAgIHNtb290aFRpbGVFZGdlc01pblpvb206IDEuMSwgLy8tPiBoaWdoZXIgdGhhbiBtYXhab29tUGl4ZWxSYXRpbyBkaXNhYmxlcyBpdFxuICAgICAgICAgICAgaU9TRGV2aWNlOiAgICAgICAgICAgICAgaXNJT1NEZXZpY2UoKSxcbiAgICAgICAgICAgIHBpeGVsc1BlcldoZWVsTGluZTogICAgIDQwLFxuICAgICAgICAgICAgYXV0b1Jlc2l6ZTogICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIHByZXNlcnZlSW1hZ2VTaXplT25SZXNpemU6IGZhbHNlLCAvLyByZXF1aXJlcyBhdXRvUmVzaXplPXRydWVcbiAgICAgICAgICAgIG1pblNjcm9sbERlbHRhVGltZTogICAgIDUwLFxuXG4gICAgICAgICAgICAvL0RFRkFVTFQgQ09OVFJPTCBTRVRUSU5HU1xuICAgICAgICAgICAgc2hvd1NlcXVlbmNlQ29udHJvbDogICAgIHRydWUsICAvL1NFUVVFTkNFXG4gICAgICAgICAgICBzZXF1ZW5jZUNvbnRyb2xBbmNob3I6ICAgbnVsbCwgIC8vU0VRVUVOQ0VcbiAgICAgICAgICAgIHByZXNlcnZlVmlld3BvcnQ6ICAgICAgICBmYWxzZSwgLy9TRVFVRU5DRVxuICAgICAgICAgICAgcHJlc2VydmVPdmVybGF5czogICAgICAgIGZhbHNlLCAvL1NFUVVFTkNFXG4gICAgICAgICAgICBuYXZQcmV2TmV4dFdyYXA6ICAgICAgICAgZmFsc2UsIC8vU0VRVUVOQ0VcbiAgICAgICAgICAgIHNob3dOYXZpZ2F0aW9uQ29udHJvbDogICB0cnVlLCAgLy9aT09NL0hPTUUvRlVMTC9ST1RBVElPTlxuICAgICAgICAgICAgbmF2aWdhdGlvbkNvbnRyb2xBbmNob3I6IG51bGwsICAvL1pPT00vSE9NRS9GVUxML1JPVEFUSU9OXG4gICAgICAgICAgICBzaG93Wm9vbUNvbnRyb2w6ICAgICAgICAgdHJ1ZSwgIC8vWk9PTVxuICAgICAgICAgICAgc2hvd0hvbWVDb250cm9sOiAgICAgICAgIHRydWUsICAvL0hPTUVcbiAgICAgICAgICAgIHNob3dGdWxsUGFnZUNvbnRyb2w6ICAgICB0cnVlLCAgLy9GVUxMXG4gICAgICAgICAgICBzaG93Um90YXRpb25Db250cm9sOiAgICAgZmFsc2UsIC8vUk9UQVRJT05cbiAgICAgICAgICAgIGNvbnRyb2xzRmFkZURlbGF5OiAgICAgICAyMDAwLCAgLy9aT09NL0hPTUUvRlVMTC9TRVFVRU5DRVxuICAgICAgICAgICAgY29udHJvbHNGYWRlTGVuZ3RoOiAgICAgIDE1MDAsICAvL1pPT00vSE9NRS9GVUxML1NFUVVFTkNFXG4gICAgICAgICAgICBtb3VzZU5hdkVuYWJsZWQ6ICAgICAgICAgdHJ1ZSwgIC8vR0VORVJBTCBNT1VTRSBJTlRFUkFDVElWSVRZXG5cbiAgICAgICAgICAgIC8vVklFV1BPUlQgTkFWSUdBVE9SIFNFVFRJTkdTXG4gICAgICAgICAgICBzaG93TmF2aWdhdG9yOiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBuYXZpZ2F0b3JJZDogICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIG5hdmlnYXRvclBvc2l0aW9uOiAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbmF2aWdhdG9yU2l6ZVJhdGlvOiAgICAgICAgIDAuMixcbiAgICAgICAgICAgIG5hdmlnYXRvck1haW50YWluU2l6ZVJhdGlvOiBmYWxzZSxcbiAgICAgICAgICAgIG5hdmlnYXRvclRvcDogICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbmF2aWdhdG9yTGVmdDogICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBuYXZpZ2F0b3JIZWlnaHQ6ICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIG5hdmlnYXRvcldpZHRoOiAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbmF2aWdhdG9yQXV0b1Jlc2l6ZTogICAgICAgIHRydWUsXG4gICAgICAgICAgICBuYXZpZ2F0b3JBdXRvRmFkZTogICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIG5hdmlnYXRvclJvdGF0ZTogICAgICAgICAgICB0cnVlLFxuXG4gICAgICAgICAgICAvLyBJTklUSUFMIFJPVEFUSU9OXG4gICAgICAgICAgICBkZWdyZWVzOiAgICAgICAgICAgICAgICAgICAgMCxcblxuICAgICAgICAgICAgLy8gQVBQRUFSQU5DRVxuICAgICAgICAgICAgb3BhY2l0eTogICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICBjb21wb3NpdGVPcGVyYXRpb246ICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyRmlsbFN0eWxlOiAgICAgICBudWxsLFxuXG4gICAgICAgICAgICAvL1JFRkVSRU5DRSBTVFJJUCBTRVRUSU5HU1xuICAgICAgICAgICAgc2hvd1JlZmVyZW5jZVN0cmlwOiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVN0cmlwU2Nyb2xsOiAgICAgICAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpcEVsZW1lbnQ6ICAgICAgIG51bGwsXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpcEhlaWdodDogICAgICAgIG51bGwsXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpcFdpZHRoOiAgICAgICAgIG51bGwsXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpcFBvc2l0aW9uOiAgICAgICdCT1RUT01fTEVGVCcsXG4gICAgICAgICAgICByZWZlcmVuY2VTdHJpcFNpemVSYXRpbzogICAgIDAuMixcblxuICAgICAgICAgICAgLy9DT0xMRUNUSU9OIFZJU1VBTElaQVRJT04gU0VUVElOR1NcbiAgICAgICAgICAgIGNvbGxlY3Rpb25Sb3dzOiAgICAgICAgIDMsIC8vb3IgY29sdW1ucyBkZXBlbmRpbmcgb24gbGF5b3V0XG4gICAgICAgICAgICBjb2xsZWN0aW9uQ29sdW1uczogICAgICAwLCAvL2NvbHVtbnMgaW4gaG9yaXpvbnRhbCBsYXlvdXQsIHJvd3MgaW4gdmVydGljYWwgbGF5b3V0XG4gICAgICAgICAgICBjb2xsZWN0aW9uTGF5b3V0OiAgICAgICAnaG9yaXpvbnRhbCcsIC8vdmVydGljYWxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25Nb2RlOiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgY29sbGVjdGlvblRpbGVTaXplOiAgICAgODAwLFxuICAgICAgICAgICAgY29sbGVjdGlvblRpbGVNYXJnaW46ICAgODAsXG5cbiAgICAgICAgICAgIC8vUEVSRk9STUFOQ0UgU0VUVElOR1NcbiAgICAgICAgICAgIGltYWdlTG9hZGVyTGltaXQ6ICAgICAgIDAsXG4gICAgICAgICAgICBtYXhJbWFnZUNhY2hlQ291bnQ6ICAgICAyMDAsXG4gICAgICAgICAgICB0aW1lb3V0OiAgICAgICAgICAgICAgICAzMDAwMCxcbiAgICAgICAgICAgIHVzZUNhbnZhczogICAgICAgICAgICAgIHRydWUsICAvLyBVc2UgY2FudmFzIGVsZW1lbnQgZm9yIGRyYXdpbmcgaWYgYXZhaWxhYmxlXG5cbiAgICAgICAgICAgIC8vSU5URVJGQUNFIFJFU09VUkNFIFNFVFRJTkdTXG4gICAgICAgICAgICBwcmVmaXhVcmw6ICAgICAgICAgICAgICBcIi9pbWFnZXMvXCIsXG4gICAgICAgICAgICBuYXZJbWFnZXM6IHtcbiAgICAgICAgICAgICAgICB6b29tSW46IHtcbiAgICAgICAgICAgICAgICAgICAgUkVTVDogICAnem9vbWluX3Jlc3QucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgR1JPVVA6ICAnem9vbWluX2dyb3VwaG92ZXIucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgSE9WRVI6ICAnem9vbWluX2hvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIERPV046ICAgJ3pvb21pbl9wcmVzc2VkLnBuZydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHpvb21PdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgUkVTVDogICAnem9vbW91dF9yZXN0LnBuZycsXG4gICAgICAgICAgICAgICAgICAgIEdST1VQOiAgJ3pvb21vdXRfZ3JvdXBob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBIT1ZFUjogICd6b29tb3V0X2hvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIERPV046ICAgJ3pvb21vdXRfcHJlc3NlZC5wbmcnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBob21lOiB7XG4gICAgICAgICAgICAgICAgICAgIFJFU1Q6ICAgJ2hvbWVfcmVzdC5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBHUk9VUDogICdob21lX2dyb3VwaG92ZXIucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgSE9WRVI6ICAnaG9tZV9ob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBET1dOOiAgICdob21lX3ByZXNzZWQucG5nJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZnVsbHBhZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgUkVTVDogICAnZnVsbHBhZ2VfcmVzdC5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBHUk9VUDogICdmdWxscGFnZV9ncm91cGhvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIEhPVkVSOiAgJ2Z1bGxwYWdlX2hvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIERPV046ICAgJ2Z1bGxwYWdlX3ByZXNzZWQucG5nJ1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcm90YXRlbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICBSRVNUOiAgICdyb3RhdGVsZWZ0X3Jlc3QucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgR1JPVVA6ICAncm90YXRlbGVmdF9ncm91cGhvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIEhPVkVSOiAgJ3JvdGF0ZWxlZnRfaG92ZXIucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgRE9XTjogICAncm90YXRlbGVmdF9wcmVzc2VkLnBuZydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJvdGF0ZXJpZ2h0OiB7XG4gICAgICAgICAgICAgICAgICAgIFJFU1Q6ICAgJ3JvdGF0ZXJpZ2h0X3Jlc3QucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgR1JPVVA6ICAncm90YXRlcmlnaHRfZ3JvdXBob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBIT1ZFUjogICdyb3RhdGVyaWdodF9ob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBET1dOOiAgICdyb3RhdGVyaWdodF9wcmVzc2VkLnBuZydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByZXZpb3VzOiB7XG4gICAgICAgICAgICAgICAgICAgIFJFU1Q6ICAgJ3ByZXZpb3VzX3Jlc3QucG5nJyxcbiAgICAgICAgICAgICAgICAgICAgR1JPVVA6ICAncHJldmlvdXNfZ3JvdXBob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBIT1ZFUjogICdwcmV2aW91c19ob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBET1dOOiAgICdwcmV2aW91c19wcmVzc2VkLnBuZydcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG5leHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgUkVTVDogICAnbmV4dF9yZXN0LnBuZycsXG4gICAgICAgICAgICAgICAgICAgIEdST1VQOiAgJ25leHRfZ3JvdXBob3Zlci5wbmcnLFxuICAgICAgICAgICAgICAgICAgICBIT1ZFUjogICduZXh0X2hvdmVyLnBuZycsXG4gICAgICAgICAgICAgICAgICAgIERPV046ICAgJ25leHRfcHJlc3NlZC5wbmcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy9ERVZFTE9QRVIgU0VUVElOR1NcbiAgICAgICAgICAgIGRlYnVnTW9kZTogICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgZGVidWdHcmlkQ29sb3I6ICAgICAgICAgJyM0MzdBQjInXG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogVE9ETzogZ2V0IHJpZCBvZiB0aGlzLiAgSSBjYW4ndCBzZWUgaG93IGl0J3MgcmVxdWlyZWQgYXQgYWxsLiAgTG9va3NcbiAgICAgICAgICogICAgICAgbGlrZSBhbiBlYXJseSBsZWdhY3kgY29kZSBhcnRpZmFjdC5cbiAgICAgICAgICogQHN0YXRpY1xuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICBTSUdOQUw6IFwiLS0tLXNlYWRyYWdvbi0tLS1cIixcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIGEgZnVuY3Rpb24gd2hpY2ggaW52b2tlcyB0aGUgbWV0aG9kIGFzIGlmIGl0IHdlcmUgYSBtZXRob2QgYmVsb25naW5nIHRvIHRoZSBvYmplY3QuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG1ldGhvZFxuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oIG9iamVjdCwgbWV0aG9kICkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgKXtcbiAgICAgICAgICAgICAgICAgICAgYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KCBvYmplY3QsIGFyZ3MgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQW4gZW51bWVyYXRpb24gb2YgQnJvd3NlciB2ZW5kb3JzLlxuICAgICAgICAgKiBAc3RhdGljXG4gICAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBVTktOT1dOXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBJRVxuICAgICAgICAgKiBAcHJvcGVydHkge051bWJlcn0gRklSRUZPWFxuICAgICAgICAgKiBAcHJvcGVydHkge051bWJlcn0gU0FGQVJJXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBDSFJPTUVcbiAgICAgICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IE9QRVJBXG4gICAgICAgICAqL1xuICAgICAgICBCUk9XU0VSUzoge1xuICAgICAgICAgICAgVU5LTk9XTjogICAgMCxcbiAgICAgICAgICAgIElFOiAgICAgICAgIDEsXG4gICAgICAgICAgICBGSVJFRk9YOiAgICAyLFxuICAgICAgICAgICAgU0FGQVJJOiAgICAgMyxcbiAgICAgICAgICAgIENIUk9NRTogICAgIDQsXG4gICAgICAgICAgICBPUEVSQTogICAgICA1XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyBhIERPTSBFbGVtZW50IGZvciB0aGUgZ2l2ZW4gaWQgb3IgZWxlbWVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IGVsZW1lbnQgQWNjZXB0cyBhbiBpZCBvciBlbGVtZW50LlxuICAgICAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gVGhlIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaWQsIG51bGwsIG9yIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgICAgICovXG4gICAgICAgIGdldEVsZW1lbnQ6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2YgKCBlbGVtZW50ICkgPT0gXCJzdHJpbmdcIiApIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGVsZW1lbnQgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERldGVybWluZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnQgLSB0aGUgZWxlbWVuZXQgd2Ugd2FudCB0aGUgcG9zaXRpb24gZm9yLlxuICAgICAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gLSB0aGUgcG9zaXRpb24gb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0RWxlbWVudFBvc2l0aW9uOiBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgJC5Qb2ludCgpLFxuICAgICAgICAgICAgICAgIGlzRml4ZWQsXG4gICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50O1xuXG4gICAgICAgICAgICBlbGVtZW50ICAgICAgPSAkLmdldEVsZW1lbnQoIGVsZW1lbnQgKTtcbiAgICAgICAgICAgIGlzRml4ZWQgICAgICA9ICQuZ2V0RWxlbWVudFN0eWxlKCBlbGVtZW50ICkucG9zaXRpb24gPT0gXCJmaXhlZFwiO1xuICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KCBlbGVtZW50LCBpc0ZpeGVkICk7XG5cbiAgICAgICAgICAgIHdoaWxlICggb2Zmc2V0UGFyZW50ICkge1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0LnggKz0gZWxlbWVudC5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgICAgIHJlc3VsdC55ICs9IGVsZW1lbnQub2Zmc2V0VG9wO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBpc0ZpeGVkICkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucGx1cyggJC5nZXRQYWdlU2Nyb2xsKCkgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gb2Zmc2V0UGFyZW50O1xuICAgICAgICAgICAgICAgIGlzRml4ZWQgPSAkLmdldEVsZW1lbnRTdHlsZSggZWxlbWVudCApLnBvc2l0aW9uID09IFwiZml4ZWRcIjtcbiAgICAgICAgICAgICAgICBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoIGVsZW1lbnQsIGlzRml4ZWQgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXRlcm1pbmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQgYWRqdXN0ZWQgZm9yIGN1cnJlbnQgcGFnZSBhbmQvb3IgZWxlbWVudCBzY3JvbGwuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBlbGVtZW50IC0gdGhlIGVsZW1lbnQgd2Ugd2FudCB0aGUgcG9zaXRpb24gZm9yLlxuICAgICAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gLSB0aGUgcG9zaXRpb24gb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50IGFkanVzdGVkIGZvciBjdXJyZW50IHBhZ2UgYW5kL29yIGVsZW1lbnQgc2Nyb2xsLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0RWxlbWVudE9mZnNldDogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG5cbiAgICAgICAgICAgIHZhciBkb2MgPSBlbGVtZW50ICYmIGVsZW1lbnQub3duZXJEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBkb2NFbGVtZW50LFxuICAgICAgICAgICAgICAgIHdpbixcbiAgICAgICAgICAgICAgICBib3VuZGluZ1JlY3QgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG4gICAgICAgICAgICBpZiAoICFkb2MgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRvY0VsZW1lbnQgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gdHlwZW9mIHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgICAgICBib3VuZGluZ1JlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aW4gPSAoIGRvYyA9PSBkb2Mud2luZG93ICkgP1xuICAgICAgICAgICAgICAgIGRvYyA6XG4gICAgICAgICAgICAgICAgKCBkb2Mubm9kZVR5cGUgPT09IDkgKSA/XG4gICAgICAgICAgICAgICAgICAgIGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2luZG93IDpcbiAgICAgICAgICAgICAgICAgICAgZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgICAgICBib3VuZGluZ1JlY3QubGVmdCArICggd2luLnBhZ2VYT2Zmc2V0IHx8IGRvY0VsZW1lbnQuc2Nyb2xsTGVmdCApIC0gKCBkb2NFbGVtZW50LmNsaWVudExlZnQgfHwgMCApLFxuICAgICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC50b3AgKyAoIHdpbi5wYWdlWU9mZnNldCB8fCBkb2NFbGVtZW50LnNjcm9sbFRvcCApIC0gKCBkb2NFbGVtZW50LmNsaWVudFRvcCB8fCAwIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnRcbiAgICAgICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICAgICAqL1xuICAgICAgICBnZXRFbGVtZW50U2l6ZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgdGhlIENTU1N0eWxlIG9iamVjdCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBlbGVtZW50XG4gICAgICAgICAqIEByZXR1cm5zIHtDU1NTdHlsZX1cbiAgICAgICAgICovXG4gICAgICAgIGdldEVsZW1lbnRTdHlsZTpcbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUgP1xuICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmN1cnJlbnRTdHlsZTtcbiAgICAgICAgICAgIH0gOlxuICAgICAgICAgICAgZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSggZWxlbWVudCwgXCJcIiApO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgcHJvcGVydHkgd2l0aCB0aGUgY29ycmVjdCB2ZW5kb3IgcHJlZml4IGFwcGVuZGVkLlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkgdGhlIHByb3BlcnR5IG5hbWVcbiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gdGhlIHByb3BlcnR5IHdpdGggdGhlIGNvcnJlY3QgcHJlZml4IG9yIG51bGwgaWYgbm90XG4gICAgICAgICAqIHN1cHBvcnRlZC5cbiAgICAgICAgICovXG4gICAgICAgIGdldENzc1Byb3BlcnR5V2l0aFZlbmRvclByZWZpeDogZnVuY3Rpb24ocHJvcGVydHkpIHtcbiAgICAgICAgICAgIHZhciBtZW1vID0ge307XG5cbiAgICAgICAgICAgICQuZ2V0Q3NzUHJvcGVydHlXaXRoVmVuZG9yUHJlZml4ID0gZnVuY3Rpb24ocHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVtb1twcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdHlsZVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwcm9wZXJ0eTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdNb3onLCAnTVMnLCAnTycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2Via2l0JywgJ21veicsICdtcycsICdvJ107XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdWZmaXggPSAkLmNhcGl0YWxpemVGaXJzdExldHRlcihwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wID0gcHJlZml4ZXNbaV0gKyBzdWZmaXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVbcHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVtb1twcm9wZXJ0eV0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gJC5nZXRDc3NQcm9wZXJ0eVdpdGhWZW5kb3JQcmVmaXgocHJvcGVydHkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYXBpdGFsaXplcyB0aGUgZmlyc3QgbGV0dGVyIG9mIGEgc3RyaW5nXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmdcbiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gVGhlIHN0cmluZyB3aXRoIHRoZSBmaXJzdCBsZXR0ZXIgY2FwaXRhbGl6ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNhcGl0YWxpemVGaXJzdExldHRlcjogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXRlcm1pbmVzIGlmIGEgcG9pbnQgaXMgd2l0aGluIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgKGhpdC10ZXN0KS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHBvaW50SW5FbGVtZW50OiBmdW5jdGlvbiggZWxlbWVudCwgcG9pbnQgKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gJC5nZXRFbGVtZW50T2Zmc2V0KCBlbGVtZW50ICksXG4gICAgICAgICAgICAgICAgc2l6ZSA9ICQuZ2V0RWxlbWVudFNpemUoIGVsZW1lbnQgKTtcbiAgICAgICAgICAgIHJldHVybiBwb2ludC54ID49IG9mZnNldC54ICYmIHBvaW50LnggPCBvZmZzZXQueCArIHNpemUueCAmJiBwb2ludC55IDwgb2Zmc2V0LnkgKyBzaXplLnkgJiYgcG9pbnQueSA+PSBvZmZzZXQueTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBsYXRlc3QgZXZlbnQsIHJlYWxseSBvbmx5IHVzZWZ1bCBpbnRlcm5hbGx5IHNpbmNlIGl0c1xuICAgICAgICAgKiBzcGVjaWZpYyB0byBJRSBiZWhhdmlvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IFtldmVudF1cbiAgICAgICAgICogQHJldHVybnMge0V2ZW50fVxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBGb3IgaW50ZXJuYWwgdXNlIG9ubHlcbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICovXG4gICAgICAgIGdldEV2ZW50OiBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICBpZiggZXZlbnQgKXtcbiAgICAgICAgICAgICAgICAkLmdldEV2ZW50ID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJC5nZXRFdmVudCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmV2ZW50O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJC5nZXRFdmVudCggZXZlbnQgKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbW91c2Ugb24gdGhlIHNjcmVlbiBmb3IgYSBnaXZlbiBldmVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IFtldmVudF1cbiAgICAgICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICAgICAqL1xuICAgICAgICBnZXRNb3VzZVBvc2l0aW9uOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mKCBldmVudC5wYWdlWCApID09IFwibnVtYmVyXCIgKSB7XG4gICAgICAgICAgICAgICAgJC5nZXRNb3VzZVBvc2l0aW9uID0gZnVuY3Rpb24oIGV2ZW50ICl7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgJC5Qb2ludCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0gJC5nZXRFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnggPSBldmVudC5wYWdlWDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnkgPSBldmVudC5wYWdlWTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YoIGV2ZW50LmNsaWVudFggKSA9PSBcIm51bWJlclwiICkge1xuICAgICAgICAgICAgICAgICQuZ2V0TW91c2VQb3NpdGlvbiA9IGZ1bmN0aW9uKCBldmVudCApe1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3ICQuUG9pbnQoKTtcblxuICAgICAgICAgICAgICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC54ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmNsaWVudFggK1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQueSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jbGllbnRZICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIFwiVW5rbm93biBldmVudCBtb3VzZSBwb3NpdGlvbiwgbm8ga25vd24gdGVjaG5pcXVlLlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICQuZ2V0TW91c2VQb3NpdGlvbiggZXZlbnQgKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXRlcm1pbmVzIHRoZSBwYWdlJ3MgY3VycmVudCBzY3JvbGwgcG9zaXRpb24uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgICAgICovXG4gICAgICAgIGdldFBhZ2VTY3JvbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGRvY0VsZW1lbnQgID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IHx8IHt9LFxuICAgICAgICAgICAgICAgIGJvZHkgICAgICAgID0gZG9jdW1lbnQuYm9keSB8fCB7fTtcblxuICAgICAgICAgICAgaWYgKCB0eXBlb2YoIHdpbmRvdy5wYWdlWE9mZnNldCApID09IFwibnVtYmVyXCIgKSB7XG4gICAgICAgICAgICAgICAgJC5nZXRQYWdlU2Nyb2xsID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnBhZ2VYT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJvZHkuc2Nyb2xsTGVmdCB8fCBib2R5LnNjcm9sbFRvcCApIHtcbiAgICAgICAgICAgICAgICAkLmdldFBhZ2VTY3JvbGwgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBkb2NFbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jRWxlbWVudC5zY3JvbGxUb3AgKSB7XG4gICAgICAgICAgICAgICAgJC5nZXRQYWdlU2Nyb2xsID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgcmVhc3NpZ24gdGhlIGZ1bmN0aW9uIHlldCwgYXMgdGhlcmUgd2FzIG5vIHNjcm9sbC5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoMCwwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICQuZ2V0UGFnZVNjcm9sbCgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdGhlIHBhZ2Ugc2Nyb2xsIHBvc2l0aW9uLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICAgICAqL1xuICAgICAgICBzZXRQYWdlU2Nyb2xsOiBmdW5jdGlvbiggc2Nyb2xsICkge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2YgKCB3aW5kb3cuc2Nyb2xsVG8gKSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcbiAgICAgICAgICAgICAgICAkLnNldFBhZ2VTY3JvbGwgPSBmdW5jdGlvbiggc2Nyb2xsICkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oIHNjcm9sbC54LCBzY3JvbGwueSApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbFNjcm9sbCA9ICQuZ2V0UGFnZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGlmICggb3JpZ2luYWxTY3JvbGwueCA9PT0gc2Nyb2xsLnggJiZcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxTY3JvbGwueSA9PT0gc2Nyb2xsLnkgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhbHJlYWR5IGNvcnJlY3RseSBwb3NpdGlvbmVkIGFuZCB0aGVyZVxuICAgICAgICAgICAgICAgICAgICAvLyBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoZSBjb3JyZWN0IG1ldGhvZC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCA9IHNjcm9sbC54O1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gc2Nyb2xsLnk7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRTY3JvbGwgPSAkLmdldFBhZ2VTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICBpZiAoIGN1cnJlbnRTY3JvbGwueCAhPT0gb3JpZ2luYWxTY3JvbGwueCAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2Nyb2xsLnkgIT09IG9yaWdpbmFsU2Nyb2xsLnkgKSB7XG4gICAgICAgICAgICAgICAgICAgICQuc2V0UGFnZVNjcm9sbCA9IGZ1bmN0aW9uKCBzY3JvbGwgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgPSBzY3JvbGwueDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gc2Nyb2xsLnk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbC54O1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGwueTtcbiAgICAgICAgICAgICAgICBjdXJyZW50U2Nyb2xsID0gJC5nZXRQYWdlU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50U2Nyb2xsLnggIT09IG9yaWdpbmFsU2Nyb2xsLnggJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjcm9sbC55ICE9PSBvcmlnaW5hbFNjcm9sbC55ICkge1xuICAgICAgICAgICAgICAgICAgICAkLnNldFBhZ2VTY3JvbGwgPSBmdW5jdGlvbiggc2Nyb2xsICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGwueDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGwueTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGZpbmQgYW55dGhpbmcgd29ya2luZywgc28gd2UgZG8gbm90aGluZy5cbiAgICAgICAgICAgICAgICAkLnNldFBhZ2VTY3JvbGwgPSBmdW5jdGlvbiggc2Nyb2xsICkge1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAkLnNldFBhZ2VTY3JvbGwoIHNjcm9sbCApO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBicm93c2VycyB3aW5kb3cuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgICAgICovXG4gICAgICAgIGdldFdpbmRvd1NpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGRvY0VsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwge30sXG4gICAgICAgICAgICAgICAgYm9keSAgICA9IGRvY3VtZW50LmJvZHkgfHwge307XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mKCB3aW5kb3cuaW5uZXJXaWR0aCApID09ICdudW1iZXInICkge1xuICAgICAgICAgICAgICAgICQuZ2V0V2luZG93U2l6ZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGRvY0VsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jRWxlbWVudC5jbGllbnRIZWlnaHQgKSB7XG4gICAgICAgICAgICAgICAgJC5nZXRXaW5kb3dTaXplID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBib2R5LmNsaWVudFdpZHRoIHx8IGJvZHkuY2xpZW50SGVpZ2h0ICkge1xuICAgICAgICAgICAgICAgICQuZ2V0V2luZG93U2l6ZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gd2luZG93IHNpemUsIG5vIGtub3duIHRlY2huaXF1ZS5cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAkLmdldFdpbmRvd1NpemUoKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcmFwcyB0aGUgZ2l2ZW4gZWxlbWVudCBpbiBhIG5lc3Qgb2YgZGl2cyBzbyB0aGF0IHRoZSBlbGVtZW50IGNhblxuICAgICAgICAgKiBiZSBlYXNpbHkgY2VudGVyZWQgdXNpbmcgQ1NTIHRhYmxlc1xuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fFN0cmluZ30gZWxlbWVudFxuICAgICAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gb3V0ZXJtb3N0IHdyYXBwZXIgZWxlbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgbWFrZUNlbnRlcmVkTm9kZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICAvLyBDb252ZXJ0IGEgcG9zc2libGUgSUQgdG8gYW4gYWN0dWFsIEhUTUxFbGVtZW50XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG5cbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgQ1NTIHRhYmxlcyByZXF1aXJlIHlvdSB0byBoYXZlIGEgZGlzcGxheTp0YWJsZS9yb3cvY2VsbCBoaWVyYXJjaHkgc28gd2UgbmVlZCB0byBjcmVhdGVcbiAgICAgICAgICAgICAgICB0aHJlZSBuZXN0ZWQgd3JhcHBlciBkaXZzOlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIHZhciB3cmFwcGVycyA9IFtcbiAgICAgICAgICAgICAgICAkLm1ha2VOZXV0cmFsRWxlbWVudCggJ2RpdicgKSxcbiAgICAgICAgICAgICAgICAkLm1ha2VOZXV0cmFsRWxlbWVudCggJ2RpdicgKSxcbiAgICAgICAgICAgICAgICAkLm1ha2VOZXV0cmFsRWxlbWVudCggJ2RpdicgKVxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgLy8gSXQgZmVlbHMgbGlrZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBwYXNzIHN0eWxlIGRpY3RzIHRvIG1ha2VOZXV0cmFsRWxlbWVudDpcbiAgICAgICAgICAgICQuZXh0ZW5kKHdyYXBwZXJzWzBdLnN0eWxlLCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogXCJ0YWJsZVwiLFxuICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJC5leHRlbmQod3JhcHBlcnNbMV0uc3R5bGUsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcInRhYmxlLXJvd1wiXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJC5leHRlbmQod3JhcHBlcnNbMl0uc3R5bGUsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBcInRhYmxlLWNlbGxcIixcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcIm1pZGRsZVwiLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHdyYXBwZXJzWzBdLmFwcGVuZENoaWxkKHdyYXBwZXJzWzFdKTtcbiAgICAgICAgICAgIHdyYXBwZXJzWzFdLmFwcGVuZENoaWxkKHdyYXBwZXJzWzJdKTtcbiAgICAgICAgICAgIHdyYXBwZXJzWzJdLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICByZXR1cm4gd3JhcHBlcnNbMF07XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlcyBhbiBlYXNpbHkgcG9zaXRpb25hYmxlIGVsZW1lbnQgb2YgdGhlIGdpdmVuIHR5cGUgdGhhdCB0aGVyZWZvclxuICAgICAgICAgKiBzZXJ2ZXMgYXMgYW4gZXhjZWxsZW50IGNvbnRhaW5lciBlbGVtZW50LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IHRhZ05hbWVcbiAgICAgICAgICogQHJldHVybnMge0VsZW1lbnR9XG4gICAgICAgICAqL1xuICAgICAgICBtYWtlTmV1dHJhbEVsZW1lbnQ6IGZ1bmN0aW9uKCB0YWdOYW1lICkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCB0YWdOYW1lICksXG4gICAgICAgICAgICAgICAgc3R5bGUgICA9IGVsZW1lbnQuc3R5bGU7XG5cbiAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSBcInRyYW5zcGFyZW50IG5vbmVcIjtcbiAgICAgICAgICAgIHN0eWxlLmJvcmRlciAgICAgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIHN0eWxlLm1hcmdpbiAgICAgPSBcIjBweFwiO1xuICAgICAgICAgICAgc3R5bGUucGFkZGluZyAgICA9IFwiMHB4XCI7XG4gICAgICAgICAgICBzdHlsZS5wb3NpdGlvbiAgID0gXCJzdGF0aWNcIjtcblxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBtaWxsaXNlY29uZHMsIHVzaW5nIERhdGUubm93KCkgaWYgYXZhaWxhYmxlXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgbm93OiBmdW5jdGlvbiggKSB7XG4gICAgICAgICAgaWYgKERhdGUubm93KSB7XG4gICAgICAgICAgICAkLm5vdyA9IERhdGUubm93O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLm5vdyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7IH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuICQubm93KCk7XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5zdXJlcyBhbiBpbWFnZSBpcyBsb2FkZWQgY29ycmVjdGx5IHRvIHN1cHBvcnQgYWxwaGEgdHJhbnNwYXJlbmN5LlxuICAgICAgICAgKiBHZW5lcmFsbHkgb25seSBJRSBoYXMgaXNzdWVzIGRvaW5nIHRoaXMgY29ycmVjdGx5IGZvciBmb3JtYXRzIGxpa2VcbiAgICAgICAgICogcG5nLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IHNyY1xuICAgICAgICAgKiBAcmV0dXJucyB7RWxlbWVudH1cbiAgICAgICAgICovXG4gICAgICAgIG1ha2VUcmFuc3BhcmVudEltYWdlOiBmdW5jdGlvbiggc3JjICkge1xuXG4gICAgICAgICAgICAkLm1ha2VUcmFuc3BhcmVudEltYWdlID0gZnVuY3Rpb24oIHNyYyApe1xuICAgICAgICAgICAgICAgIHZhciBpbWcgPSAkLm1ha2VOZXV0cmFsRWxlbWVudCggXCJpbWdcIiApO1xuXG4gICAgICAgICAgICAgICAgaW1nLnNyYyA9IHNyYztcblxuICAgICAgICAgICAgICAgIHJldHVybiBpbWc7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoICQuQnJvd3Nlci52ZW5kb3IgPT0gJC5CUk9XU0VSUy5JRSAmJiAkLkJyb3dzZXIudmVyc2lvbiA8IDcgKSB7XG5cbiAgICAgICAgICAgICAgICAkLm1ha2VUcmFuc3BhcmVudEltYWdlID0gZnVuY3Rpb24oIHNyYyApe1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW1nICAgICA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCBcImltZ1wiICksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXG4gICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggID0gZWxlbWVudC5zdHlsZS53aWR0aCB8fCBpbWcud2lkdGggKyBcInB4XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGVsZW1lbnQuc3R5bGUuaGVpZ2h0IHx8IGltZy5oZWlnaHQgKyBcInB4XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZy5vbmxvYWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nID0gbnVsbDsgICAgIC8vIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIGluIElFXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nLnNyYyA9IHNyYztcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5maWx0ZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9J1wiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYyArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIicsIHNpemluZ01ldGhvZD0nc2NhbGUnKVwiO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICQubWFrZVRyYW5zcGFyZW50SW1hZ2UoIHNyYyApO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldHMgdGhlIG9wYWNpdHkgb2YgdGhlIHNwZWNpZmllZCBlbGVtZW50LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fFN0cmluZ30gZWxlbWVudFxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gb3BhY2l0eVxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt1c2VzQWxwaGFdXG4gICAgICAgICAqL1xuICAgICAgICBzZXRFbGVtZW50T3BhY2l0eTogZnVuY3Rpb24oIGVsZW1lbnQsIG9wYWNpdHksIHVzZXNBbHBoYSApIHtcblxuICAgICAgICAgICAgdmFyIGllT3BhY2l0eSxcbiAgICAgICAgICAgICAgICBpZUZpbHRlcjtcblxuICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuXG4gICAgICAgICAgICBpZiAoIHVzZXNBbHBoYSAmJiAhJC5Ccm93c2VyLmFscGhhICkge1xuICAgICAgICAgICAgICAgIG9wYWNpdHkgPSBNYXRoLnJvdW5kKCBvcGFjaXR5ICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggJC5Ccm93c2VyLm9wYWNpdHkgKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gb3BhY2l0eSA8IDEgPyBvcGFjaXR5IDogXCJcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCBvcGFjaXR5IDwgMSApIHtcbiAgICAgICAgICAgICAgICAgICAgaWVPcGFjaXR5ID0gTWF0aC5yb3VuZCggMTAwICogb3BhY2l0eSApO1xuICAgICAgICAgICAgICAgICAgICBpZUZpbHRlciAgPSBcImFscGhhKG9wYWNpdHk9XCIgKyBpZU9wYWNpdHkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5maWx0ZXIgPSBpZUZpbHRlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmZpbHRlciA9IFwiXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCBlbGVtZW50J3MgdG91Y2gtYWN0aW9uIHN0eWxlIGF0dHJpYnV0ZSB0byAnbm9uZScuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBlbGVtZW50XG4gICAgICAgICAqL1xuICAgICAgICBzZXRFbGVtZW50VG91Y2hBY3Rpb25Ob25lOiBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSAkLmdldEVsZW1lbnQoIGVsZW1lbnQgKTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb24gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgZWxlbWVudC5zdHlsZS5tc1RvdWNoQWN0aW9uICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLm1zVG91Y2hBY3Rpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQWRkIHRoZSBzcGVjaWZpZWQgQ1NTIGNsYXNzIHRvIHRoZSBlbGVtZW50IGlmIG5vdCBwcmVzZW50LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fFN0cmluZ30gZWxlbWVudFxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gY2xhc3NOYW1lXG4gICAgICAgICAqL1xuICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24oIGVsZW1lbnQsIGNsYXNzTmFtZSApIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSAkLmdldEVsZW1lbnQoIGVsZW1lbnQgKTtcblxuICAgICAgICAgICAgaWYgKCAhIGVsZW1lbnQuY2xhc3NOYW1lICkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggKCAnICcgKyBlbGVtZW50LmNsYXNzTmFtZSArICcgJyApLlxuICAgICAgICAgICAgICAgIGluZGV4T2YoICcgJyArIGNsYXNzTmFtZSArICcgJyApID09PSAtMSApIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAnICcgKyBjbGFzc05hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpbmQgdGhlIGZpcnN0IGluZGV4IGF0IHdoaWNoIGFuIGVsZW1lbnQgaXMgZm91bmQgaW4gYW4gYXJyYXkgb3IgLTFcbiAgICAgICAgICogaWYgbm90IHByZXNlbnQuXG4gICAgICAgICAqXG4gICAgICAgICAqIENvZGUgdGFrZW4gYW5kIGFkYXB0ZWQgZnJvbVxuICAgICAgICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9pbmRleE9mI0NvbXBhdGliaWxpdHlcbiAgICAgICAgICpcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBmcm9tIHdoaWNoIHRvIGZpbmQgdGhlIGVsZW1lbnRcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHNlYXJjaEVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gZmluZFxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gW2Zyb21JbmRleD0wXSBJbmRleCB0byBzdGFydCByZXNlYXJjaC5cbiAgICAgICAgICogQHJldHVybnMge051bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRoZSBhcnJheS5cbiAgICAgICAgICovXG4gICAgICAgIGluZGV4T2Y6IGZ1bmN0aW9uKCBhcnJheSwgc2VhcmNoRWxlbWVudCwgZnJvbUluZGV4ICkge1xuICAgICAgICAgICAgaWYgKCBBcnJheS5wcm90b3R5cGUuaW5kZXhPZiApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4T2YgPSBmdW5jdGlvbiggYXJyYXksIHNlYXJjaEVsZW1lbnQsIGZyb21JbmRleCApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5LmluZGV4T2YoIHNlYXJjaEVsZW1lbnQsIGZyb21JbmRleCApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhPZiA9IGZ1bmN0aW9uKCBhcnJheSwgc2VhcmNoRWxlbWVudCwgZnJvbUluZGV4ICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpdm90ID0gKCBmcm9tSW5kZXggKSA/IGZyb21JbmRleCA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmICggIWFycmF5ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvciggKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBsZW5ndGggPT09IDAgfHwgcGl2b3QgPj0gbGVuZ3RoICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwaXZvdCA8IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaXZvdCA9IGxlbmd0aCAtIE1hdGguYWJzKCBwaXZvdCApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IHBpdm90OyBpIDwgbGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFycmF5W2ldID09PSBzZWFyY2hFbGVtZW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXhPZiggYXJyYXksIHNlYXJjaEVsZW1lbnQsIGZyb21JbmRleCApO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZW1vdmUgdGhlIHNwZWNpZmllZCBDU1MgY2xhc3MgZnJvbSB0aGUgZWxlbWVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnRcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGNsYXNzTmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCBlbGVtZW50LCBjbGFzc05hbWUgKSB7XG4gICAgICAgICAgICB2YXIgb2xkQ2xhc3NlcyxcbiAgICAgICAgICAgICAgICBuZXdDbGFzc2VzID0gW10sXG4gICAgICAgICAgICAgICAgaTtcblxuICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICAgICAgb2xkQ2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCAvXFxzKy8gKTtcbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgb2xkQ2xhc3Nlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIG9sZENsYXNzZXNbIGkgXSAmJiBvbGRDbGFzc2VzWyBpIF0gIT09IGNsYXNzTmFtZSApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2xhc3Nlcy5wdXNoKCBvbGRDbGFzc2VzWyBpIF0gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IG5ld0NsYXNzZXMuam9pbignICcpO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBnaXZlbiBlbGVtZW50LCBldmVudE5hbWUgYW5kIGhhbmRsZXIuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBlbGVtZW50XG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlclxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt1c2VDYXB0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgYWRkRXZlbnQ6IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoIGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB3aW5kb3cuYXR0YWNoRXZlbnQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICggZWxlbWVudCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlICkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoICdvbicgKyBldmVudE5hbWUsIGhhbmRsZXIgKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIFwiTm8ga25vd24gZXZlbnQgbW9kZWwuXCIgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSgpKSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZW1vdmUgYSBnaXZlbiBldmVudCBsaXN0ZW5lciBmb3IgdGhlIGdpdmVuIGVsZW1lbnQsIGV2ZW50IHR5cGUgYW5kXG4gICAgICAgICAqIGhhbmRsZXIuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBlbGVtZW50XG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWVcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlclxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt1c2VDYXB0dXJlXVxuICAgICAgICAgKi9cbiAgICAgICAgcmVtb3ZlRXZlbnQ6IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoIGVsZW1lbnQsIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIGV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB3aW5kb3cuZGV0YWNoRXZlbnQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCBlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUgKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSAkLmdldEVsZW1lbnQoIGVsZW1lbnQgKTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5kZXRhY2hFdmVudCggJ29uJyArIGV2ZW50TmFtZSwgaGFuZGxlciApO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciggXCJObyBrbm93biBldmVudCBtb2RlbC5cIiApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KCkpLFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENhbmNlbHMgdGhlIGRlZmF1bHQgYnJvd3NlciBiZWhhdmlvciBoYWQgdGhlIGV2ZW50IHByb3BhZ2F0ZWQgYWxsXG4gICAgICAgICAqIHRoZSB3YXkgdXAgdGhlIERPTSB0byB0aGUgd2luZG93IG9iamVjdC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IFtldmVudF1cbiAgICAgICAgICovXG4gICAgICAgIGNhbmNlbEV2ZW50OiBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG5cbiAgICAgICAgICAgIGlmICggZXZlbnQucHJldmVudERlZmF1bHQgKSB7XG4gICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCA9IGZ1bmN0aW9uKCBldmVudCApe1xuICAgICAgICAgICAgICAgICAgICAvLyBXM0MgZm9yIHByZXZlbnRpbmcgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQgPSBmdW5jdGlvbiggZXZlbnQgKXtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgICAgICAvLyBsZWdhY3kgZm9yIHByZXZlbnRpbmcgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICBldmVudC5jYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBJRSBmb3IgcHJldmVudGluZyBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgIH0sXG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogU3RvcHMgdGhlIHByb3BhZ2F0aW9uIG9mIHRoZSBldmVudCB1cCB0aGUgRE9NLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtFdmVudH0gW2V2ZW50XVxuICAgICAgICAgKi9cbiAgICAgICAgc3RvcEV2ZW50OiBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG5cbiAgICAgICAgICAgIGlmICggZXZlbnQuc3RvcFByb3BhZ2F0aW9uICkge1xuICAgICAgICAgICAgICAgIC8vIFczQyBmb3Igc3RvcHBpbmcgcHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAkLnN0b3BFdmVudCA9IGZ1bmN0aW9uKCBldmVudCApe1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJRSBmb3Igc3RvcHBpbmcgcHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAkLnN0b3BFdmVudCA9IGZ1bmN0aW9uKCBldmVudCApe1xuICAgICAgICAgICAgICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkLnN0b3BFdmVudCggZXZlbnQgKTtcbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaW1pbGFyIHRvIE9wZW5TZWFkcmFnb24uZGVsZWdhdGUsIGJ1dCBpdCBkb2VzIG5vdCBpbW1lZGlhdGVseSBjYWxsXG4gICAgICAgICAqIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgcmV0dXJuaW5nIGEgZnVuY3Rpb24gd2hpY2ggY2FuIGJlIGNhbGxlZFxuICAgICAgICAgKiByZXBlYXRlZGx5IHRvIGRlbGVnYXRlIHRoZSBtZXRob2QuIEl0IGFsc28gYWxsb3dzIGFkZGl0b25hbCBhcmd1bWVudHNcbiAgICAgICAgICogdG8gYmUgcGFzc2VkIGR1cmluZyBjb25zdHJ1Y3Rpb24gd2hpY2ggd2lsbCBiZSBhZGRlZCBkdXJpbmcgZWFjaFxuICAgICAgICAgKiBpbnZvY2F0aW9uLCBhbmQgZWFjaCBpbnZvY2F0aW9uIGNhbiBhZGQgYWRkaXRpb25hbCBhcmd1bWVudHMgYXMgd2VsbC5cbiAgICAgICAgICpcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kXG4gICAgICAgICAqIEBwYXJhbSBbYXJnc10gYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIHRoZVxuICAgICAgICAgKiAgY3JlYXRlZCBjYWxsYmFja1xuICAgICAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICBjcmVhdGVDYWxsYmFjazogZnVuY3Rpb24oIG9iamVjdCwgbWV0aG9kICkge1xuICAgICAgICAgICAgLy9UT0RPOiBUaGlzIHBhdHRlcm4gaXMgcGFpbmZ1bCB0byB1c2UgYW5kIGRlYnVnLiAgSXQncyBtdWNoIGNsZWFuZXJcbiAgICAgICAgICAgIC8vICAgICAgdG8gdXNlIHBpbm5pbmcgcGx1cyBhbm9ueW1vdXMgZnVuY3Rpb25zLiAgR2V0IHJpZCBvZiB0aGlzXG4gICAgICAgICAgICAvLyAgICAgIHBhdHRlcm4hXG4gICAgICAgICAgICB2YXIgaW5pdGlhbEFyZ3MgPSBbXSxcbiAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgZm9yICggaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbEFyZ3MucHVzaCggYXJndW1lbnRzWyBpIF0gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gaW5pdGlhbEFyZ3MuY29uY2F0KCBbXSApLFxuICAgICAgICAgICAgICAgICAgICBpO1xuICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goIGFyZ3VtZW50c1sgaSBdICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5hcHBseSggb2JqZWN0LCBhcmdzICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHJlaXZlcyB0aGUgdmFsdWUgb2YgYSB1cmwgcGFyYW1ldGVyIGZyb20gdGhlIHdpbmRvdy5sb2NhdGlvbiBzdHJpbmcuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gICAgICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSB2YWx1ZSBvZiB0aGUgdXJsIHBhcmFtZXRlciBvciBudWxsIGlmIG5vIHBhcmFtIG1hdGNoZXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXRVcmxQYXJhbWV0ZXI6IGZ1bmN0aW9uKCBrZXkgKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBVUkxQQVJBTVNbIGtleSBdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXRyaWV2ZXMgdGhlIHByb3RvY29sIHVzZWQgYnkgdGhlIHVybC4gVGhlIHVybCBjYW4gZWl0aGVyIGJlIGFic29sdXRlXG4gICAgICAgICAqIG9yIHJlbGF0aXZlLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgdXJsIHRvIHJldHJpZXZlIHRoZSBwcm90b2NvbCBmcm9tLlxuICAgICAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFRoZSBwcm90b2NvbCAoaHR0cDosIGh0dHBzOiwgZmlsZTosIGZ0cDogLi4uKVxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0VXJsUHJvdG9jb2w6IGZ1bmN0aW9uKCB1cmwgKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2goL14oW2Etel0rOilcXC9cXC8vaSk7XG4gICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkge1xuICAgICAgICAgICAgICAgIC8vIFJlbGF0aXZlIFVSTCwgcmV0cml2ZSB0aGUgcHJvdG9jb2wgZnJvbSB3aW5kb3cubG9jYXRpb25cbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhbiBYSFIgb2JqZWN0XG4gICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAqIEBwYXJhbSB7dHlwZX0gW2xvY2FsXSBJZiBzZXQgdG8gdHJ1ZSwgdGhlIFhIUiB3aWxsIGJlIGZpbGU6IHByb3RvY29sXG4gICAgICAgICAqIGNvbXBhdGlibGUgaWYgcG9zc2libGUgKGJ1dCBtYXkgcmFpc2UgYSB3YXJuaW5nIGluIHRoZSBicm93c2VyKS5cbiAgICAgICAgICogQHJldHVybnMge1hNTEh0dHBSZXF1ZXN0fVxuICAgICAgICAgKi9cbiAgICAgICAgY3JlYXRlQWpheFJlcXVlc3Q6IGZ1bmN0aW9uKCBsb2NhbCApIHtcbiAgICAgICAgICAgIC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCB3aW5kb3cuQWN0aXZlWE9iamVjdCBzbyB3ZSBqdXN0IHRyeSB0b1xuICAgICAgICAgICAgLy8gY3JlYXRlIG9uZSB0byBzZWUgaWYgaXQgaXMgc3VwcG9ydGVkLlxuICAgICAgICAgICAgLy8gU2VlOiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvZG40MjM5NDglMjh2PXZzLjg1JTI5LmFzcHhcbiAgICAgICAgICAgIHZhciBzdXBwb3J0QWN0aXZlWDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3Q6dHJ1ZSAqL1xuICAgICAgICAgICAgICAgIHN1cHBvcnRBY3RpdmVYID0gISFuZXcgQWN0aXZlWE9iamVjdCggXCJNaWNyb3NvZnQuWE1MSFRUUFwiICk7XG4gICAgICAgICAgICB9IGNhdGNoKCBlICkge1xuICAgICAgICAgICAgICAgIHN1cHBvcnRBY3RpdmVYID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggc3VwcG9ydEFjdGl2ZVggKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgKSB7XG4gICAgICAgICAgICAgICAgICAgICQuY3JlYXRlQWpheFJlcXVlc3QgPSBmdW5jdGlvbiggbG9jYWwgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxvY2FsICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCggXCJNaWNyb3NvZnQuWE1MSFRUUFwiICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJC5jcmVhdGVBamF4UmVxdWVzdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCBcIk1pY3Jvc29mdC5YTUxIVFRQXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB3aW5kb3cuWE1MSHR0cFJlcXVlc3QgKSB7XG4gICAgICAgICAgICAgICAgJC5jcmVhdGVBamF4UmVxdWVzdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBcIkJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LlwiICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJC5jcmVhdGVBamF4UmVxdWVzdCggbG9jYWwgKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogTWFrZXMgYW4gQUpBWCByZXF1ZXN0LlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gb3B0aW9ucy51cmwgLSB0aGUgdXJsIHRvIHJlcXVlc3RcbiAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5zdWNjZXNzIC0gYSBmdW5jdGlvbiB0byBjYWxsIG9uIGEgc3VjY2Vzc2Z1bCByZXNwb25zZVxuICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLmVycm9yIC0gYSBmdW5jdGlvbiB0byBjYWxsIG9uIHdoZW4gYW4gZXJyb3Igb2NjdXJzXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMud2l0aENyZWRlbnRpYWxzPWZhbHNlXSAtIHdoZXRoZXIgdG8gc2V0IHRoZSBYSFIncyB3aXRoQ3JlZGVudGlhbHNcbiAgICAgICAgICogQHRocm93cyB7RXJyb3J9XG4gICAgICAgICAqL1xuICAgICAgICBtYWtlQWpheFJlcXVlc3Q6IGZ1bmN0aW9uKCB1cmwsIG9uU3VjY2Vzcywgb25FcnJvciApIHtcbiAgICAgICAgICAgIHZhciB3aXRoQ3JlZGVudGlhbHM7XG5cbiAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBvdXIgcHJlZmVycmVkIEFQSSBpcyB0aGF0IHlvdSBwYXNzIGluIGEgc2luZ2xlIG9iamVjdDsgdGhlIG5hbWVkXG4gICAgICAgICAgICAvLyBhcmd1bWVudHMgYXJlIGZvciBsZWdhY3kgc3VwcG9ydC5cbiAgICAgICAgICAgIGlmKCAkLmlzUGxhaW5PYmplY3QoIHVybCApICl7XG4gICAgICAgICAgICAgICAgb25TdWNjZXNzID0gdXJsLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgb25FcnJvciA9IHVybC5lcnJvcjtcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHMgPSB1cmwud2l0aENyZWRlbnRpYWxzO1xuICAgICAgICAgICAgICAgIHVybCA9IHVybC51cmw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwcm90b2NvbCA9ICQuZ2V0VXJsUHJvdG9jb2woIHVybCApO1xuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSAkLmNyZWF0ZUFqYXhSZXF1ZXN0KCBwcm90b2NvbCA9PT0gXCJmaWxlOlwiICk7XG5cbiAgICAgICAgICAgIGlmICggISQuaXNGdW5jdGlvbiggb25TdWNjZXNzICkgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBcIm1ha2VBamF4UmVxdWVzdCByZXF1aXJlcyBhIHN1Y2Nlc3MgY2FsbGJhY2tcIiApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIC8vIDQgPSBET05FIChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QjUHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAoIHJlcXVlc3QucmVhZHlTdGF0ZSA9PSA0ICkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7fTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBXaXRoIHByb3RvY29scyBvdGhlciB0aGFuIGh0dHAvaHR0cHMsIHRoZSBzdGF0dXMgaXMgMjAwXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIEZpcmVmb3ggYW5kIDAgb24gb3RoZXIgYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCByZXF1ZXN0LnN0YXR1cyA9PT0gMjAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoIHJlcXVlc3Quc3RhdHVzID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvY29sICE9PSBcImh0dHA6XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wgIT09IFwiaHR0cHM6XCIgKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzKCByZXF1ZXN0ICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkLmNvbnNvbGUubG9nKCBcIkFKQVggcmVxdWVzdCByZXR1cm5lZCAlZDogJXNcIiwgcmVxdWVzdC5zdGF0dXMsIHVybCApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoICQuaXNGdW5jdGlvbiggb25FcnJvciApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoIHJlcXVlc3QgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh3aXRoQ3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5vcGVuKCBcIkdFVFwiLCB1cmwsIHRydWUgKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0LnNlbmQoIG51bGwgKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbXNnID0gZS5tZXNzYWdlO1xuXG4gICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgSUUgPCAxMCBkb2VzIG5vdCBzdXBwb3J0IENPUlMgYW5kIGFuIFhIUiByZXF1ZXN0IHRvIGEgZGlmZmVyZW50IG9yaWdpbiB3aWxsIGZhaWwgYXMgc29vblxuICAgICAgICAgICAgICAgICAgICBhcyBzZW5kKCkgaXMgY2FsbGVkLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBlYXN5IHRvIG1pc3MgZHVyaW5nIGRldmVsb3BtZW50IGFuZCBhcHBlYXIgaW5cbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdGlvbiBpZiB5b3UgdXNlIGEgQ0ROIG9yIGRvbWFpbiBzaGFyZGluZyBhbmQgdGhlIHNlY3VyaXR5IHBvbGljeSBpcyBsaWtlbHkgdG8gYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIGhhbmRsZXJzIHNpbmNlIGFueSBhdHRlbXB0IHRvIGFjY2VzcyBhIHByb3BlcnR5IG9mIHRoZSByZXF1ZXN0IG9iamVjdCB3aWxsXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlIGFuIGFjY2VzcyBkZW5pZWQgVHlwZUVycm9yIGluc2lkZSB0aGUgY2F0Y2ggYmxvY2suXG5cbiAgICAgICAgICAgICAgICAgICAgVG8gYmUgZnJpZW5kbGllciwgd2UnbGwgY2hlY2sgZm9yIHRoaXMgc3BlY2lmaWMgZXJyb3IgYW5kIGFkZCBhIGRvY3VtZW50YXRpb24gcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICB0byBwb2ludCBkZXZlbG9wZXJzIGluIHRoZSByaWdodCBkaXJlY3Rpb24uIFdlIHRlc3QgdGhlIGV4Y2VwdGlvbiBudW1iZXIgYmVjYXVzZSBJRSdzXG4gICAgICAgICAgICAgICAgICAgIGVycm9yIG1lc3NhZ2VzIGFyZSBsb2NhbGl6ZWQuXG4gICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB2YXIgb2xkSUUgPSAkLkJyb3dzZXIudmVuZG9yID09ICQuQlJPV1NFUlMuSUUgJiYgJC5Ccm93c2VyLnZlcnNpb24gPCAxMDtcbiAgICAgICAgICAgICAgICBpZiAoIG9sZElFICYmIHR5cGVvZiggZS5udW1iZXIgKSAhPSBcInVuZGVmaW5lZFwiICYmIGUubnVtYmVyID09IC0yMTQ3MDI0ODkxICkge1xuICAgICAgICAgICAgICAgICAgICBtc2cgKz0gXCJcXG5TZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTM3NTA1KHY9dnMuODUpLmFzcHgjeGRvbWFpblwiO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQuY29uc29sZS5sb2coIFwiJXMgd2hpbGUgbWFraW5nIEFKQVggcmVxdWVzdDogJXNcIiwgZS5uYW1lLCBtc2cgKTtcblxuICAgICAgICAgICAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXt9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5YRG9tYWluUmVxdWVzdCkgeyAvLyBJRTkgb3IgSUU4IG1pZ2h0IGFzIHdlbGwgdHJ5IHRvIHVzZSBYRG9tYWluUmVxdWVzdFxuICAgICAgICAgICAgICAgICAgICB2YXIgeGRyID0gbmV3IFhEb21haW5SZXF1ZXN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh4ZHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCBvblN1Y2Nlc3MgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzKHsgLy8gRmFraW5nIGFuIHhociBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dDogeGRyLnJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogMjAwLCAvLyBYRG9tYWluUmVxdWVzdCBkb2Vzbid0IHN1cHBvcnQgc3RhdHVzIGNvZGVzLCBzbyB3ZSBqdXN0IGZha2Ugb25lISA6L1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogJ09LJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uICggb25FcnJvciApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHsgLy8gRmFraW5nIGFuIHhociBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGV4dDogeGRyLnJlc3BvbnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogNDQ0LCAvLyA0NDQgTm8gUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICdBbiBlcnJvciBoYXBwZW5lZC4gRHVlIHRvIGFuIFhEb21haW5SZXF1ZXN0IGRlZmljaWVuY3kgd2UgY2FuIG5vdCBleHRyYWN0IGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVycm9yLiBVcGdyYWRlIHlvdXIgYnJvd3Nlci4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vcGVuKCdHRVQnLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5zZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCBvbkVycm9yICkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoIHJlcXVlc3QsIGUgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoICQuaXNGdW5jdGlvbiggb25FcnJvciApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvciggcmVxdWVzdCwgZSApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWtlbiBmcm9tIGpRdWVyeSAxLjYuMVxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMudXJsXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMuY2FsbGJhY2tcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnBhcmFtPSdjYWxsYmFjayddIFRoZSBuYW1lIG9mIHRoZSB1cmwgcGFyYW1ldGVyXG4gICAgICAgICAqICAgICAgdG8gcmVxdWVzdCB0aGUganNvbnAgcHJvdmlkZXIgd2l0aC5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmNhbGxiYWNrTmFtZT1dIFRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayB0b1xuICAgICAgICAgKiAgICAgIHJlcXVlc3QgdGhlIGpzb25wIHByb3ZpZGVyIHdpdGguXG4gICAgICAgICAqL1xuICAgICAgICBqc29ucDogZnVuY3Rpb24oIG9wdGlvbnMgKXtcbiAgICAgICAgICAgIHZhciBzY3JpcHQsXG4gICAgICAgICAgICAgICAgdXJsICAgICA9IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgICAgIGhlYWQgICAgPSBkb2N1bWVudC5oZWFkIHx8XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcImhlYWRcIiApWyAwIF0gfHxcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICAgICAgICAgIGpzb25wQ2FsbGJhY2sgPSBvcHRpb25zLmNhbGxiYWNrTmFtZSB8fCAnb3BlbnNlYWRyYWdvbicgKyAkLm5vdygpLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzICAgICAgPSB3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSxcbiAgICAgICAgICAgICAgICByZXBsYWNlICAgICAgID0gXCIkMVwiICsganNvbnBDYWxsYmFjayArIFwiJDJcIixcbiAgICAgICAgICAgICAgICBjYWxsYmFja1BhcmFtID0gb3B0aW9ucy5wYXJhbSB8fCAnY2FsbGJhY2snLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrICAgICAgPSBvcHRpb25zLmNhbGxiYWNrO1xuXG4gICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSggLyhcXD0pXFw/KCZ8JCl8XFw/XFw/L2ksIHJlcGxhY2UgKTtcbiAgICAgICAgICAgIC8vIEFkZCBjYWxsYmFjayBtYW51YWxseVxuICAgICAgICAgICAgdXJsICs9ICgvXFw/Ly50ZXN0KCB1cmwgKSA/IFwiJlwiIDogXCI/XCIpICsgY2FsbGJhY2tQYXJhbSArIFwiPVwiICsganNvbnBDYWxsYmFjaztcblxuICAgICAgICAgICAgLy8gSW5zdGFsbCBjYWxsYmFja1xuICAgICAgICAgICAgd2luZG93WyBqc29ucENhbGxiYWNrIF0gPSBmdW5jdGlvbiggcmVzcG9uc2UgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhcHJldmlvdXMgKXtcbiAgICAgICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHdpbmRvd1sganNvbnBDYWxsYmFjayBdO1xuICAgICAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3N3YWxsb3dcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd1sganNvbnBDYWxsYmFjayBdID0gcHJldmlvdXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKCBjYWxsYmFjayAmJiAkLmlzRnVuY3Rpb24oIGNhbGxiYWNrICkgKXtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soIHJlc3BvbnNlICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG4gICAgICAgICAgICAvL1RPRE86IGhhdmluZyBhbiBpc3N1ZSB3aXRoIGFzeW5jIGluZm8gcmVxdWVzdHNcbiAgICAgICAgICAgIGlmKCB1bmRlZmluZWQgIT09IG9wdGlvbnMuYXN5bmMgfHwgZmFsc2UgIT09IG9wdGlvbnMuYXN5bmMgKXtcbiAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSBcImFzeW5jXCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggb3B0aW9ucy5zY3JpcHRDaGFyc2V0ICkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5jaGFyc2V0ID0gb3B0aW9ucy5zY3JpcHRDaGFyc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuXG4gICAgICAgICAgICAvLyBBdHRhY2ggaGFuZGxlcnMgZm9yIGFsbCBicm93c2Vyc1xuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiggXywgaXNBYm9ydCApIHtcblxuICAgICAgICAgICAgICAgIGlmICggaXNBYm9ydCB8fCAhc2NyaXB0LnJlYWR5U3RhdGUgfHwgL2xvYWRlZHxjb21wbGV0ZS8udGVzdCggc2NyaXB0LnJlYWR5U3RhdGUgKSApIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbWVtb3J5IGxlYWsgaW4gSUVcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgc2NyaXB0XG4gICAgICAgICAgICAgICAgICAgIGlmICggaGVhZCAmJiBzY3JpcHQucGFyZW50Tm9kZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRGVyZWZlcmVuY2UgdGhlIHNjcmlwdFxuICAgICAgICAgICAgICAgICAgICBzY3JpcHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIFVzZSBpbnNlcnRCZWZvcmUgaW5zdGVhZCBvZiBhcHBlbmRDaGlsZCAgdG8gY2lyY3VtdmVudCBhbiBJRTYgYnVnLlxuICAgICAgICAgICAgLy8gVGhpcyBhcmlzZXMgd2hlbiBhIGJhc2Ugbm9kZSBpcyB1c2VkICgjMjcwOSBhbmQgIzQzNzgpLlxuICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7XG5cbiAgICAgICAgfSxcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdWxseSBkZXByZWNhdGVkLiBXaWxsIHRocm93IGFuIGVycm9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNvcGVufVxuICAgICAgICAgKi9cbiAgICAgICAgY3JlYXRlRnJvbURaSTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aHJvdyBcIk9wZW5TZWFkcmFnb24uY3JlYXRlRnJvbURaSSBpcyBkZXByZWNhdGVkLCB1c2UgVmlld2VyLm9wZW4uXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhcnNlcyBhbiBYTUwgc3RyaW5nIGludG8gYSBET00gRG9jdW1lbnQuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nXG4gICAgICAgICAqIEByZXR1cm5zIHtEb2N1bWVudH1cbiAgICAgICAgICovXG4gICAgICAgIHBhcnNlWG1sOiBmdW5jdGlvbiggc3RyaW5nICkge1xuICAgICAgICAgICAgaWYgKCB3aW5kb3cuRE9NUGFyc2VyICkge1xuXG4gICAgICAgICAgICAgICAgJC5wYXJzZVhtbCA9IGZ1bmN0aW9uKCBzdHJpbmcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4bWxEb2MgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyO1xuXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgeG1sRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyggc3RyaW5nLCBcInRleHQveG1sXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhtbERvYztcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB3aW5kb3cuQWN0aXZlWE9iamVjdCApIHtcblxuICAgICAgICAgICAgICAgICQucGFyc2VYbWwgPSBmdW5jdGlvbiggc3RyaW5nICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgeG1sRG9jID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICB4bWxEb2MgPSBuZXcgQWN0aXZlWE9iamVjdCggXCJNaWNyb3NvZnQuWE1MRE9NXCIgKTtcbiAgICAgICAgICAgICAgICAgICAgeG1sRG9jLmFzeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHhtbERvYy5sb2FkWE1MKCBzdHJpbmcgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhtbERvYztcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciggXCJCcm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCBYTUwgRE9NLlwiICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAkLnBhcnNlWG1sKCBzdHJpbmcgKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFyc2VzIGEgSlNPTiBzdHJpbmcgaW50byBhIEphdmFzY3JpcHQgb2JqZWN0LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZ1xuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgcGFyc2VKU09OOiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuSlNPTiAmJiB3aW5kb3cuSlNPTi5wYXJzZSkge1xuICAgICAgICAgICAgICAgICQucGFyc2VKU09OID0gd2luZG93LkpTT04ucGFyc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIHVzZWQgYnkgSUU4IGluIG5vbiBzdGFuZGFyZHMgbW9kZVxuICAgICAgICAgICAgICAgICQucGFyc2VKU09OID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qanNoaW50IGV2aWw6dHJ1ZSovXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmFsKCcoJyArIHN0cmluZyArICcpJyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAkLnBhcnNlSlNPTihzdHJpbmcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXBvcnRzIHdoZXRoZXIgdGhlIGltYWdlIGZvcm1hdCBpcyBzdXBwb3J0ZWQgZm9yIHRpbGluZyBpbiB0aGlzXG4gICAgICAgICAqIHZlcnNpb24uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gW2V4dGVuc2lvbl1cbiAgICAgICAgICogQHJldHVybnMge0Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICBpbWFnZUZvcm1hdFN1cHBvcnRlZDogZnVuY3Rpb24oIGV4dGVuc2lvbiApIHtcbiAgICAgICAgICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbiA/IGV4dGVuc2lvbiA6IFwiXCI7XG4gICAgICAgICAgICByZXR1cm4gISFGSUxFRk9STUFUU1sgZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgXTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG5cblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IGJyb3dzZXIgdmVuZG9yLCB2ZXJzaW9uLCBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgZGV0ZWN0ZWQgZmVhdHVyZXMuXG4gICAgICogQG1lbWJlciB7T2JqZWN0fSBCcm93c2VyXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAc3RhdGljXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQlJPV1NFUlN9IHZlbmRvciAtIE9uZSBvZiB0aGUge0BsaW5rIE9wZW5TZWFkcmFnb24uQlJPV1NFUlN9IGVudW1lcmF0aW9uIHZhbHVlcy5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gdmVyc2lvblxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gYWxwaGEgLSBEb2VzIHRoZSBicm93c2VyIHN1cHBvcnQgaW1hZ2UgYWxwaGEgdHJhbnNwYXJlbmN5LlxuICAgICAqL1xuICAgICQuQnJvd3NlciA9IHtcbiAgICAgICAgdmVuZG9yOiAgICAgJC5CUk9XU0VSUy5VTktOT1dOLFxuICAgICAgICB2ZXJzaW9uOiAgICAwLFxuICAgICAgICBhbHBoYTogICAgICB0cnVlXG4gICAgfTtcblxuXG4gICAgdmFyIEZJTEVGT1JNQVRTID0ge1xuICAgICAgICAgICAgXCJibXBcIjogIGZhbHNlLFxuICAgICAgICAgICAgXCJqcGVnXCI6IHRydWUsXG4gICAgICAgICAgICBcImpwZ1wiOiAgdHJ1ZSxcbiAgICAgICAgICAgIFwicG5nXCI6ICB0cnVlLFxuICAgICAgICAgICAgXCJ0aWZcIjogIGZhbHNlLFxuICAgICAgICAgICAgXCJ3ZHBcIjogIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFVSTFBBUkFNUyA9IHt9O1xuXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAvL0Egc21hbGwgYXV0by1leGVjdXRpbmcgcm91dGluZSB0byBkZXRlcm1pbmUgdGhlIGJyb3dzZXIgdmVuZG9yLFxuICAgICAgICAvL3ZlcnNpb24gYW5kIHN1cHBvcnRpbmcgZmVhdHVyZSBzZXRzLlxuICAgICAgICB2YXIgYXBwID0gbmF2aWdhdG9yLmFwcE5hbWUsXG4gICAgICAgICAgICB2ZXIgPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbixcbiAgICAgICAgICAgIHVhICA9IG5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICAgICAgICByZWdleDtcblxuICAgICAgICAvL2NvbnNvbGUuZXJyb3IoICdhcHBOYW1lOiAnICsgbmF2aWdhdG9yLmFwcE5hbWUgKTtcbiAgICAgICAgLy9jb25zb2xlLmVycm9yKCAnYXBwVmVyc2lvbjogJyArIG5hdmlnYXRvci5hcHBWZXJzaW9uICk7XG4gICAgICAgIC8vY29uc29sZS5lcnJvciggJ3VzZXJBZ2VudDogJyArIG5hdmlnYXRvci51c2VyQWdlbnQgKTtcblxuICAgICAgICBzd2l0Y2goIG5hdmlnYXRvci5hcHBOYW1lICl7XG4gICAgICAgICAgICBjYXNlIFwiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyXCI6XG4gICAgICAgICAgICAgICAgaWYoICEhd2luZG93LmF0dGFjaEV2ZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICEhd2luZG93LkFjdGl2ZVhPYmplY3QgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlbmRvciA9ICQuQlJPV1NFUlMuSUU7XG4gICAgICAgICAgICAgICAgICAgICQuQnJvd3Nlci52ZXJzaW9uID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHVhLnN1YnN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YS5pbmRleE9mKCBcIk1TSUVcIiApICsgNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YS5pbmRleE9mKCBcIjtcIiwgdWEuaW5kZXhPZiggXCJNU0lFXCIgKSApIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIk5ldHNjYXBlXCI6XG4gICAgICAgICAgICAgICAgaWYoICEhd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB1YS5pbmRleE9mKCBcIkZpcmVmb3hcIiApID49IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkLkJyb3dzZXIudmVuZG9yID0gJC5CUk9XU0VSUy5GSVJFRk9YO1xuICAgICAgICAgICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlcnNpb24gPSBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVhLnN1YnN0cmluZyggdWEuaW5kZXhPZiggXCJGaXJlZm94XCIgKSArIDggKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdWEuaW5kZXhPZiggXCJTYWZhcmlcIiApID49IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkLkJyb3dzZXIudmVuZG9yID0gdWEuaW5kZXhPZiggXCJDaHJvbWVcIiApID49IDAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuQlJPV1NFUlMuQ0hST01FIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLkJST1dTRVJTLlNBRkFSSTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQuQnJvd3Nlci52ZXJzaW9uID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YS5zdWJzdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVhLnN1YnN0cmluZyggMCwgdWEuaW5kZXhPZiggXCJTYWZhcmlcIiApICkubGFzdEluZGV4T2YoIFwiL1wiICkgKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YS5pbmRleE9mKCBcIlNhZmFyaVwiIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKCBcIlRyaWRlbnQvLipydjooWzAtOV17MSx9Wy4wLTldezAsfSlcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZ2V4LmV4ZWMoIHVhICkgIT09IG51bGwgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlbmRvciA9ICQuQlJPV1NFUlMuSUU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlcnNpb24gPSBwYXJzZUZsb2F0KCBSZWdFeHAuJDEgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJPcGVyYVwiOlxuICAgICAgICAgICAgICAgICQuQnJvd3Nlci52ZW5kb3IgPSAkLkJST1dTRVJTLk9QRVJBO1xuICAgICAgICAgICAgICAgICQuQnJvd3Nlci52ZXJzaW9uID0gcGFyc2VGbG9hdCggdmVyICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWdub3JlICc/JyBwb3J0aW9uIG9mIHF1ZXJ5IHN0cmluZ1xuICAgICAgICB2YXIgcXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZyggMSApLFxuICAgICAgICAgICAgcGFydHMgPSBxdWVyeS5zcGxpdCgnJicpLFxuICAgICAgICAgICAgcGFydCxcbiAgICAgICAgICAgIHNlcCxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIHBhcnQgPSBwYXJ0c1sgaSBdO1xuICAgICAgICAgICAgc2VwICA9IHBhcnQuaW5kZXhPZiggJz0nICk7XG5cbiAgICAgICAgICAgIGlmICggc2VwID4gMCApIHtcbiAgICAgICAgICAgICAgICBVUkxQQVJBTVNbIHBhcnQuc3Vic3RyaW5nKCAwLCBzZXAgKSBdID1cbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KCBwYXJ0LnN1YnN0cmluZyggc2VwICsgMSApICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL2RldGVybWluZSBpZiB0aGlzIGJyb3dzZXIgc3VwcG9ydHMgaW1hZ2UgYWxwaGEgdHJhbnNwYXJlbmN5XG4gICAgICAgICQuQnJvd3Nlci5hbHBoYSA9ICEoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlbmRvciA9PSAkLkJST1dTRVJTLklFICYmXG4gICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlcnNpb24gPCA5XG4gICAgICAgICAgICApIHx8IChcbiAgICAgICAgICAgICAgICAkLkJyb3dzZXIudmVuZG9yID09ICQuQlJPV1NFUlMuQ0hST01FICYmXG4gICAgICAgICAgICAgICAgJC5Ccm93c2VyLnZlcnNpb24gPCAyXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy9kZXRlcm1pbmUgaWYgdGhpcyBicm93c2VyIHN1cHBvcnRzIGVsZW1lbnQuc3R5bGUub3BhY2l0eVxuICAgICAgICAkLkJyb3dzZXIub3BhY2l0eSA9ICEoXG4gICAgICAgICAgICAkLkJyb3dzZXIudmVuZG9yID09ICQuQlJPV1NFUlMuSUUgJiZcbiAgICAgICAgICAgICQuQnJvd3Nlci52ZXJzaW9uIDwgOVxuICAgICAgICApO1xuXG4gICAgfSkoKTtcblxuXG4gICAgLy9UT0RPOiAkLmNvbnNvbGUgaXMgb2Z0ZW4gdXNlZCBpbnNpZGUgYSB0cnkvY2F0Y2ggYmxvY2sgd2hpY2ggZ2VuZXJhbGx5XG4gICAgLy8gICAgICBwcmV2ZW50cyBhbGxvd2luZ3MgZXJyb3JzIHRvIG9jY3VyIHdpdGggZGV0ZWN0aW9uIHVudGlsIGEgZGVidWdnZXJcbiAgICAvLyAgICAgIGlzIGF0dGFjaGVkLiAgQWx0aG91Z2ggSSd2ZSBiZWVuIGd1aWx0eSBvZiB0aGUgc2FtZSBhbnRpLXBhdHRlcm5cbiAgICAvLyAgICAgIEkgZXZlbnR1YWxseSB3YXMgY29udmluY2VkIHRoYXQgZXJyb3JzIHNob3VsZCBuYXR1cmFsbHkgcHJvcG9nYXRlIGluXG4gICAgLy8gICAgICBhbGwgYnV0IHRoZSBtb3N0IHNwZWNpYWwgY2FzZXMuXG4gICAgLyoqXG4gICAgICogQSBjb252ZW5pZW50IGFsaWFzIGZvciBjb25zb2xlIHdoZW4gYXZhaWxhYmxlLCBhbmQgYSBzaW1wbGUgbnVsbFxuICAgICAqIGZ1bmN0aW9uIHdoZW4gY29uc29sZSBpcyB1bmF2YWlsYWJsZS5cbiAgICAgKiBAc3RhdGljXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICB2YXIgbnVsbGZ1bmN0aW9uID0gZnVuY3Rpb24oIG1zZyApe1xuICAgICAgICAgICAgLy9kb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gbXNnO1xuICAgICAgICB9O1xuXG4gICAgJC5jb25zb2xlID0gd2luZG93LmNvbnNvbGUgfHwge1xuICAgICAgICBsb2c6ICAgIG51bGxmdW5jdGlvbixcbiAgICAgICAgZGVidWc6ICBudWxsZnVuY3Rpb24sXG4gICAgICAgIGluZm86ICAgbnVsbGZ1bmN0aW9uLFxuICAgICAgICB3YXJuOiAgIG51bGxmdW5jdGlvbixcbiAgICAgICAgZXJyb3I6ICBudWxsZnVuY3Rpb24sXG4gICAgICAgIGFzc2VydDogbnVsbGZ1bmN0aW9uXG4gICAgfTtcblxuXG4gICAgLy8gQWRkaW5nIHN1cHBvcnQgZm9yIEhUTUw1J3MgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFzIHN1Z2dlc3RlZCBieSBhY2RoYS5cbiAgICAvLyBJbXBsZW1lbnRhdGlvbiB0YWtlbiBmcm9tIG1hdHQgc3luZGVyJ3MgcG9zdCBoZXJlOlxuICAgIC8vIGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jcm9zcy1icm93c2VyLWFuZC1sZWdhY3ktc3VwcG9ydGVkLXJlcXVlc3RmcmFtZWFuaW1hdGlvbi9cbiAgICAoZnVuY3Rpb24oIHcgKSB7XG5cbiAgICAgICAgLy8gbW9zdCBicm93c2VycyBoYXZlIGFuIGltcGxlbWVudGF0aW9uXG4gICAgICAgIHZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB3LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fFxuICAgICAgICAgICAgdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgICAgIHcud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XG4gICAgICAgICAgICB3Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuXG4gICAgICAgIHZhciBjYW5jZWxBbmltYXRpb25GcmFtZSA9IHcuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgICAgIHcubW96Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgICAgIHcud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgICAgICAgIHcubXNDYW5jZWxBbmltYXRpb25GcmFtZTtcblxuICAgICAgICAvLyBwb2x5ZmlsbCwgd2hlbiBuZWNlc3NhcnlcbiAgICAgICAgaWYgKCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUgKSB7XG4gICAgICAgICAgICAvLyBXZSBjYW4ndCBhc3NpZ24gdGhlc2Ugd2luZG93IG1ldGhvZHMgZGlyZWN0bHkgdG8gJCBiZWNhdXNlIHRoZXlcbiAgICAgICAgICAgIC8vIGV4cGVjdCB0aGVpciBcInRoaXNcIiB0byBiZSBcIndpbmRvd1wiLCBzbyB3ZSBjYWxsIHRoZW0gaW4gd3JhcHBlcnMuXG4gICAgICAgICAgICAkLnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZS5hcHBseSggdywgYXJndW1lbnRzICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgJC5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmNlbEFuaW1hdGlvbkZyYW1lLmFwcGx5KCB3LCBhcmd1bWVudHMgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgYUFuaW1RdWV1ZSA9IFtdLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcgPSBbXSxcbiAgICAgICAgICAgICAgICBpUmVxdWVzdElkID0gMCxcbiAgICAgICAgICAgICAgICBpSW50ZXJ2YWxJZDtcblxuICAgICAgICAgICAgLy8gY3JlYXRlIGEgbW9jayByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICAgICAgICAgICQucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuICAgICAgICAgICAgICAgIGFBbmltUXVldWUucHVzaCggWyArK2lSZXF1ZXN0SWQsIGNhbGxiYWNrIF0gKTtcblxuICAgICAgICAgICAgICAgIGlmICggIWlJbnRlcnZhbElkICkge1xuICAgICAgICAgICAgICAgICAgICBpSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYUFuaW1RdWV1ZS5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWUgPSAkLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgYWxsIG9mIHRoZSBjdXJyZW50bHkgb3V0c3RhbmRpbmcgZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0cywgYnV0IG5vbmUgdGhhdCBnZXQgYWRkZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgYXJyYXlzIHNvIHdlIGRvbid0IGhhdmUgdG8gY3JlYXRlIGEgbmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgZXZlcnkgZnJhbWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBwcm9jZXNzaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NpbmcgPSBhQW5pbVF1ZXVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFBbmltUXVldWUgPSB0ZW1wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggcHJvY2Vzc2luZy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcuc2hpZnQoKVsgMSBdKCB0aW1lICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBjb250aW51ZSB0aGUgaW50ZXJ2YWwsIGlmIHVubmVjZXNzYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCggaUludGVydmFsSWQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpSW50ZXJ2YWxJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCAvIDUwKTsgIC8vIGVzdGltYXRpbmcgc3VwcG9ydCBmb3IgNTAgZnJhbWVzIHBlciBzZWNvbmRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaVJlcXVlc3RJZDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG1vY2sgY2FuY2VsQW5pbWF0aW9uRnJhbWUgZnVuY3Rpb25cbiAgICAgICAgICAgICQuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbiggcmVxdWVzdElkICkge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgdGhlIHJlcXVlc3QgSUQgYW5kIHJlbW92ZSBpdFxuICAgICAgICAgICAgICAgIHZhciBpLCBqO1xuICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBqID0gYUFuaW1RdWV1ZS5sZW5ndGg7IGkgPCBqOyBpICs9IDEgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggYUFuaW1RdWV1ZVsgaSBdWyAwIF0gPT09IHJlcXVlc3RJZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFBbmltUXVldWUuc3BsaWNlKCBpLCAxICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBpbiB0aGUgcXVldWUsIGl0IG1heSBiZSBpbiB0aGUgc2V0IHdlJ3JlIGN1cnJlbnRseVxuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcgKGlmIGNhbmNlbEFuaW1hdGlvbkZyYW1lIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBhXG4gICAgICAgICAgICAgICAgLy8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrKS5cbiAgICAgICAgICAgICAgICBmb3IgKCBpID0gMCwgaiA9IHByb2Nlc3NpbmcubGVuZ3RoOyBpIDwgajsgaSArPSAxICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHByb2Nlc3NpbmdbIGkgXVsgMCBdID09PSByZXF1ZXN0SWQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLnNwbGljZSggaSwgMSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0pKCB3aW5kb3cgKTtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50XG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbaXNGaXhlZF1cbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoIGVsZW1lbnQsIGlzRml4ZWQgKSB7XG4gICAgICAgIGlmICggaXNGaXhlZCAmJiBlbGVtZW50ICE9IGRvY3VtZW50LmJvZHkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxufShPcGVuU2VhZHJhZ29uKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gZnVsbC1zY3JlZW4gc3VwcG9ydCBmdW5jdGlvbnNcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICkge1xuICAgIC8qKlxuICAgICAqIERldGVybWluZSBuYXRpdmUgZnVsbCBzY3JlZW4gc3VwcG9ydCB3ZSBjYW4gZ2V0IGZyb20gdGhlIGJyb3dzZXIuXG4gICAgICogQG1lbWJlciBmdWxsU2NyZWVuQXBpXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc3VwcG9ydHNGdWxsU2NyZWVuIFJldHVybiB0cnVlIGlmIGZ1bGwgc2NyZWVuIEFQSSBpcyBzdXBwb3J0ZWQuXG4gICAgICogQHByb3BlcnR5IHtGdW5jdGlvbn0gaXNGdWxsU2NyZWVuIFJldHVybiB0cnVlIGlmIGN1cnJlbnRseSBpbiBmdWxsIHNjcmVlbiBtb2RlLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGdldEZ1bGxTY3JlZW5FbGVtZW50IFJldHVybiB0aGUgZWxlbWVudCBjdXJyZW50bHkgaW4gZnVsbCBzY3JlZW4gbW9kZS5cbiAgICAgKiBAcHJvcGVydHkge0Z1bmN0aW9ufSByZXF1ZXN0RnVsbFNjcmVlbiBNYWtlIGEgcmVxdWVzdCB0byBnbyBpbiBmdWxsIHNjcmVlbiBtb2RlLlxuICAgICAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGV4aXRGdWxsU2NyZWVuIE1ha2UgYSByZXF1ZXN0IHRvIGV4aXQgZnVsbCBzY3JlZW4gbW9kZS5cbiAgICAgKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBjYW5jZWxGdWxsU2NyZWVuIERlcHJlY2F0ZWQsIHVzZSBleGl0RnVsbFNjcmVlbiBpbnN0ZWFkLlxuICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBmdWxsU2NyZWVuRXZlbnROYW1lIEV2ZW50IGZpcmVkIHdoZW4gdGhlIGZ1bGwgc2NyZWVuIG1vZGUgY2hhbmdlLlxuICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBmdWxsU2NyZWVuRXJyb3JFdmVudE5hbWUgRXZlbnQgZmlyZWQgd2hlbiBhIHJlcXVlc3QgdG8gZ29cbiAgICAgKiBpbiBmdWxsIHNjcmVlbiBtb2RlIGZhaWxlZC5cbiAgICAgKi9cbiAgICB2YXIgZnVsbFNjcmVlbkFwaSA9IHtcbiAgICAgICAgc3VwcG9ydHNGdWxsU2NyZWVuOiBmYWxzZSxcbiAgICAgICAgaXNGdWxsU2NyZWVuOiBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgICBnZXRGdWxsU2NyZWVuRWxlbWVudDogZnVuY3Rpb24oKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZXF1ZXN0RnVsbFNjcmVlbjogZnVuY3Rpb24oKSB7fSxcbiAgICAgICAgZXhpdEZ1bGxTY3JlZW46IGZ1bmN0aW9uKCkge30sXG4gICAgICAgIGNhbmNlbEZ1bGxTY3JlZW46IGZ1bmN0aW9uKCkge30sXG4gICAgICAgIGZ1bGxTY3JlZW5FdmVudE5hbWU6ICcnLFxuICAgICAgICBmdWxsU2NyZWVuRXJyb3JFdmVudE5hbWU6ICcnXG4gICAgfTtcblxuICAgIC8vIGNoZWNrIGZvciBuYXRpdmUgc3VwcG9ydFxuICAgIGlmICggZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4gKSB7XG4gICAgICAgIC8vIFczQyBzdGFuZGFyZFxuICAgICAgICBmdWxsU2NyZWVuQXBpLnN1cHBvcnRzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZ2V0RnVsbFNjcmVlbkVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudDtcbiAgICAgICAgfTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5yZXF1ZXN0RnVsbFNjcmVlbiA9IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5leGl0RnVsbFNjcmVlbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5mdWxsU2NyZWVuRXZlbnROYW1lID0gXCJmdWxsc2NyZWVuY2hhbmdlXCI7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZnVsbFNjcmVlbkVycm9yRXZlbnROYW1lID0gXCJmdWxsc2NyZWVuZXJyb3JcIjtcbiAgICB9IGVsc2UgaWYgKCBkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVuICkge1xuICAgICAgICAvLyBJRSAxMVxuICAgICAgICBmdWxsU2NyZWVuQXBpLnN1cHBvcnRzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZ2V0RnVsbFNjcmVlbkVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50O1xuICAgICAgICB9O1xuICAgICAgICBmdWxsU2NyZWVuQXBpLnJlcXVlc3RGdWxsU2NyZWVuID0gZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZXhpdEZ1bGxTY3JlZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGRvY3VtZW50Lm1zRXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5mdWxsU2NyZWVuRXZlbnROYW1lID0gXCJNU0Z1bGxzY3JlZW5DaGFuZ2VcIjtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5mdWxsU2NyZWVuRXJyb3JFdmVudE5hbWUgPSBcIk1TRnVsbHNjcmVlbkVycm9yXCI7XG4gICAgfSBlbHNlIGlmICggZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4gKSB7XG4gICAgICAgIC8vIFJlY2VudCB3ZWJraXRcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5zdXBwb3J0c0Z1bGxTY3JlZW4gPSB0cnVlO1xuICAgICAgICBmdWxsU2NyZWVuQXBpLmdldEZ1bGxTY3JlZW5FbGVtZW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQ7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkucmVxdWVzdEZ1bGxTY3JlZW4gPSBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZXhpdEZ1bGxTY3JlZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZnVsbFNjcmVlbkV2ZW50TmFtZSA9IFwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiO1xuICAgICAgICBmdWxsU2NyZWVuQXBpLmZ1bGxTY3JlZW5FcnJvckV2ZW50TmFtZSA9IFwid2Via2l0ZnVsbHNjcmVlbmVycm9yXCI7XG4gICAgfSBlbHNlIGlmICggZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbiApIHtcbiAgICAgICAgLy8gT2xkIHdlYmtpdFxuICAgICAgICBmdWxsU2NyZWVuQXBpLnN1cHBvcnRzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZ2V0RnVsbFNjcmVlbkVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkucmVxdWVzdEZ1bGxTY3JlZW4gPSBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZXhpdEZ1bGxTY3JlZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5mdWxsU2NyZWVuRXZlbnROYW1lID0gXCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlXCI7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZnVsbFNjcmVlbkVycm9yRXZlbnROYW1lID0gXCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3JcIjtcbiAgICB9IGVsc2UgaWYgKCBkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuICkge1xuICAgICAgICAvLyBGaXJlZm94XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuc3VwcG9ydHNGdWxsU2NyZWVuID0gdHJ1ZTtcbiAgICAgICAgZnVsbFNjcmVlbkFwaS5nZXRGdWxsU2NyZWVuRWxlbWVudCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50O1xuICAgICAgICB9O1xuICAgICAgICBmdWxsU2NyZWVuQXBpLnJlcXVlc3RGdWxsU2NyZWVuID0gZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICB9O1xuICAgICAgICBmdWxsU2NyZWVuQXBpLmV4aXRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVuKCk7XG4gICAgICAgIH07XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZnVsbFNjcmVlbkV2ZW50TmFtZSA9IFwibW96ZnVsbHNjcmVlbmNoYW5nZVwiO1xuICAgICAgICBmdWxsU2NyZWVuQXBpLmZ1bGxTY3JlZW5FcnJvckV2ZW50TmFtZSA9IFwibW96ZnVsbHNjcmVlbmVycm9yXCI7XG4gICAgfVxuICAgIGZ1bGxTY3JlZW5BcGkuaXNGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmdWxsU2NyZWVuQXBpLmdldEZ1bGxTY3JlZW5FbGVtZW50KCkgIT09IG51bGw7XG4gICAgfTtcbiAgICBmdWxsU2NyZWVuQXBpLmNhbmNlbEZ1bGxTY3JlZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiY2FuY2VsRnVsbFNjcmVlbiBpcyBkZXByZWNhdGVkLiBVc2UgZXhpdEZ1bGxTY3JlZW4gaW5zdGVhZC5cIik7XG4gICAgICAgIGZ1bGxTY3JlZW5BcGkuZXhpdEZ1bGxTY3JlZW4oKTtcbiAgICB9O1xuXG4gICAgLy8gZXhwb3J0IGFwaVxuICAgICQuZXh0ZW5kKCAkLCBmdWxsU2NyZWVuQXBpICk7XG5cbn0pKCBPcGVuU2VhZHJhZ29uICk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gRXZlbnRTb3VyY2VcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCQpe1xuXG4vKipcbiAqIEV2ZW50IGhhbmRsZXIgbWV0aG9kIHNpZ25hdHVyZSB1c2VkIGJ5IGFsbCBPcGVuU2VhZHJhZ29uIGV2ZW50cy5cbiAqXG4gKiBAY2FsbGJhY2sgRXZlbnRIYW5kbGVyXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQHBhcmFtIHtPYmplY3R9IGV2ZW50IC0gU2VlIGluZGl2aWR1YWwgZXZlbnRzIGZvciBldmVudC1zcGVjaWZpYyBwcm9wZXJ0aWVzLlxuICovXG5cblxuLyoqXG4gKiBAY2xhc3MgRXZlbnRTb3VyY2VcbiAqIEBjbGFzc2Rlc2MgRm9yIHVzZSBieSBjbGFzc2VzIHdoaWNoIHdhbnQgdG8gc3VwcG9ydCBjdXN0b20sIG5vbi1icm93c2VyIGV2ZW50cy5cbiAqXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICovXG4kLkV2ZW50U291cmNlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5ldmVudHMgPSB7fTtcbn07XG5cbi8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5FdmVudFNvdXJjZS5wcm90b3R5cGUgKi9cbiQuRXZlbnRTb3VyY2UucHJvdG90eXBlID0ge1xuXG4gICAgLyoqXG4gICAgICogQWRkIGFuIGV2ZW50IGhhbmRsZXIgdG8gYmUgdHJpZ2dlcmVkIG9ubHkgb25jZSAob3IgYSBnaXZlbiBudW1iZXIgb2YgdGltZXMpXG4gICAgICogZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50TmFtZSAtIE5hbWUgb2YgZXZlbnQgdG8gcmVnaXN0ZXIuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gaGFuZGxlciAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBldmVudFxuICAgICAqIGlzIHRyaWdnZXJlZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3VzZXJEYXRhPW51bGxdIC0gQXJiaXRyYXJ5IG9iamVjdCB0byBiZSBwYXNzZWQgdW5jaGFuZ2VkXG4gICAgICogdG8gdGhlIGhhbmRsZXIuXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFt0aW1lcz0xXSAtIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaGFuZGxlIHRoZSBldmVudFxuICAgICAqIGJlZm9yZSByZW1vdmluZyBpdC5cbiAgICAgKi9cbiAgICBhZGRPbmNlSGFuZGxlcjogZnVuY3Rpb24oZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VyRGF0YSwgdGltZXMpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB0aW1lcyA9IHRpbWVzIHx8IDE7XG4gICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgIHZhciBvbmNlSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgaWYgKGNvdW50ID09PSB0aW1lcykge1xuICAgICAgICAgICAgICAgIHNlbGYucmVtb3ZlSGFuZGxlcihldmVudE5hbWUsIG9uY2VIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhbmRsZXIoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZEhhbmRsZXIoZXZlbnROYW1lLCBvbmNlSGFuZGxlciwgdXNlckRhdGEpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZGQgYW4gZXZlbnQgaGFuZGxlciBmb3IgYSBnaXZlbiBldmVudC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lIC0gTmFtZSBvZiBldmVudCB0byByZWdpc3Rlci5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBoYW5kbGVyIC0gRnVuY3Rpb24gdG8gY2FsbCB3aGVuIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3VzZXJEYXRhPW51bGxdIC0gQXJiaXRyYXJ5IG9iamVjdCB0byBiZSBwYXNzZWQgdW5jaGFuZ2VkIHRvIHRoZSBoYW5kbGVyLlxuICAgICAqL1xuICAgIGFkZEhhbmRsZXI6IGZ1bmN0aW9uICggZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VyRGF0YSApIHtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzWyBldmVudE5hbWUgXTtcbiAgICAgICAgaWYgKCAhZXZlbnRzICkge1xuICAgICAgICAgICAgdGhpcy5ldmVudHNbIGV2ZW50TmFtZSBdID0gZXZlbnRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBoYW5kbGVyICYmICQuaXNGdW5jdGlvbiggaGFuZGxlciApICkge1xuICAgICAgICAgICAgZXZlbnRzWyBldmVudHMubGVuZ3RoIF0gPSB7IGhhbmRsZXI6IGhhbmRsZXIsIHVzZXJEYXRhOiB1c2VyRGF0YSB8fCBudWxsIH07XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGEgc3BlY2lmaWMgZXZlbnQgaGFuZGxlciBmb3IgYSBnaXZlbiBldmVudC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lIC0gTmFtZSBvZiBldmVudCBmb3Igd2hpY2ggdGhlIGhhbmRsZXIgaXMgdG8gYmUgcmVtb3ZlZC5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBoYW5kbGVyIC0gRnVuY3Rpb24gdG8gYmUgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICByZW1vdmVIYW5kbGVyOiBmdW5jdGlvbiAoIGV2ZW50TmFtZSwgaGFuZGxlciApIHtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzWyBldmVudE5hbWUgXSxcbiAgICAgICAgICAgIGhhbmRsZXJzID0gW10sXG4gICAgICAgICAgICBpO1xuICAgICAgICBpZiAoICFldmVudHMgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAkLmlzQXJyYXkoIGV2ZW50cyApICkge1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBldmVudHNbaV0uaGFuZGxlciAhPT0gaGFuZGxlciApIHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaCggZXZlbnRzWyBpIF0gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV2ZW50c1sgZXZlbnROYW1lIF0gPSBoYW5kbGVycztcbiAgICAgICAgfVxuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhbGwgZXZlbnQgaGFuZGxlcnMgZm9yIGEgZ2l2ZW4gZXZlbnQgdHlwZS4gSWYgbm8gdHlwZSBpcyBnaXZlbiBhbGxcbiAgICAgKiBldmVudCBoYW5kbGVycyBmb3IgZXZlcnkgZXZlbnQgdHlwZSBhcmUgcmVtb3ZlZC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnROYW1lIC0gTmFtZSBvZiBldmVudCBmb3Igd2hpY2ggYWxsIGhhbmRsZXJzIGFyZSB0byBiZSByZW1vdmVkLlxuICAgICAqL1xuICAgIHJlbW92ZUFsbEhhbmRsZXJzOiBmdW5jdGlvbiggZXZlbnROYW1lICkge1xuICAgICAgICBpZiAoIGV2ZW50TmFtZSApe1xuICAgICAgICAgICAgdGhpcy5ldmVudHNbIGV2ZW50TmFtZSBdID0gW107XG4gICAgICAgIH0gZWxzZXtcbiAgICAgICAgICAgIGZvciAoIHZhciBldmVudFR5cGUgaW4gdGhpcy5ldmVudHMgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudHNbIGV2ZW50VHlwZSBdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgZnVuY3Rpb24gd2hpY2ggaXRlcmF0ZXMgdGhlIGxpc3Qgb2YgYWxsIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gZXZlbnQsIGNhbGxpbmcgdGhlIGhhbmRsZXIgZm9yIGVhY2guXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50TmFtZSAtIE5hbWUgb2YgZXZlbnQgdG8gZ2V0IGhhbmRsZXJzIGZvci5cbiAgICAgKi9cbiAgICBnZXRIYW5kbGVyOiBmdW5jdGlvbiAoIGV2ZW50TmFtZSApIHtcbiAgICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzWyBldmVudE5hbWUgXTtcbiAgICAgICAgaWYgKCAhZXZlbnRzIHx8ICFldmVudHMubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnRzID0gZXZlbnRzLmxlbmd0aCA9PT0gMSA/XG4gICAgICAgICAgICBbIGV2ZW50c1sgMCBdIF0gOlxuICAgICAgICAgICAgQXJyYXkuYXBwbHkoIG51bGwsIGV2ZW50cyApO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCBzb3VyY2UsIGFyZ3MgKSB7XG4gICAgICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBldmVudHMubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGV2ZW50c1sgaSBdICkge1xuICAgICAgICAgICAgICAgICAgICBhcmdzLmV2ZW50U291cmNlID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICBhcmdzLnVzZXJEYXRhID0gZXZlbnRzWyBpIF0udXNlckRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50c1sgaSBdLmhhbmRsZXIoIGFyZ3MgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgYW4gZXZlbnQsIG9wdGlvbmFsbHkgcGFzc2luZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudE5hbWUgLSBOYW1lIG9mIGV2ZW50IHRvIHJlZ2lzdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudEFyZ3MgLSBFdmVudC1zcGVjaWZpYyBkYXRhLlxuICAgICAqL1xuICAgIHJhaXNlRXZlbnQ6IGZ1bmN0aW9uKCBldmVudE5hbWUsIGV2ZW50QXJncyApIHtcbiAgICAgICAgLy91bmNvbW1lbnQgaWYgeW91IHdhbnQgdG8gZ2V0IGEgbG9nIG9mIGFsbCBldmVudHNcbiAgICAgICAgLy8kLmNvbnNvbGUubG9nKCBldmVudE5hbWUgKTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLmdldEhhbmRsZXIoIGV2ZW50TmFtZSApO1xuXG4gICAgICAgIGlmICggaGFuZGxlciApIHtcbiAgICAgICAgICAgIGlmICggIWV2ZW50QXJncyApIHtcbiAgICAgICAgICAgICAgICBldmVudEFyZ3MgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFuZGxlciggdGhpcywgZXZlbnRBcmdzICk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIE1vdXNlVHJhY2tlclxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4oZnVuY3Rpb24gKCAkICkge1xuXG4gICAgLy8gQWxsIE1vdXNlVHJhY2tlciBpbnN0YW5jZXNcbiAgICB2YXIgTU9VU0VUUkFDS0VSUyAgPSBbXTtcblxuICAgIC8vIGRpY3Rpb25hcnkgZnJvbSBoYXNoIHRvIHByaXZhdGUgcHJvcGVydGllc1xuICAgIHZhciBUSElTICAgICAgICAgICA9IHt9O1xuXG5cbiAgICAvKipcbiAgICAgKiBAY2xhc3MgTW91c2VUcmFja2VyXG4gICAgICogQGNsYXNzZGVzYyBQcm92aWRlcyBzaW1wbGlmaWVkIGhhbmRsaW5nIG9mIGNvbW1vbiBwb2ludGVyIGRldmljZSAobW91c2UsIHRvdWNoLCBwZW4sIGV0Yy4pIGdlc3R1cmVzXG4gICAgICogICAgICAgICAgICBhbmQga2V5Ym9hcmQgZXZlbnRzIG9uIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqICAgICAgQWxsb3dzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIHRvIGJlIGVudGlyZWx5IHNwZWNpZmllZCBieSBwYXNzaW5nXG4gICAgICogICAgICBhbiBvcHRpb25zIG9iamVjdCB0byB0aGUgY29uc3RydWN0b3IuICBUaGUgY29uc3RydWN0b3IgYWxzbyBzdXBwb3J0c1xuICAgICAqICAgICAgdGhlIG9yaWdpbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzICdlbGVtZW50JywgJ2NsaWNrVGltZVRocmVzaG9sZCcsXG4gICAgICogICAgICBhbmQgJ2NsaWNrRGlzdFRocmVzaG9sZCcgaW4gdGhhdCBvcmRlci5cbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR8U3RyaW5nfSBvcHRpb25zLmVsZW1lbnRcbiAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIGFuIGVsZW1lbnQgb3IgYW4gZWxlbWVudCBpZCBmb3Igd2hpY2ggdGhlIHBvaW50ZXIva2V5XG4gICAgICogICAgICBldmVudHMgd2lsbCBiZSBtb25pdG9yZWQuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5zdGFydERpc2FibGVkPWZhbHNlXVxuICAgICAqICAgICAgSWYgdHJ1ZSwgZXZlbnQgdHJhY2tpbmcgb24gdGhlIGVsZW1lbnQgd2lsbCBub3Qgc3RhcnQgdW50aWxcbiAgICAgKiAgICAgIHtAbGluayBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5zZXRUcmFja2luZ3xzZXRUcmFja2luZ30gaXMgY2FsbGVkLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLmNsaWNrVGltZVRocmVzaG9sZFxuICAgICAqICAgICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgd2l0aGluIHdoaWNoIGEgcG9pbnRlciBkb3duLXVwIGV2ZW50IGNvbWJpbmF0aW9uXG4gICAgICogICAgICB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBjbGljayBnZXN0dXJlLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLmNsaWNrRGlzdFRocmVzaG9sZFxuICAgICAqICAgICAgVGhlIG1heGltdW0gZGlzdGFuY2UgYWxsb3dlZCBiZXR3ZWVuIGEgcG9pbnRlciBkb3duIGV2ZW50IGFuZCBhIHBvaW50ZXIgdXAgZXZlbnRcbiAgICAgKiAgICAgIHRvIGJlIHRyZWF0ZWQgYXMgYSBjbGljayBnZXN0dXJlLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBvcHRpb25zLmRibENsaWNrVGltZVRocmVzaG9sZFxuICAgICAqICAgICAgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgd2l0aGluIHdoaWNoIHR3byBwb2ludGVyIGRvd24tdXAgZXZlbnQgY29tYmluYXRpb25zXG4gICAgICogICAgICB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBkb3VibGUtY2xpY2sgZ2VzdHVyZS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gb3B0aW9ucy5kYmxDbGlja0Rpc3RUaHJlc2hvbGRcbiAgICAgKiAgICAgIFRoZSBtYXhpbXVtIGRpc3RhbmNlIGFsbG93ZWQgYmV0d2VlbiB0d28gcG9pbnRlciBjbGljayBldmVudHNcbiAgICAgKiAgICAgIHRvIGJlIHRyZWF0ZWQgYXMgYSBjbGljayBnZXN0dXJlLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5zdG9wRGVsYXk9NTBdXG4gICAgICogICAgICBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3aXRob3V0IHBvaW50ZXIgbW92ZSBiZWZvcmUgdGhlIHN0b3BcbiAgICAgKiAgICAgIGV2ZW50IGlzIGZpcmVkLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLmVudGVySGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciBlbnRlci5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5leGl0SGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciBleGl0LlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLnByZXNzSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciBwcmVzcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5ub25QcmltYXJ5UHJlc3NIYW5kbGVyPW51bGxdXG4gICAgICogICAgICBBbiBvcHRpb25hbCBoYW5kbGVyIGZvciBwb2ludGVyIG5vbi1wcmltYXJ5IGJ1dHRvbiBwcmVzcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5yZWxlYXNlSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciByZWxlYXNlLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLm5vblByaW1hcnlSZWxlYXNlSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciBub24tcHJpbWFyeSBidXR0b24gcmVsZWFzZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5tb3ZlSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgcG9pbnRlciBtb3ZlLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLnNjcm9sbEhhbmRsZXI9bnVsbF1cbiAgICAgKiAgICAgIEFuIG9wdGlvbmFsIGhhbmRsZXIgZm9yIG1vdXNlIHdoZWVsIHNjcm9sbC5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5jbGlja0hhbmRsZXI9bnVsbF1cbiAgICAgKiAgICAgIEFuIG9wdGlvbmFsIGhhbmRsZXIgZm9yIHBvaW50ZXIgY2xpY2suXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gW29wdGlvbnMuZGJsQ2xpY2tIYW5kbGVyPW51bGxdXG4gICAgICogICAgICBBbiBvcHRpb25hbCBoYW5kbGVyIGZvciBwb2ludGVyIGRvdWJsZS1jbGljay5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5kcmFnSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgdGhlIGRyYWcgZ2VzdHVyZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5kcmFnRW5kSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgYWZ0ZXIgYSBkcmFnIGdlc3R1cmUuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gW29wdGlvbnMucGluY2hIYW5kbGVyPW51bGxdXG4gICAgICogICAgICBBbiBvcHRpb25hbCBoYW5kbGVyIGZvciB0aGUgcGluY2ggZ2VzdHVyZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5rZXlEb3duSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3Iga2V5ZG93bi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5rZXlVcEhhbmRsZXI9bnVsbF1cbiAgICAgKiAgICAgIEFuIG9wdGlvbmFsIGhhbmRsZXIgZm9yIGtleXVwLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLmtleUhhbmRsZXI9bnVsbF1cbiAgICAgKiAgICAgIEFuIG9wdGlvbmFsIGhhbmRsZXIgZm9yIGtleXByZXNzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLmZvY3VzSGFuZGxlcj1udWxsXVxuICAgICAqICAgICAgQW4gb3B0aW9uYWwgaGFuZGxlciBmb3IgZm9jdXMuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gW29wdGlvbnMuYmx1ckhhbmRsZXI9bnVsbF1cbiAgICAgKiAgICAgIEFuIG9wdGlvbmFsIGhhbmRsZXIgZm9yIGJsdXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLnVzZXJEYXRhPW51bGxdXG4gICAgICogICAgICBBcmJpdHJhcnkgb2JqZWN0IHRvIGJlIHBhc3NlZCB1bmNoYW5nZWQgdG8gYW55IGF0dGFjaGVkIGhhbmRsZXIgbWV0aG9kcy5cbiAgICAgKi9cbiAgICAkLk1vdXNlVHJhY2tlciA9IGZ1bmN0aW9uICggb3B0aW9ucyApIHtcblxuICAgICAgICBNT1VTRVRSQUNLRVJTLnB1c2goIHRoaXMgKTtcblxuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICAgICAgICBpZiAoICEkLmlzUGxhaW5PYmplY3QoIG9wdGlvbnMgKSApIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogICAgICAgICAgICBhcmdzWyAwIF0sXG4gICAgICAgICAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiBhcmdzWyAxIF0sXG4gICAgICAgICAgICAgICAgY2xpY2tEaXN0VGhyZXNob2xkOiBhcmdzWyAyIF1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhc2ggICAgICAgICAgICAgICA9IE1hdGgucmFuZG9tKCk7IC8vIEFuIHVuaXF1ZSBoYXNoIGZvciB0aGlzIHRyYWNrZXIuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZWxlbWVudCBmb3Igd2hpY2ggcG9pbnRlciBldmVudHMgYXJlIGJlaW5nIG1vbml0b3JlZC5cbiAgICAgICAgICogQG1lbWJlciB7RWxlbWVudH0gZWxlbWVudFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIjXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmVsZW1lbnQgICAgICAgICAgICA9ICQuZ2V0RWxlbWVudCggb3B0aW9ucy5lbGVtZW50ICk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3aXRoaW4gd2hpY2ggYSBwb2ludGVyIGRvd24tdXAgZXZlbnQgY29tYmluYXRpb25cbiAgICAgICAgICogd2lsbCBiZSB0cmVhdGVkIGFzIGEgY2xpY2sgZ2VzdHVyZS5cbiAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBjbGlja1RpbWVUaHJlc2hvbGRcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jbGlja1RpbWVUaHJlc2hvbGQgPSBvcHRpb25zLmNsaWNrVGltZVRocmVzaG9sZCB8fCAkLkRFRkFVTFRfU0VUVElOR1MuY2xpY2tUaW1lVGhyZXNob2xkO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG1heGltdW0gZGlzdGFuY2UgYWxsb3dlZCBiZXR3ZWVuIGEgcG9pbnRlciBkb3duIGV2ZW50IGFuZCBhIHBvaW50ZXIgdXAgZXZlbnRcbiAgICAgICAgICogdG8gYmUgdHJlYXRlZCBhcyBhIGNsaWNrIGdlc3R1cmUuXG4gICAgICAgICAqIEBtZW1iZXIge051bWJlcn0gY2xpY2tEaXN0VGhyZXNob2xkXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlciNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkID0gb3B0aW9ucy5jbGlja0Rpc3RUaHJlc2hvbGQgfHwgJC5ERUZBVUxUX1NFVFRJTkdTLmNsaWNrRGlzdFRocmVzaG9sZDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHdpdGhpbiB3aGljaCB0d28gcG9pbnRlciBkb3duLXVwIGV2ZW50IGNvbWJpbmF0aW9uc1xuICAgICAgICAgKiB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBkb3VibGUtY2xpY2sgZ2VzdHVyZS5cbiAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBkYmxDbGlja1RpbWVUaHJlc2hvbGRcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kYmxDbGlja1RpbWVUaHJlc2hvbGQgPSBvcHRpb25zLmRibENsaWNrVGltZVRocmVzaG9sZCB8fCAkLkRFRkFVTFRfU0VUVElOR1MuZGJsQ2xpY2tUaW1lVGhyZXNob2xkO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIG1heGltdW0gZGlzdGFuY2UgYWxsb3dlZCBiZXR3ZWVuIHR3byBwb2ludGVyIGNsaWNrIGV2ZW50c1xuICAgICAgICAgKiB0byBiZSB0cmVhdGVkIGFzIGEgY2xpY2sgZ2VzdHVyZS5cbiAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBjbGlja0Rpc3RUaHJlc2hvbGRcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kYmxDbGlja0Rpc3RUaHJlc2hvbGQgPSBvcHRpb25zLmRibENsaWNrRGlzdFRocmVzaG9sZCB8fCAkLkRFRkFVTFRfU0VUVElOR1MuZGJsQ2xpY2tEaXN0VGhyZXNob2xkO1xuICAgICAgICB0aGlzLnVzZXJEYXRhICAgICAgICAgICAgICA9IG9wdGlvbnMudXNlckRhdGEgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wRGVsYXkgICAgICAgICAgICAgPSBvcHRpb25zLnN0b3BEZWxheSAgICAgICAgIHx8IDUwO1xuXG4gICAgICAgIHRoaXMuZW50ZXJIYW5kbGVyICAgICAgICAgICAgID0gb3B0aW9ucy5lbnRlckhhbmRsZXIgICAgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5leGl0SGFuZGxlciAgICAgICAgICAgICAgPSBvcHRpb25zLmV4aXRIYW5kbGVyICAgICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLnByZXNzSGFuZGxlciAgICAgICAgICAgICA9IG9wdGlvbnMucHJlc3NIYW5kbGVyICAgICAgICAgICAgIHx8IG51bGw7XG4gICAgICAgIHRoaXMubm9uUHJpbWFyeVByZXNzSGFuZGxlciAgID0gb3B0aW9ucy5ub25QcmltYXJ5UHJlc3NIYW5kbGVyICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5yZWxlYXNlSGFuZGxlciAgICAgICAgICAgPSBvcHRpb25zLnJlbGVhc2VIYW5kbGVyICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLm5vblByaW1hcnlSZWxlYXNlSGFuZGxlciA9IG9wdGlvbnMubm9uUHJpbWFyeVJlbGVhc2VIYW5kbGVyIHx8IG51bGw7XG4gICAgICAgIHRoaXMubW92ZUhhbmRsZXIgICAgICAgICAgICAgID0gb3B0aW9ucy5tb3ZlSGFuZGxlciAgICAgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyICAgICAgICAgICAgPSBvcHRpb25zLnNjcm9sbEhhbmRsZXIgICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLmNsaWNrSGFuZGxlciAgICAgICAgICAgICA9IG9wdGlvbnMuY2xpY2tIYW5kbGVyICAgICAgICAgICAgIHx8IG51bGw7XG4gICAgICAgIHRoaXMuZGJsQ2xpY2tIYW5kbGVyICAgICAgICAgID0gb3B0aW9ucy5kYmxDbGlja0hhbmRsZXIgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5kcmFnSGFuZGxlciAgICAgICAgICAgICAgPSBvcHRpb25zLmRyYWdIYW5kbGVyICAgICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLmRyYWdFbmRIYW5kbGVyICAgICAgICAgICA9IG9wdGlvbnMuZHJhZ0VuZEhhbmRsZXIgICAgICAgICAgIHx8IG51bGw7XG4gICAgICAgIHRoaXMucGluY2hIYW5kbGVyICAgICAgICAgICAgID0gb3B0aW9ucy5waW5jaEhhbmRsZXIgICAgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wSGFuZGxlciAgICAgICAgICAgICAgPSBvcHRpb25zLnN0b3BIYW5kbGVyICAgICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLmtleURvd25IYW5kbGVyICAgICAgICAgICA9IG9wdGlvbnMua2V5RG93bkhhbmRsZXIgICAgICAgICAgIHx8IG51bGw7XG4gICAgICAgIHRoaXMua2V5VXBIYW5kbGVyICAgICAgICAgICAgID0gb3B0aW9ucy5rZXlVcEhhbmRsZXIgICAgICAgICAgICAgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5rZXlIYW5kbGVyICAgICAgICAgICAgICAgPSBvcHRpb25zLmtleUhhbmRsZXIgICAgICAgICAgICAgICB8fCBudWxsO1xuICAgICAgICB0aGlzLmZvY3VzSGFuZGxlciAgICAgICAgICAgICA9IG9wdGlvbnMuZm9jdXNIYW5kbGVyICAgICAgICAgICAgIHx8IG51bGw7XG4gICAgICAgIHRoaXMuYmx1ckhhbmRsZXIgICAgICAgICAgICAgID0gb3B0aW9ucy5ibHVySGFuZGxlciAgICAgICAgICAgICAgfHwgbnVsbDtcblxuICAgICAgICAvL1N0b3JlIHByaXZhdGUgcHJvcGVydGllcyBpbiBhIHNjb3BlIHNlYWxlZCBoYXNoIG1hcFxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IHRyYWNraW5nXG4gICAgICAgICAqICAgICAgQXJlIHdlIGN1cnJlbnRseSB0cmFja2luZyBwb2ludGVyIGV2ZW50cyBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0gPSB7XG4gICAgICAgICAgICBjbGljazogICAgICAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uQ2xpY2soIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgZGJsY2xpY2s6ICAgICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbkRibENsaWNrKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIGtleWRvd246ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25LZXlEb3duKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIGtleXVwOiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25LZXlVcCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBrZXlwcmVzczogICAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uS2V5UHJlc3MoIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgZm9jdXM6ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbkZvY3VzKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIGJsdXI6ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25CbHVyKCBfdGhpcywgZXZlbnQgKTsgfSxcblxuICAgICAgICAgICAgd2hlZWw6ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbldoZWVsKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIG1vdXNld2hlZWw6ICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZVdoZWVsKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIERPTU1vdXNlU2Nyb2xsOiAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZVdoZWVsKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIE1vek1vdXNlUGl4ZWxTY3JvbGw6ICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZVdoZWVsKCBfdGhpcywgZXZlbnQgKTsgfSxcblxuICAgICAgICAgICAgbW91c2VlbnRlcjogICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbk1vdXNlRW50ZXIoIF90aGlzLCBldmVudCApOyB9LCAvLyBVc2VkIG9uIElFOCBvbmx5XG4gICAgICAgICAgICBtb3VzZWxlYXZlOiAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uTW91c2VMZWF2ZSggX3RoaXMsIGV2ZW50ICk7IH0sIC8vIFVzZWQgb24gSUU4IG9ubHlcbiAgICAgICAgICAgIG1vdXNlb3ZlcjogICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZU92ZXIoIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgbW91c2VvdXQ6ICAgICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbk1vdXNlT3V0KCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIG1vdXNlZG93bjogICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZURvd24oIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgbW91c2V1cDogICAgICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbk1vdXNlVXAoIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgbW91c2V1cGNhcHR1cmVkOiAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvbk1vdXNlVXBDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBtb3VzZW1vdmU6ICAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uTW91c2VNb3ZlKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIG1vdXNlbW92ZWNhcHR1cmVkOiAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Nb3VzZU1vdmVDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG5cbiAgICAgICAgICAgIHRvdWNoc3RhcnQ6ICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Ub3VjaFN0YXJ0KCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIHRvdWNoZW5kOiAgICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Ub3VjaEVuZCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICB0b3VjaGVuZGNhcHR1cmVkOiAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uVG91Y2hFbmRDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICB0b3VjaG1vdmU6ICAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uVG91Y2hNb3ZlKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIHRvdWNobW92ZWNhcHR1cmVkOiAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Ub3VjaE1vdmVDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICB0b3VjaGNhbmNlbDogICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uVG91Y2hDYW5jZWwoIF90aGlzLCBldmVudCApOyB9LFxuXG4gICAgICAgICAgICBnZXN0dXJlc3RhcnQ6ICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uR2VzdHVyZVN0YXJ0KCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIGdlc3R1cmVjaGFuZ2U6ICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25HZXN0dXJlQ2hhbmdlKCBfdGhpcywgZXZlbnQgKTsgfSxcblxuICAgICAgICAgICAgcG9pbnRlcm92ZXI6ICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvblBvaW50ZXJPdmVyKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIE1TUG9pbnRlck92ZXI6ICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Qb2ludGVyT3ZlciggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBwb2ludGVyb3V0OiAgICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uUG9pbnRlck91dCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBNU1BvaW50ZXJPdXQ6ICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uUG9pbnRlck91dCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBwb2ludGVyZG93bjogICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uUG9pbnRlckRvd24oIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgTVNQb2ludGVyRG93bjogICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvblBvaW50ZXJEb3duKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIHBvaW50ZXJ1cDogICAgICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Qb2ludGVyVXAoIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgTVNQb2ludGVyVXA6ICAgICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvblBvaW50ZXJVcCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBwb2ludGVybW92ZTogICAgICAgICAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uUG9pbnRlck1vdmUoIF90aGlzLCBldmVudCApOyB9LFxuICAgICAgICAgICAgTVNQb2ludGVyTW92ZTogICAgICAgICBmdW5jdGlvbiAoIGV2ZW50ICkgeyBvblBvaW50ZXJNb3ZlKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIHBvaW50ZXJjYW5jZWw6ICAgICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Qb2ludGVyQ2FuY2VsKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIE1TUG9pbnRlckNhbmNlbDogICAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Qb2ludGVyQ2FuY2VsKCBfdGhpcywgZXZlbnQgKTsgfSxcbiAgICAgICAgICAgIHBvaW50ZXJ1cGNhcHR1cmVkOiAgICAgZnVuY3Rpb24gKCBldmVudCApIHsgb25Qb2ludGVyVXBDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG4gICAgICAgICAgICBwb2ludGVybW92ZWNhcHR1cmVkOiAgIGZ1bmN0aW9uICggZXZlbnQgKSB7IG9uUG9pbnRlck1vdmVDYXB0dXJlZCggX3RoaXMsIGV2ZW50ICk7IH0sXG5cbiAgICAgICAgICAgIHRyYWNraW5nOiAgICAgICAgICAgICAgZmFsc2UsXG5cbiAgICAgICAgICAgIC8vIEFjdGl2ZSBwb2ludGVycyBsaXN0cy4gQXJyYXkgb2YgR2VzdHVyZVBvaW50TGlzdCBvYmplY3RzLCBvbmUgZm9yIGVhY2ggcG9pbnRlciBkZXZpY2UgdHlwZS5cbiAgICAgICAgICAgIC8vIEdlc3R1cmVQb2ludExpc3Qgb2JqZWN0cyBhcmUgYWRkZWQgZWFjaCB0aW1lIGEgcG9pbnRlciBpcyB0cmFja2VkIGJ5IGEgbmV3IHBvaW50ZXIgZGV2aWNlIHR5cGUgKHNlZSBnZXRBY3RpdmVQb2ludGVyc0xpc3RCeVR5cGUoKSkuXG4gICAgICAgICAgICAvLyBBY3RpdmUgcG9pbnRlcnMgYXJlIGFueSBwb2ludGVyIGJlaW5nIHRyYWNrZWQgZm9yIHRoaXMgZWxlbWVudCB3aGljaCBhcmUgaW4gdGhlIGhpdC10ZXN0IGFyZWFcbiAgICAgICAgICAgIC8vICAgICBvZiB0aGUgZWxlbWVudCAoZm9yIGhvdmVyLWNhcGFibGUgZGV2aWNlcykgYW5kL29yIGhhdmUgY29udGFjdCBvciBhIGJ1dHRvbiBwcmVzcyBpbml0aWF0ZWQgaW4gdGhlIGVsZW1lbnQuXG4gICAgICAgICAgICBhY3RpdmVQb2ludGVyc0xpc3RzOiAgIFtdLFxuXG4gICAgICAgICAgICAvLyBUcmFja2luZyBmb3IgZG91YmxlLWNsaWNrIGdlc3R1cmVcbiAgICAgICAgICAgIGxhc3RDbGlja1BvczogICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGRibENsaWNrVGltZU91dDogICAgICAgbnVsbCxcblxuICAgICAgICAgICAgLy8gVHJhY2tpbmcgZm9yIHBpbmNoIGdlc3R1cmVcbiAgICAgICAgICAgIHBpbmNoR1BvaW50czogICAgICAgICAgW10sXG4gICAgICAgICAgICBsYXN0UGluY2hEaXN0OiAgICAgICAgIDAsXG4gICAgICAgICAgICBjdXJyZW50UGluY2hEaXN0OiAgICAgIDAsXG4gICAgICAgICAgICBsYXN0UGluY2hDZW50ZXI6ICAgICAgIG51bGwsXG4gICAgICAgICAgICBjdXJyZW50UGluY2hDZW50ZXI6ICAgIG51bGxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoICFvcHRpb25zLnN0YXJ0RGlzYWJsZWQgKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRyYWNraW5nKCB0cnVlICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5wcm90b3R5cGUgKi9cbiAgICAkLk1vdXNlVHJhY2tlci5wcm90b3R5cGUgPSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENsZWFuIHVwIGFueSBldmVudHMgb3Igb2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSB0cmFja2VyLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICovXG4gICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpO1xuXG4gICAgICAgICAgICBzdG9wVHJhY2tpbmcoIHRoaXMgKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG5cbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTU9VU0VUUkFDS0VSUy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIE1PVVNFVFJBQ0tFUlNbIGkgXSA9PT0gdGhpcyApIHtcbiAgICAgICAgICAgICAgICAgICAgTU9VU0VUUkFDS0VSUy5zcGxpY2UoIGksIDEgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBUSElTWyB0aGlzLmhhc2ggXSA9IG51bGw7XG4gICAgICAgICAgICBkZWxldGUgVEhJU1sgdGhpcy5oYXNoIF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFyZSB3ZSBjdXJyZW50bHkgdHJhY2tpbmcgZXZlbnRzIG9uIHRoaXMgZWxlbWVudC5cbiAgICAgICAgICogQGRlcHJlY2F0ZWQgSnVzdCB1c2UgdGhpcy50cmFja2luZ1xuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHJldHVybnMge0Jvb2xlYW59IEFyZSB3ZSBjdXJyZW50bHkgdHJhY2tpbmcgZXZlbnRzIG9uIHRoaXMgZWxlbWVudC5cbiAgICAgICAgICovXG4gICAgICAgIGlzVHJhY2tpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBUSElTWyB0aGlzLmhhc2ggXS50cmFja2luZztcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5hYmxlIG9yIGRpc2FibGUgd2hldGhlciBvciBub3Qgd2UgYXJlIHRyYWNraW5nIGV2ZW50cyBvbiB0aGlzIGVsZW1lbnQuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHRyYWNrIFRydWUgdG8gc3RhcnQgdHJhY2tpbmcsIGZhbHNlIHRvIHN0b3AgdHJhY2tpbmcuXG4gICAgICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gQ2hhaW5hYmxlLlxuICAgICAgICAgKi9cbiAgICAgICAgc2V0VHJhY2tpbmc6IGZ1bmN0aW9uICggdHJhY2sgKSB7XG4gICAgICAgICAgICBpZiAoIHRyYWNrICkge1xuICAgICAgICAgICAgICAgIHN0YXJ0VHJhY2tpbmcoIHRoaXMgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RvcFRyYWNraW5nKCB0aGlzICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL2NoYWluXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUge0BsaW5rIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludExpc3R8R2VzdHVyZVBvaW50TGlzdH0gZm9yIHRoZSBnaXZlbiBwb2ludGVyIGRldmljZSB0eXBlLFxuICAgICAgICAgKiBjcmVhdGluZyBhbmQgY2FjaGluZyBhIG5ldyB7QGxpbmsgT3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdHxHZXN0dXJlUG9pbnRMaXN0fSBpZiBvbmUgZG9lc24ndCBhbHJlYWR5IGV4aXN0IGZvciB0aGUgdHlwZS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gVGhlIHBvaW50ZXIgZGV2aWNlIHR5cGU6IFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnRMaXN0fVxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0QWN0aXZlUG9pbnRlcnNMaXN0QnlUeXBlOiBmdW5jdGlvbiAoIHR5cGUgKSB7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBUSElTWyB0aGlzLmhhc2ggXSxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIGxlbiA9IGRlbGVnYXRlLmFjdGl2ZVBvaW50ZXJzTGlzdHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGxpc3Q7XG5cbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxlZ2F0ZS5hY3RpdmVQb2ludGVyc0xpc3RzWyBpIF0udHlwZSA9PT0gdHlwZSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmFjdGl2ZVBvaW50ZXJzTGlzdHNbIGkgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxpc3QgPSBuZXcgJC5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdCggdHlwZSApO1xuICAgICAgICAgICAgZGVsZWdhdGUuYWN0aXZlUG9pbnRlcnNMaXN0cy5wdXNoKCBsaXN0ICk7XG4gICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIHBvaW50ZXJzIGN1cnJlbnRseSBhY3RpdmUgb24gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICBnZXRBY3RpdmVQb2ludGVyQ291bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRoaXMuaGFzaCBdLFxuICAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICAgbGVuID0gZGVsZWdhdGUuYWN0aXZlUG9pbnRlcnNMaXN0cy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgY291bnQgPSAwO1xuXG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IGRlbGVnYXRlLmFjdGl2ZVBvaW50ZXJzTGlzdHNbIGkgXS5nZXRMZW5ndGgoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBsZW1lbnQgb3IgYXNzaWduIGltcGxlbWVudGF0aW9uIHRvIHRoZXNlIGhhbmRsZXJzIGR1cmluZyBvciBhZnRlclxuICAgICAgICAgKiBjYWxsaW5nIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSBldmVudC5ldmVudFNvdXJjZVxuICAgICAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSB0cmFja2VyIGluc3RhbmNlLlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQucG9pbnRlclR5cGVcbiAgICAgICAgICogICAgIFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZXZlbnQucG9zaXRpb25cbiAgICAgICAgICogICAgICBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5idXR0b25zXG4gICAgICAgICAqICAgICAgQ3VycmVudCBidXR0b25zIHByZXNzZWQuXG4gICAgICAgICAqICAgICAgQ29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LnBvaW50ZXJzXG4gICAgICAgICAqICAgICAgTnVtYmVyIG9mIHBvaW50ZXJzIChhbGwgdHlwZXMpIGFjdGl2ZSBpbiB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkXG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgbGVmdCBtb3VzZSBidXR0b24gaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQgYW5kIHdhc1xuICAgICAgICAgKiAgICAgIGluaXRpYXRlZCBpbnNpZGUgdGhlIHRyYWNrZWQgZWxlbWVudCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmJ1dHRvbkRvd25BbnlcbiAgICAgICAgICogICAgICBXYXMgdGhlIGJ1dHRvbiBkb3duIGFueXdoZXJlIGluIHRoZSBzY3JlZW4gZHVyaW5nIHRoZSBldmVudC4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIGJ1dHRvbnMgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGVudGVySGFuZGxlcjogZnVuY3Rpb24gKCkgeyB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBsZW1lbnQgb3IgYXNzaWduIGltcGxlbWVudGF0aW9uIHRvIHRoZXNlIGhhbmRsZXJzIGR1cmluZyBvciBhZnRlclxuICAgICAgICAgKiBjYWxsaW5nIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSBldmVudC5ldmVudFNvdXJjZVxuICAgICAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSB0cmFja2VyIGluc3RhbmNlLlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQucG9pbnRlclR5cGVcbiAgICAgICAgICogICAgIFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZXZlbnQucG9zaXRpb25cbiAgICAgICAgICogICAgICBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5idXR0b25zXG4gICAgICAgICAqICAgICAgQ3VycmVudCBidXR0b25zIHByZXNzZWQuXG4gICAgICAgICAqICAgICAgQ29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LnBvaW50ZXJzXG4gICAgICAgICAqICAgICAgTnVtYmVyIG9mIHBvaW50ZXJzIChhbGwgdHlwZXMpIGFjdGl2ZSBpbiB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkXG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgbGVmdCBtb3VzZSBidXR0b24gaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQgYW5kIHdhc1xuICAgICAgICAgKiAgICAgIGluaXRpYXRlZCBpbnNpZGUgdGhlIHRyYWNrZWQgZWxlbWVudCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmJ1dHRvbkRvd25BbnlcbiAgICAgICAgICogICAgICBXYXMgdGhlIGJ1dHRvbiBkb3duIGFueXdoZXJlIGluIHRoZSBzY3JlZW4gZHVyaW5nIHRoZSBldmVudC4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIGJ1dHRvbnMgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGV4aXRIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5wb3NpdGlvblxuICAgICAgICAgKiAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LmJ1dHRvbnNcbiAgICAgICAgICogICAgICBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZC5cbiAgICAgICAgICogICAgICBDb21iaW5hdGlvbiBvZiBiaXQgZmxhZ3MgMDogbm9uZSwgMTogcHJpbWFyeSAob3IgdG91Y2ggY29udGFjdCksIDI6IHNlY29uZGFyeSwgNDogYXV4IChvZnRlbiBtaWRkbGUpLCA4OiBYMSAob2Z0ZW4gYmFjayksIDE2OiBYMiAob2Z0ZW4gZm9yd2FyZCksIDMyOiBwZW4gZXJhc2VyLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmlzVG91Y2hFdmVudFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIG9yaWdpbmFsIGV2ZW50IGlzIGEgdG91Y2ggZXZlbnQsIG90aGVyd2lzZSBmYWxzZS4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIHBvaW50ZXJUeXBlIGFuZC9vciBvcmlnaW5hbEV2ZW50IGluc3RlYWQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBwcmVzc0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuYnV0dG9uXG4gICAgICAgICAqICAgICAgQnV0dG9uIHdoaWNoIGNhdXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqICAgICAgLTE6IG5vbmUsIDA6IHByaW1hcnkvbGVmdCwgMTogYXV4L21pZGRsZSwgMjogc2Vjb25kYXJ5L3JpZ2h0LCAzOiBYMS9iYWNrLCA0OiBYMi9mb3J3YXJkLCA1OiBwZW4gZXJhc2VyLlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuYnV0dG9uc1xuICAgICAgICAgKiAgICAgIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLlxuICAgICAgICAgKiAgICAgIENvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIG5vblByaW1hcnlQcmVzc0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuYnV0dG9uc1xuICAgICAgICAgKiAgICAgIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLlxuICAgICAgICAgKiAgICAgIENvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaW5zaWRlRWxlbWVudFByZXNzZWRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpcyBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZCBhbmQgd2FzXG4gICAgICAgICAqICAgICAgaW5pdGlhdGVkIGluc2lkZSB0aGUgdHJhY2tlZCBlbGVtZW50LCBvdGhlcndpc2UgZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaW5zaWRlRWxlbWVudFJlbGVhc2VkXG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgY3Vyc29yIGluc2lkZSB0aGUgdHJhY2tlZCBlbGVtZW50IHdoZW4gdGhlIGJ1dHRvbiB3YXMgcmVsZWFzZWQuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHJlbGVhc2VIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5wb3NpdGlvblxuICAgICAgICAgKiAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LmJ1dHRvblxuICAgICAgICAgKiAgICAgIEJ1dHRvbiB3aGljaCBjYXVzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgKiAgICAgIC0xOiBub25lLCAwOiBwcmltYXJ5L2xlZnQsIDE6IGF1eC9taWRkbGUsIDI6IHNlY29uZGFyeS9yaWdodCwgMzogWDEvYmFjaywgNDogWDIvZm9yd2FyZCwgNTogcGVuIGVyYXNlci5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LmJ1dHRvbnNcbiAgICAgICAgICogICAgICBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZC5cbiAgICAgICAgICogICAgICBDb21iaW5hdGlvbiBvZiBiaXQgZmxhZ3MgMDogbm9uZSwgMTogcHJpbWFyeSAob3IgdG91Y2ggY29udGFjdCksIDI6IHNlY29uZGFyeSwgNDogYXV4IChvZnRlbiBtaWRkbGUpLCA4OiBYMSAob2Z0ZW4gYmFjayksIDE2OiBYMiAob2Z0ZW4gZm9yd2FyZCksIDMyOiBwZW4gZXJhc2VyLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmlzVG91Y2hFdmVudFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIG9yaWdpbmFsIGV2ZW50IGlzIGEgdG91Y2ggZXZlbnQsIG90aGVyd2lzZSBmYWxzZS4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIHBvaW50ZXJUeXBlIGFuZC9vciBvcmlnaW5hbEV2ZW50IGluc3RlYWQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBub25QcmltYXJ5UmVsZWFzZUhhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuYnV0dG9uc1xuICAgICAgICAgKiAgICAgIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLlxuICAgICAgICAgKiAgICAgIENvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIG1vdmVIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5wb3NpdGlvblxuICAgICAgICAgKiAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LnNjcm9sbFxuICAgICAgICAgKiAgICAgIFRoZSBzY3JvbGwgZGVsdGEgZm9yIHRoZSBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5zaGlmdFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5pc1RvdWNoRXZlbnRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBvcmlnaW5hbCBldmVudCBpcyBhIHRvdWNoIGV2ZW50LCBvdGhlcndpc2UgZmFsc2UuIDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkO1wiPkRlcHJlY2F0ZWQuIFVzZSBwb2ludGVyVHlwZSBhbmQvb3Igb3JpZ2luYWxFdmVudCBpbnN0ZWFkLiBUb3VjaCBkZXZpY2VzIG5vIGxvbmdlciBnZW5lcmF0ZSBzY3JvbGwgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBzY3JvbGxIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5wb3NpdGlvblxuICAgICAgICAgKiAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5xdWlja1xuICAgICAgICAgKiAgICAgIFRydWUgb25seSBpZiB0aGUgY2xpY2tEaXN0VGhyZXNob2xkIGFuZCBjbGlja1RpbWVUaHJlc2hvbGQgYXJlIGJvdGggcGFzc2VkLiBVc2VmdWwgZm9yIGlnbm9yaW5nIGRyYWcgZXZlbnRzLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnNoaWZ0XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmlzVG91Y2hFdmVudFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIG9yaWdpbmFsIGV2ZW50IGlzIGEgdG91Y2ggZXZlbnQsIG90aGVyd2lzZSBmYWxzZS4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIHBvaW50ZXJUeXBlIGFuZC9vciBvcmlnaW5hbEV2ZW50IGluc3RlYWQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBjbGlja0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnNoaWZ0XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmlzVG91Y2hFdmVudFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIG9yaWdpbmFsIGV2ZW50IGlzIGEgdG91Y2ggZXZlbnQsIG90aGVyd2lzZSBmYWxzZS4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIHBvaW50ZXJUeXBlIGFuZC9vciBvcmlnaW5hbEV2ZW50IGluc3RlYWQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBkYmxDbGlja0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuYnV0dG9uc1xuICAgICAgICAgKiAgICAgIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLlxuICAgICAgICAgKiAgICAgIENvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZXZlbnQuZGVsdGFcbiAgICAgICAgICogICAgICBUaGUgeCx5IGNvbXBvbmVudHMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VycmVudCBwb3NpdGlvbiBhbmQgdGhlIGxhc3QgZHJhZyBldmVudCBwb3NpdGlvbi4gIFVzZWZ1bCBmb3IgaWdub3Jpbmcgb3Igd2VpZ2h0aW5nIHRoZSBldmVudHMuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5zcGVlZFxuICAgICAgICAgKiAgICAgQ3VycmVudCBjb21wdXRlZCBzcGVlZCwgaW4gcGl4ZWxzIHBlciBzZWNvbmQuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5kaXJlY3Rpb25cbiAgICAgICAgICogICAgIEN1cnJlbnQgY29tcHV0ZWQgZGlyZWN0aW9uLCBleHByZXNzZWQgYXMgYW4gYW5nbGUgY291bnRlcmNsb2Nrd2lzZSByZWxhdGl2ZSB0byB0aGUgcG9zaXRpdmUgWCBheGlzICgtcGkgdG8gcGksIGluIHJhZGlhbnMpLiBPbmx5IHZhbGlkIGlmIHNwZWVkID4gMC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5zaGlmdFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5pc1RvdWNoRXZlbnRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBvcmlnaW5hbCBldmVudCBpcyBhIHRvdWNoIGV2ZW50LCBvdGhlcndpc2UgZmFsc2UuIDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkO1wiPkRlcHJlY2F0ZWQuIFVzZSBwb2ludGVyVHlwZSBhbmQvb3Igb3JpZ2luYWxFdmVudCBpbnN0ZWFkLjwvc3Bhbj5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICAgICAgICogICAgICBUaGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uXG4gICAgICAgICAqICAgICAgU2V0IHRvIHRydWUgdG8gcHJldmVudCB0aGUgdHJhY2tlciBzdWJzY3JpYmVyIGZyb20gcGVyZm9ybWluZyBpdHMgZGVmYXVsdCBhY3Rpb24gKHN1YnNjcmliZXIgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC51c2VyRGF0YVxuICAgICAgICAgKiAgICAgIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgZHJhZ0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50LnBvaW50ZXJUeXBlXG4gICAgICAgICAqICAgICBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGV2ZW50LnBvc2l0aW9uXG4gICAgICAgICAqICAgICAgVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuc3BlZWRcbiAgICAgICAgICogICAgIFNwZWVkIGF0IHRoZSBlbmQgb2YgYSBkcmFnIGdlc3R1cmUsIGluIHBpeGVscyBwZXIgc2Vjb25kLlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQuZGlyZWN0aW9uXG4gICAgICAgICAqICAgICBEaXJlY3Rpb24gYXQgdGhlIGVuZCBvZiBhIGRyYWcgZ2VzdHVyZSwgZXhwcmVzc2VkIGFzIGFuIGFuZ2xlIGNvdW50ZXJjbG9ja3dpc2UgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aXZlIFggYXhpcyAoLXBpIHRvIHBpLCBpbiByYWRpYW5zKS4gT25seSB2YWxpZCBpZiBzcGVlZCA+IDAuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuc2hpZnRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBzaGlmdCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuaXNUb3VjaEV2ZW50XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgZXZlbnQgaXMgYSB0b3VjaCBldmVudCwgb3RoZXJ3aXNlIGZhbHNlLiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgcG9pbnRlclR5cGUgYW5kL29yIG9yaWdpbmFsRXZlbnQgaW5zdGVhZC48L3NwYW4+XG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGRyYWdFbmRIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtBcnJheS48T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50Pn0gZXZlbnQuZ2VzdHVyZVBvaW50c1xuICAgICAgICAgKiAgICAgIEdlc3R1cmUgcG9pbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2VzdHVyZS4gVmVsb2NpdHkgZGF0YSBjYW4gYmUgZm91bmQgaGVyZS5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5sYXN0Q2VudGVyXG4gICAgICAgICAqICAgICAgVGhlIHByZXZpb3VzIGNlbnRlciBwb2ludCBvZiB0aGUgdHdvIHBpbmNoIGNvbnRhY3QgcG9pbnRzIHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZXZlbnQuY2VudGVyXG4gICAgICAgICAqICAgICAgVGhlIGNlbnRlciBwb2ludCBvZiB0aGUgdHdvIHBpbmNoIGNvbnRhY3QgcG9pbnRzIHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5sYXN0RGlzdGFuY2VcbiAgICAgICAgICogICAgICBUaGUgcHJldmlvdXMgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHBpbmNoIGNvbnRhY3QgcG9pbnRzIGluIENTUyBwaXhlbHMuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBldmVudC5kaXN0YW5jZVxuICAgICAgICAgKiAgICAgIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0d28gcGluY2ggY29udGFjdCBwb2ludHMgaW4gQ1NTIHBpeGVscy5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5zaGlmdFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICAgICAgICogICAgICBUaGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uXG4gICAgICAgICAqICAgICAgU2V0IHRvIHRydWUgdG8gcHJldmVudCB0aGUgdHJhY2tlciBzdWJzY3JpYmVyIGZyb20gcGVyZm9ybWluZyBpdHMgZGVmYXVsdCBhY3Rpb24gKHN1YnNjcmliZXIgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC51c2VyRGF0YVxuICAgICAgICAgKiAgICAgIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgcGluY2hIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGxlbWVudCBvciBhc3NpZ24gaW1wbGVtZW50YXRpb24gdG8gdGhlc2UgaGFuZGxlcnMgZHVyaW5nIG9yIGFmdGVyXG4gICAgICAgICAqIGNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IGV2ZW50LmV2ZW50U291cmNlXG4gICAgICAgICAqICAgICAgQSByZWZlcmVuY2UgdG8gdGhlIHRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBldmVudC5wb2ludGVyVHlwZVxuICAgICAgICAgKiAgICAgXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBldmVudC5wb3NpdGlvblxuICAgICAgICAgKiAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LmJ1dHRvbnNcbiAgICAgICAgICogICAgICBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZC5cbiAgICAgICAgICogICAgICBDb21iaW5hdGlvbiBvZiBiaXQgZmxhZ3MgMDogbm9uZSwgMTogcHJpbWFyeSAob3IgdG91Y2ggY29udGFjdCksIDI6IHNlY29uZGFyeSwgNDogYXV4IChvZnRlbiBtaWRkbGUpLCA4OiBYMSAob2Z0ZW4gYmFjayksIDE2OiBYMiAob2Z0ZW4gZm9yd2FyZCksIDMyOiBwZW4gZXJhc2VyLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmlzVG91Y2hFdmVudFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIG9yaWdpbmFsIGV2ZW50IGlzIGEgdG91Y2ggZXZlbnQsIG90aGVyd2lzZSBmYWxzZS4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIHBvaW50ZXJUeXBlIGFuZC9vciBvcmlnaW5hbEV2ZW50IGluc3RlYWQuPC9zcGFuPlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBzdG9wSGFuZGxlcjogZnVuY3Rpb24gKCkgeyB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBsZW1lbnQgb3IgYXNzaWduIGltcGxlbWVudGF0aW9uIHRvIHRoZXNlIGhhbmRsZXJzIGR1cmluZyBvciBhZnRlclxuICAgICAgICAgKiBjYWxsaW5nIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSBldmVudC5ldmVudFNvdXJjZVxuICAgICAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSB0cmFja2VyIGluc3RhbmNlLlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQua2V5Q29kZVxuICAgICAgICAgKiAgICAgIFRoZSBrZXkgY29kZSB0aGF0IHdhcyBwcmVzc2VkLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmN0cmxcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBjdHJsIGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5zaGlmdFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5hbHRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBhbHQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50Lm1ldGFcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBtZXRhIGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICAgICAgICogICAgICBUaGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uXG4gICAgICAgICAqICAgICAgU2V0IHRvIHRydWUgdG8gcHJldmVudCB0aGUgdHJhY2tlciBzdWJzY3JpYmVyIGZyb20gcGVyZm9ybWluZyBpdHMgZGVmYXVsdCBhY3Rpb24gKHN1YnNjcmliZXIgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC51c2VyRGF0YVxuICAgICAgICAgKiAgICAgIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5RG93bkhhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGV2ZW50LmtleUNvZGVcbiAgICAgICAgICogICAgICBUaGUga2V5IGNvZGUgdGhhdCB3YXMgcHJlc3NlZC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5jdHJsXG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgY3RybCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuc2hpZnRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBzaGlmdCBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQuYWx0XG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgYWx0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5tZXRhXG4gICAgICAgICAqICAgICAgVHJ1ZSBpZiB0aGUgbWV0YSBrZXkgd2FzIHByZXNzZWQgZHVyaW5nIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgICAgICAqICAgICAgVGhlIG9yaWdpbmFsIGV2ZW50IG9iamVjdC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvblxuICAgICAgICAgKiAgICAgIFNldCB0byB0cnVlIHRvIHByZXZlbnQgdGhlIHRyYWNrZXIgc3Vic2NyaWJlciBmcm9tIHBlcmZvcm1pbmcgaXRzIGRlZmF1bHQgYWN0aW9uIChzdWJzY3JpYmVyIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudCkuIERlZmF1bHQ6IGZhbHNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQudXNlckRhdGFcbiAgICAgICAgICogICAgICBBcmJpdHJhcnkgdXNlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIGtleVVwSGFuZGxlcjogZnVuY3Rpb24gKCkgeyB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBsZW1lbnQgb3IgYXNzaWduIGltcGxlbWVudGF0aW9uIHRvIHRoZXNlIGhhbmRsZXJzIGR1cmluZyBvciBhZnRlclxuICAgICAgICAgKiBjYWxsaW5nIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSBldmVudC5ldmVudFNvdXJjZVxuICAgICAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSB0cmFja2VyIGluc3RhbmNlLlxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gZXZlbnQua2V5Q29kZVxuICAgICAgICAgKiAgICAgIFRoZSBrZXkgY29kZSB0aGF0IHdhcyBwcmVzc2VkLlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LmN0cmxcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBjdHJsIGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5zaGlmdFxuICAgICAgICAgKiAgICAgIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBldmVudC5hbHRcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBhbHQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50Lm1ldGFcbiAgICAgICAgICogICAgICBUcnVlIGlmIHRoZSBtZXRhIGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICAgICAgICogICAgICBUaGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uXG4gICAgICAgICAqICAgICAgU2V0IHRvIHRydWUgdG8gcHJldmVudCB0aGUgdHJhY2tlciBzdWJzY3JpYmVyIGZyb20gcGVyZm9ybWluZyBpdHMgZGVmYXVsdCBhY3Rpb24gKHN1YnNjcmliZXIgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC51c2VyRGF0YVxuICAgICAgICAgKiAgICAgIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAga2V5SGFuZGxlcjogZnVuY3Rpb24gKCkgeyB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBsZW1lbnQgb3IgYXNzaWduIGltcGxlbWVudGF0aW9uIHRvIHRoZXNlIGhhbmRsZXJzIGR1cmluZyBvciBhZnRlclxuICAgICAgICAgKiBjYWxsaW5nIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSBldmVudC5ldmVudFNvdXJjZVxuICAgICAgICAgKiAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSB0cmFja2VyIGluc3RhbmNlLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICAgKiAgICAgIFRoZSBvcmlnaW5hbCBldmVudCBvYmplY3QuXG4gICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb25cbiAgICAgICAgICogICAgICBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IHRoZSB0cmFja2VyIHN1YnNjcmliZXIgZnJvbSBwZXJmb3JtaW5nIGl0cyBkZWZhdWx0IGFjdGlvbiAoc3Vic2NyaWJlciBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQpLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50LnVzZXJEYXRhXG4gICAgICAgICAqICAgICAgQXJiaXRyYXJ5IHVzZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICBmb2N1c0hhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW1wbGVtZW50IG9yIGFzc2lnbiBpbXBsZW1lbnRhdGlvbiB0byB0aGVzZSBoYW5kbGVycyBkdXJpbmcgb3IgYWZ0ZXJcbiAgICAgICAgICogY2FsbGluZyB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gZXZlbnQuZXZlbnRTb3VyY2VcbiAgICAgICAgICogICAgICBBIHJlZmVyZW5jZSB0byB0aGUgdHJhY2tlciBpbnN0YW5jZS5cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICAgICAgICogICAgICBUaGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0LlxuICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uXG4gICAgICAgICAqICAgICAgU2V0IHRvIHRydWUgdG8gcHJldmVudCB0aGUgdHJhY2tlciBzdWJzY3JpYmVyIGZyb20gcGVyZm9ybWluZyBpdHMgZGVmYXVsdCBhY3Rpb24gKHN1YnNjcmliZXIgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudC51c2VyRGF0YVxuICAgICAgICAgKiAgICAgIEFyYml0cmFyeSB1c2VyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgYmx1ckhhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfVxuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGNvbnRpbnVvdXMgY29tcHV0YXRpb24gb2YgdmVsb2NpdHkgKHNwZWVkIGFuZCBkaXJlY3Rpb24pIG9mIGFjdGl2ZSBwb2ludGVycy5cbiAgICAgKiBUaGlzIGlzIGEgc2luZ2xldG9uLCB1c2VkIGJ5IGFsbCBNb3VzZVRyYWNrZXIgaW5zdGFuY2VzLCBhcyBpdCBpcyB1bmxpa2VseSB0aGVyZSB3aWxsIGV2ZXIgYmUgbW9yZSB0aGFuXG4gICAgICogdHdvIGFjdGl2ZSBnZXN0dXJlIHBvaW50ZXJzIGF0IGEgdGltZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG1lbWJlciBnZXN0dXJlUG9pbnRWZWxvY2l0eVRyYWNrZXJcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJcbiAgICAgKi9cbiAgICAkLk1vdXNlVHJhY2tlci5nZXN0dXJlUG9pbnRWZWxvY2l0eVRyYWNrZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdHJhY2tlclBvaW50cyA9IFtdLFxuICAgICAgICAgICAgaW50ZXJ2YWxJZCA9IDAsXG4gICAgICAgICAgICBsYXN0VGltZSA9IDA7XG5cbiAgICAgICAgLy8gR2VuZXJhdGVzIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgdHJhY2tlZCBnZXN0dXJlIHBvaW50XG4gICAgICAgIHZhciBfZ2VuZXJhdGVHdWlkID0gZnVuY3Rpb24gKCB0cmFja2VyLCBnUG9pbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhY2tlci5oYXNoLnRvU3RyaW5nKCkgKyBnUG9pbnQudHlwZSArIGdQb2ludC5pZC50b1N0cmluZygpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEludGVydmFsIHRpbWVyIGNhbGxiYWNrLiBDb21wdXRlcyB2ZWxvY2l0eSBmb3IgYWxsIHRyYWNrZWQgZ2VzdHVyZSBwb2ludHMuXG4gICAgICAgIHZhciBfZG9UcmFja2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIGxlbiA9IHRyYWNrZXJQb2ludHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIHRyYWNrUG9pbnQsXG4gICAgICAgICAgICAgICAgZ1BvaW50LFxuICAgICAgICAgICAgICAgIG5vdyA9ICQubm93KCksXG4gICAgICAgICAgICAgICAgZWxhcHNlZFRpbWUsXG4gICAgICAgICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgc3BlZWQ7XG5cbiAgICAgICAgICAgIGVsYXBzZWRUaW1lID0gbm93IC0gbGFzdFRpbWU7XG4gICAgICAgICAgICBsYXN0VGltZSA9IG5vdztcblxuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcbiAgICAgICAgICAgICAgICB0cmFja1BvaW50ID0gdHJhY2tlclBvaW50c1sgaSBdO1xuICAgICAgICAgICAgICAgIGdQb2ludCA9IHRyYWNrUG9pbnQuZ1BvaW50O1xuICAgICAgICAgICAgICAgIC8vIE1hdGguYXRhbjIgZ2l2ZXMgdXMganVzdCB3aGF0IHdlIG5lZWQgZm9yIGEgdmVsb2NpdHkgdmVjdG9yLCBhcyB3ZSBjYW4gc2ltcGx5XG4gICAgICAgICAgICAgICAgLy8gICB1c2UgY29zKCkvc2luKCkgdG8gZXh0cmFjdCB0aGUgeC95IHZlbG9jaXR5IGNvbXBvbmVudHMuXG4gICAgICAgICAgICAgICAgZ1BvaW50LmRpcmVjdGlvbiA9IE1hdGguYXRhbjIoIGdQb2ludC5jdXJyZW50UG9zLnkgLSB0cmFja1BvaW50Lmxhc3RQb3MueSwgZ1BvaW50LmN1cnJlbnRQb3MueCAtIHRyYWNrUG9pbnQubGFzdFBvcy54ICk7XG4gICAgICAgICAgICAgICAgLy8gc3BlZWQgPSBkaXN0YW5jZSAvIGVsYXBzZWQgdGltZVxuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gdHJhY2tQb2ludC5sYXN0UG9zLmRpc3RhbmNlVG8oIGdQb2ludC5jdXJyZW50UG9zICk7XG4gICAgICAgICAgICAgICAgdHJhY2tQb2ludC5sYXN0UG9zID0gZ1BvaW50LmN1cnJlbnRQb3M7XG4gICAgICAgICAgICAgICAgc3BlZWQgPSAxMDAwICogZGlzdGFuY2UgLyAoIGVsYXBzZWRUaW1lICsgMSApO1xuICAgICAgICAgICAgICAgIC8vIFNpbXBsZSBiaWFzZWQgYXZlcmFnZSwgZmF2b3JzIHRoZSBtb3N0IHJlY2VudCBzcGVlZCBjb21wdXRhdGlvbi4gU21vb3RocyBvdXQgZXJyYXRpYyBnZXN0dXJlcyBhIGJpdC5cbiAgICAgICAgICAgICAgICBnUG9pbnQuc3BlZWQgPSAwLjc1ICogc3BlZWQgKyAwLjI1ICogZ1BvaW50LnNwZWVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFB1YmxpYy4gQWRkIGEgZ2VzdHVyZSBwb2ludCB0byBiZSB0cmFja2VkXG4gICAgICAgIHZhciBhZGRQb2ludCA9IGZ1bmN0aW9uICggdHJhY2tlciwgZ1BvaW50ICkge1xuICAgICAgICAgICAgdmFyIGd1aWQgPSBfZ2VuZXJhdGVHdWlkKCB0cmFja2VyLCBnUG9pbnQgKTtcblxuICAgICAgICAgICAgdHJhY2tlclBvaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ3VpZDogZ3VpZCxcbiAgICAgICAgICAgICAgICAgICAgZ1BvaW50OiBnUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RQb3M6IGdQb2ludC5jdXJyZW50UG9zXG4gICAgICAgICAgICAgICAgfSApO1xuXG4gICAgICAgICAgICAvLyBPbmx5IGZpcmUgdXAgdGhlIGludGVydmFsIHRpbWVyIHdoZW4gdGhlcmUncyBnZXN0dXJlIHBvaW50ZXJzIHRvIHRyYWNrXG4gICAgICAgICAgICBpZiAoIHRyYWNrZXJQb2ludHMubGVuZ3RoID09PSAxICkge1xuICAgICAgICAgICAgICAgIGxhc3RUaW1lID0gJC5ub3coKTtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCBfZG9UcmFja2luZywgNTAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBQdWJsaWMuIFN0b3AgdHJhY2tpbmcgYSBnZXN0dXJlIHBvaW50XG4gICAgICAgIHZhciByZW1vdmVQb2ludCA9IGZ1bmN0aW9uICggdHJhY2tlciwgZ1BvaW50ICkge1xuICAgICAgICAgICAgdmFyIGd1aWQgPSBfZ2VuZXJhdGVHdWlkKCB0cmFja2VyLCBnUG9pbnQgKSxcbiAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgIGxlbiA9IHRyYWNrZXJQb2ludHMubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHRyYWNrZXJQb2ludHNbIGkgXS5ndWlkID09PSBndWlkICkge1xuICAgICAgICAgICAgICAgICAgICB0cmFja2VyUG9pbnRzLnNwbGljZSggaSwgMSApO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHJ1biB0aGUgaW50ZXJ2YWwgdGltZXIgaWYgdGhlcmVzIGdlc3R1cmUgcG9pbnRlcnMgdG8gdHJhY2tcbiAgICAgICAgICAgICAgICAgICAgbGVuLS07XG4gICAgICAgICAgICAgICAgICAgIGlmICggbGVuID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoIGludGVydmFsSWQgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZFBvaW50OiAgICBhZGRQb2ludCxcbiAgICAgICAgICAgIHJlbW92ZVBvaW50OiByZW1vdmVQb2ludFxuICAgICAgICB9O1xuICAgIH0gKSgpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBvaW50ZXIgZXZlbnQgbW9kZWwgYW5kIGZlYXR1cmUgZGV0ZWN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAkLk1vdXNlVHJhY2tlci5jYXB0dXJlRWxlbWVudCA9IGRvY3VtZW50O1xuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IGF2YWlsYWJsZSBtb3VzZSB3aGVlbCBldmVudCBuYW1lLlxuICAgICAqL1xuICAgICQuTW91c2VUcmFja2VyLndoZWVsRXZlbnROYW1lID0gKCAkLkJyb3dzZXIudmVuZG9yID09ICQuQlJPV1NFUlMuSUUgJiYgJC5Ccm93c2VyLnZlcnNpb24gPiA4ICkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJ29ud2hlZWwnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICkgKSA/ICd3aGVlbCcgOiAvLyBNb2Rlcm4gYnJvd3NlcnMgc3VwcG9ydCAnd2hlZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5vbm1vdXNld2hlZWwgIT09IHVuZGVmaW5lZCA/ICdtb3VzZXdoZWVsJyA6ICAgICAgICAgICAgICAgICAgICAgLy8gV2Via2l0IGFuZCBJRSBzdXBwb3J0IGF0IGxlYXN0ICdtb3VzZXdoZWVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RPTU1vdXNlU2Nyb2xsJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc3VtZSBvbGQgRmlyZWZveFxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IGxlZ2FjeSBtb3VzZSBjYXB0dXJlIHN1cHBvcnQuXG4gICAgICovXG4gICAgJC5Nb3VzZVRyYWNrZXIuc3VwcG9ydHNNb3VzZUNhcHR1cmUgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICdkaXYnICk7XG4gICAgICAgIHJldHVybiAkLmlzRnVuY3Rpb24oIGRpdkVsZW1lbnQuc2V0Q2FwdHVyZSApICYmICQuaXNGdW5jdGlvbiggZGl2RWxlbWVudC5yZWxlYXNlQ2FwdHVyZSApO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgYnJvd3NlciBwb2ludGVyIGRldmljZSBldmVudCBtb2RlbChzKSBhbmQgYnVpbGQgYXBwcm9wcmlhdGUgbGlzdCBvZiBldmVudHMgdG8gc3Vic2NyaWJlIHRvLlxuICAgICAqL1xuICAgICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cyA9IFsgXCJjbGlja1wiLCBcImRibGNsaWNrXCIsIFwia2V5ZG93blwiLCBcImtleXVwXCIsIFwia2V5cHJlc3NcIiwgXCJmb2N1c1wiLCBcImJsdXJcIiwgJC5Nb3VzZVRyYWNrZXIud2hlZWxFdmVudE5hbWUgXTtcblxuICAgIGlmKCAkLk1vdXNlVHJhY2tlci53aGVlbEV2ZW50TmFtZSA9PSBcIkRPTU1vdXNlU2Nyb2xsXCIgKSB7XG4gICAgICAgIC8vIE9sZGVyIEZpcmVmb3hcbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIuc3Vic2NyaWJlRXZlbnRzLnB1c2goIFwiTW96TW91c2VQaXhlbFNjcm9sbFwiICk7XG4gICAgfVxuXG4gICAgLy8gTm90ZTogd2luZG93Lm5hdmlnYXRvci5wb2ludGVyRW5hYmxlIGlzIGRlcHJlY2F0ZWQgb24gSUUgMTEgYW5kIG5vdCBwYXJ0IG9mIFczQyBzcGVjLlxuICAgIGlmICggd2luZG93LlBvaW50ZXJFdmVudCAmJiAoIHdpbmRvdy5uYXZpZ2F0b3IucG9pbnRlckVuYWJsZWQgfHwgJC5Ccm93c2VyLnZlbmRvciAhPT0gJC5CUk9XU0VSUy5JRSApICkge1xuICAgICAgICAvLyBJRTExIGFuZCBvdGhlciBXM0MgUG9pbnRlciBFdmVudCBpbXBsZW1lbnRhdGlvbnMgKHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9wb2ludGVyZXZlbnRzKVxuICAgICAgICAkLk1vdXNlVHJhY2tlci5oYXZlUG9pbnRlckV2ZW50cyA9IHRydWU7XG4gICAgICAgICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5wdXNoKCBcInBvaW50ZXJvdmVyXCIsIFwicG9pbnRlcm91dFwiLCBcInBvaW50ZXJkb3duXCIsIFwicG9pbnRlcnVwXCIsIFwicG9pbnRlcm1vdmVcIiwgXCJwb2ludGVyY2FuY2VsXCIgKTtcbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIudW5wcmVmaXhlZFBvaW50ZXJFdmVudHMgPSB0cnVlO1xuICAgICAgICBpZiggbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzICkge1xuICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIubWF4VG91Y2hQb2ludHMgPSBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5tYXhUb3VjaFBvaW50cyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIuaGF2ZU1vdXNlRW50ZXIgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCB3aW5kb3cuTVNQb2ludGVyRXZlbnQgJiYgd2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkICkge1xuICAgICAgICAvLyBJRTEwXG4gICAgICAgICQuTW91c2VUcmFja2VyLmhhdmVQb2ludGVyRXZlbnRzID0gdHJ1ZTtcbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIuc3Vic2NyaWJlRXZlbnRzLnB1c2goIFwiTVNQb2ludGVyT3ZlclwiLCBcIk1TUG9pbnRlck91dFwiLCBcIk1TUG9pbnRlckRvd25cIiwgXCJNU1BvaW50ZXJVcFwiLCBcIk1TUG9pbnRlck1vdmVcIiwgXCJNU1BvaW50ZXJDYW5jZWxcIiApO1xuICAgICAgICAkLk1vdXNlVHJhY2tlci51bnByZWZpeGVkUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xuICAgICAgICBpZiggbmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgKSB7XG4gICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5tYXhUb3VjaFBvaW50cyA9IG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIubWF4VG91Y2hQb2ludHMgPSAwO1xuICAgICAgICB9XG4gICAgICAgICQuTW91c2VUcmFja2VyLmhhdmVNb3VzZUVudGVyID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTGVnYWN5IFczQyBtb3VzZSBldmVudHNcbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIuaGF2ZVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcbiAgICAgICAgaWYgKCAkLkJyb3dzZXIudmVuZG9yID09PSAkLkJST1dTRVJTLklFICYmICQuQnJvd3Nlci52ZXJzaW9uIDwgOSApIHtcbiAgICAgICAgICAgICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5wdXNoKCBcIm1vdXNlZW50ZXJcIiwgXCJtb3VzZWxlYXZlXCIgKTtcbiAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmhhdmVNb3VzZUVudGVyID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5wdXNoKCBcIm1vdXNlb3ZlclwiLCBcIm1vdXNlb3V0XCIgKTtcbiAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmhhdmVNb3VzZUVudGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIuc3Vic2NyaWJlRXZlbnRzLnB1c2goIFwibW91c2Vkb3duXCIsIFwibW91c2V1cFwiLCBcIm1vdXNlbW92ZVwiICk7XG4gICAgICAgIGlmICggJ29udG91Y2hzdGFydCcgaW4gd2luZG93ICkge1xuICAgICAgICAgICAgLy8gaU9TLCBBbmRyb2lkLCBhbmQgb3RoZXIgVzNjIFRvdWNoIEV2ZW50IGltcGxlbWVudGF0aW9uc1xuICAgICAgICAgICAgLy8gICAgKHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi90b3VjaC1ldmVudHMvKVxuICAgICAgICAgICAgLy8gICAgKHNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9pb3MvZG9jdW1lbnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZlcmVuY2UvU2FmYXJpV2ViQ29udGVudC9IYW5kbGluZ0V2ZW50cy9IYW5kbGluZ0V2ZW50cy5odG1sKVxuICAgICAgICAgICAgLy8gICAgKHNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvZG9jdW1lbnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZlcmVuY2UvU2FmYXJpV2ViQ29udGVudC9IYW5kbGluZ0V2ZW50cy9IYW5kbGluZ0V2ZW50cy5odG1sKVxuICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIuc3Vic2NyaWJlRXZlbnRzLnB1c2goIFwidG91Y2hzdGFydFwiLCBcInRvdWNoZW5kXCIsIFwidG91Y2htb3ZlXCIsIFwidG91Y2hjYW5jZWxcIiApO1xuICAgICAgICB9XG4gICAgICAgIGlmICggJ29uZ2VzdHVyZXN0YXJ0JyBpbiB3aW5kb3cgKSB7XG4gICAgICAgICAgICAvLyBpT1MgKHNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9pb3MvZG9jdW1lbnRhdGlvbi9BcHBsZUFwcGxpY2F0aW9ucy9SZWZlcmVuY2UvU2FmYXJpV2ViQ29udGVudC9IYW5kbGluZ0V2ZW50cy9IYW5kbGluZ0V2ZW50cy5odG1sKVxuICAgICAgICAgICAgLy8gICBTdWJzY3JpYmUgdG8gdGhlc2UgdG8gcHJldmVudCBkZWZhdWx0IGdlc3R1cmUgaGFuZGxpbmdcbiAgICAgICAgICAgICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5wdXNoKCBcImdlc3R1cmVzdGFydFwiLCBcImdlc3R1cmVjaGFuZ2VcIiApO1xuICAgICAgICB9XG4gICAgICAgICQuTW91c2VUcmFja2VyLm1vdXNlUG9pbnRlcklkID0gXCJsZWdhY3ktbW91c2VcIjtcbiAgICAgICAgJC5Nb3VzZVRyYWNrZXIubWF4VG91Y2hQb2ludHMgPSAxMDtcbiAgICB9XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ2xhc3NlcyBhbmQgdHlwZWRlZnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYSBwb2ludCBvZiBjb250YWN0IG9uIHRoZSBzY3JlZW4gbWFkZSBieSBhIG1vdXNlIGN1cnNvciwgcGVuLCB0b3VjaCwgb3Igb3RoZXIgcG9pbnRlciBkZXZpY2UuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXN0dXJlUG9pbnRcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJcbiAgICAgKlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBpZFxuICAgICAqICAgICBJZGVudGlmaWVyIHVuaXF1ZSBmcm9tIGFsbCBvdGhlciBhY3RpdmUgR2VzdHVyZVBvaW50cyBmb3IgYSBnaXZlbiBwb2ludGVyIGRldmljZS5cbiAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gdHlwZVxuICAgICAqICAgICBUaGUgcG9pbnRlciBkZXZpY2UgdHlwZTogXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGNhcHR1cmVkXG4gICAgICogICAgIFRydWUgaWYgZXZlbnRzIGZvciB0aGUgZ2VzdHVyZSBwb2ludCBhcmUgY2FwdHVyZWQgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGlzUHJpbWFyeVxuICAgICAqICAgICBUcnVlIGlmIHRoZSBnZXN0dXJlIHBvaW50IGlzIGEgbWFzdGVyIHBvaW50ZXIgYW1vbmdzdCB0aGUgc2V0IG9mIGFjdGl2ZSBwb2ludGVycyBmb3IgZWFjaCBwb2ludGVyIHR5cGUuIFRydWUgZm9yIG1vdXNlIGFuZCBwcmltYXJ5IChmaXJzdCkgdG91Y2gvcGVuIHBvaW50ZXJzLlxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW5zaWRlRWxlbWVudFByZXNzZWRcbiAgICAgKiAgICAgVHJ1ZSBpZiBidXR0b24gcHJlc3NlZCBvciBjb250YWN0IHBvaW50IGluaXRpYXRlZCBpbnNpZGUgdGhlIHNjcmVlbiBhcmVhIG9mIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBpbnNpZGVFbGVtZW50XG4gICAgICogICAgIFRydWUgaWYgcG9pbnRlciBvciBjb250YWN0IHBvaW50IGlzIGN1cnJlbnRseSBpbnNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzcGVlZFxuICAgICAqICAgICBDdXJyZW50IGNvbXB1dGVkIHNwZWVkLCBpbiBwaXhlbHMgcGVyIHNlY29uZC5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gZGlyZWN0aW9uXG4gICAgICogICAgIEN1cnJlbnQgY29tcHV0ZWQgZGlyZWN0aW9uLCBleHByZXNzZWQgYXMgYW4gYW5nbGUgY291bnRlcmNsb2Nrd2lzZSByZWxhdGl2ZSB0byB0aGUgcG9zaXRpdmUgWCBheGlzICgtcGkgdG8gcGksIGluIHJhZGlhbnMpLiBPbmx5IHZhbGlkIGlmIHNwZWVkID4gMC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IGNvbnRhY3RQb3NcbiAgICAgKiAgICAgVGhlIGluaXRpYWwgcG9pbnRlciBjb250YWN0IHBvc2l0aW9uLCByZWxhdGl2ZSB0byB0aGUgcGFnZSBpbmNsdWRpbmcgYW55IHNjcm9sbGluZy4gT25seSB2YWxpZCBpZiB0aGUgcG9pbnRlciBoYXMgY29udGFjdCAocHJlc3NlZCwgdG91Y2ggY29udGFjdCwgcGVuIGNvbnRhY3QpLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBjb250YWN0VGltZVxuICAgICAqICAgICBUaGUgaW5pdGlhbCBwb2ludGVyIGNvbnRhY3QgdGltZSwgaW4gbWlsbGlzZWNvbmRzLiBPbmx5IHZhbGlkIGlmIHRoZSBwb2ludGVyIGhhcyBjb250YWN0IChwcmVzc2VkLCB0b3VjaCBjb250YWN0LCBwZW4gY29udGFjdCkuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBsYXN0UG9zXG4gICAgICogICAgIFRoZSBsYXN0IHBvaW50ZXIgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBwYWdlIGluY2x1ZGluZyBhbnkgc2Nyb2xsaW5nLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBsYXN0VGltZVxuICAgICAqICAgICBUaGUgbGFzdCBwb2ludGVyIGNvbnRhY3QgdGltZSwgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gY3VycmVudFBvc1xuICAgICAqICAgICBUaGUgY3VycmVudCBwb2ludGVyIHBvc2l0aW9uLCByZWxhdGl2ZSB0byB0aGUgcGFnZSBpbmNsdWRpbmcgYW55IHNjcm9sbGluZy5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gY3VycmVudFRpbWVcbiAgICAgKiAgICAgVGhlIGN1cnJlbnQgcG9pbnRlciBjb250YWN0IHRpbWUsIGluIG1pbGxpc2Vjb25kcy5cbiAgICAgKi9cblxuXG4gICAgLyoqXG4gICAgICogQGNsYXNzIEdlc3R1cmVQb2ludExpc3RcbiAgICAgKiBAY2xhc3NkZXNjIFByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIGZvciBhIHNldCBvZiBhY3RpdmUge0BsaW5rIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludHxHZXN0dXJlUG9pbnR9IG9iamVjdHMgZm9yIGEgZ2l2ZW4gcG9pbnRlciBkZXZpY2UgdHlwZS5cbiAgICAgKiAgICAgICAgICAgIEFjdGl2ZSBwb2ludGVycyBhcmUgYW55IHBvaW50ZXIgYmVpbmcgdHJhY2tlZCBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGFyZSBpbiB0aGUgaGl0LXRlc3QgYXJlYVxuICAgICAqICAgICAgICAgICAgb2YgdGhlIGVsZW1lbnQgKGZvciBob3Zlci1jYXBhYmxlIGRldmljZXMpIGFuZC9vciBoYXZlIGNvbnRhY3Qgb3IgYSBidXR0b24gcHJlc3MgaW5pdGlhdGVkIGluIHRoZSBlbGVtZW50LlxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gVGhlIHBvaW50ZXIgZGV2aWNlIHR5cGU6IFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICovXG4gICAgJC5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdCA9IGZ1bmN0aW9uICggdHlwZSApIHtcbiAgICAgICAgdGhpcy5fZ1BvaW50cyA9IFtdO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHBvaW50ZXIgZGV2aWNlIHR5cGU6IFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gdHlwZVxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdCNcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZCBmb3IgdGhlIGRldmljZS5cbiAgICAgICAgICogQ29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBidXR0b25zXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnRMaXN0I1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5idXR0b25zID0gMDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEN1cnJlbnQgbnVtYmVyIG9mIGNvbnRhY3QgcG9pbnRzICh0b3VjaCBwb2ludHMsIG1vdXNlIGRvd24sIGV0Yy4pIGZvciB0aGUgZGV2aWNlLlxuICAgICAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IGNvbnRhY3RzXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnRMaXN0I1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jb250YWN0cyA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IG51bWJlciBvZiBjbGlja3MgZm9yIHRoZSBkZXZpY2UuIFVzZWQgZm9yIG11bHRpcGxlIGNsaWNrIGdlc3R1cmUgdHJhY2tpbmcuXG4gICAgICAgICAqIEBtZW1iZXIge051bWJlcn0gY2xpY2tzXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnRMaXN0I1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jbGlja3MgPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVudCBudW1iZXIgb2YgY2FwdHVyZWQgcG9pbnRlcnMgZm9yIHRoZSBkZXZpY2UuXG4gICAgICAgICAqIEBtZW1iZXIge051bWJlcn0gY2FwdHVyZUNvdW50XG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnRMaXN0I1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jYXB0dXJlQ291bnQgPSAwO1xuICAgIH07XG5cbiAgICAvKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludExpc3QucHJvdG90eXBlICovXG4gICAgJC5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdC5wcm90b3R5cGUgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHJldHVybnMge051bWJlcn0gTnVtYmVyIG9mIGdlc3R1cmUgcG9pbnRzIGluIHRoZSBsaXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0TGVuZ3RoOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ1BvaW50cy5sZW5ndGg7XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHJldHVybnMge0FycmF5LjxPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnQ+fSBUaGUgbGlzdCBvZiBnZXN0dXJlIHBvaW50cyBpbiB0aGUgbGlzdCBhcyBhbiBhcnJheSAocmVhZC1vbmx5KS5cbiAgICAgICAgICovXG4gICAgICAgIGFzQXJyYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nUG9pbnRzO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50fSBnZXN0dXJlUG9pbnQgLSBBIGdlc3R1cmUgcG9pbnQgdG8gYWRkIHRvIHRoZSBsaXN0LlxuICAgICAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBOdW1iZXIgb2YgZ2VzdHVyZSBwb2ludHMgaW4gdGhlIGxpc3QuXG4gICAgICAgICAqL1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uICggZ3AgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ1BvaW50cy5wdXNoKCBncCApO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBpZCAtIFRoZSBpZCBvZiB0aGUgZ2VzdHVyZSBwb2ludCB0byByZW1vdmUgZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICogQHJldHVybnMge051bWJlcn0gTnVtYmVyIG9mIGdlc3R1cmUgcG9pbnRzIGluIHRoZSBsaXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgcmVtb3ZlQnlJZDogZnVuY3Rpb24gKCBpZCApIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIGxlbiA9IHRoaXMuX2dQb2ludHMubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuX2dQb2ludHNbIGkgXS5pZCA9PT0gaWQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dQb2ludHMuc3BsaWNlKCBpLCAxICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGdlc3R1cmUgcG9pbnQgdG8gcmV0cmlldmUgZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludHxudWxsfSBUaGUgZ2VzdHVyZSBwb2ludCBhdCB0aGUgZ2l2ZW4gaW5kZXgsIG9yIG51bGwgaWYgbm90IGZvdW5kLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0QnlJbmRleDogZnVuY3Rpb24gKCBpbmRleCApIHtcbiAgICAgICAgICAgIGlmICggaW5kZXggPCB0aGlzLl9nUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nUG9pbnRzWyBpbmRleCBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gaWQgLSBUaGUgaWQgb2YgdGhlIGdlc3R1cmUgcG9pbnQgdG8gcmV0cmlldmUgZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludHxudWxsfSBUaGUgZ2VzdHVyZSBwb2ludCB3aXRoIHRoZSBnaXZlbiBpZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXG4gICAgICAgICAqL1xuICAgICAgICBnZXRCeUlkOiBmdW5jdGlvbiAoIGlkICkge1xuICAgICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICAgICAgbGVuID0gdGhpcy5fZ1BvaW50cy5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy5fZ1BvaW50c1sgaSBdLmlkID09PSBpZCApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dQb2ludHNbIGkgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50fG51bGx9IFRoZSBwcmltYXJ5IGdlc3R1cmUgcG9pbnQgaW4gdGhlIGxpc3QsIG9yIG51bGwgaWYgbm90IGZvdW5kLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0UHJpbWFyeTogZnVuY3Rpb24gKCBpZCApIHtcbiAgICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgICAgIGxlbiA9IHRoaXMuX2dQb2ludHMubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuX2dQb2ludHNbIGkgXS5pc1ByaW1hcnkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nUG9pbnRzWyBpIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFV0aWxpdHkgZnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCB0cmFja2VkIHBvaW50ZXJzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xlYXJUcmFja2VkUG9pbnRlcnMoIHRyYWNrZXIgKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRyYWNrZXIuaGFzaCBdLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHBvaW50ZXJMaXN0Q291bnQgPSBkZWxlZ2F0ZS5hY3RpdmVQb2ludGVyc0xpc3RzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHBvaW50ZXJMaXN0Q291bnQ7IGkrKyApIHtcbiAgICAgICAgICAgIGlmICggZGVsZWdhdGUuYWN0aXZlUG9pbnRlcnNMaXN0c1sgaSBdLmNhcHR1cmVDb3VudCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgJC5yZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIuY2FwdHVyZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5tb3VzZW1vdmVjYXB0dXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgJC5yZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIuY2FwdHVyZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICdtb3VzZXVwJyxcbiAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUubW91c2V1cGNhcHR1cmVkLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAkLnJlbW92ZUV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5jYXB0dXJlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIudW5wcmVmaXhlZFBvaW50ZXJFdmVudHMgPyAncG9pbnRlcm1vdmUnIDogJ01TUG9pbnRlck1vdmUnLFxuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5wb2ludGVybW92ZWNhcHR1cmVkLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAkLnJlbW92ZUV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5jYXB0dXJlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIudW5wcmVmaXhlZFBvaW50ZXJFdmVudHMgPyAncG9pbnRlcnVwJyA6ICdNU1BvaW50ZXJVcCcsXG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLnBvaW50ZXJ1cGNhcHR1cmVkLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAkLnJlbW92ZUV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5jYXB0dXJlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNobW92ZScsXG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLnRvdWNobW92ZWNhcHR1cmVkLFxuICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAkLnJlbW92ZUV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5jYXB0dXJlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUudG91Y2hlbmRjYXB0dXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5hY3RpdmVQb2ludGVyc0xpc3RzWyBpIF0uY2FwdHVyZUNvdW50ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcG9pbnRlckxpc3RDb3VudDsgaSsrICkge1xuICAgICAgICAgICAgZGVsZWdhdGUuYWN0aXZlUG9pbnRlcnNMaXN0cy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJ0cyB0cmFja2luZyBwb2ludGVyIGV2ZW50cyBvbiB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRUcmFja2luZyggdHJhY2tlciApIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gVEhJU1sgdHJhY2tlci5oYXNoIF0sXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgaWYgKCAhZGVsZWdhdGUudHJhY2tpbmcgKSB7XG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBldmVudCA9ICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50c1sgaSBdO1xuICAgICAgICAgICAgICAgICQuYWRkRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrZXIuZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlWyBldmVudCBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsZWFyVHJhY2tlZFBvaW50ZXJzKCB0cmFja2VyICk7XG5cbiAgICAgICAgICAgIGRlbGVnYXRlLnRyYWNraW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3BzIHRyYWNraW5nIHBvaW50ZXIgZXZlbnRzIG9uIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdG9wVHJhY2tpbmcoIHRyYWNrZXIgKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRyYWNrZXIuaGFzaCBdLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBpO1xuXG4gICAgICAgIGlmICggZGVsZWdhdGUudHJhY2tpbmcgKSB7XG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50cy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBldmVudCA9ICQuTW91c2VUcmFja2VyLnN1YnNjcmliZUV2ZW50c1sgaSBdO1xuICAgICAgICAgICAgICAgICQucmVtb3ZlRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrZXIuZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlWyBldmVudCBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsZWFyVHJhY2tlZFBvaW50ZXJzKCB0cmFja2VyICk7XG5cbiAgICAgICAgICAgIGRlbGVnYXRlLnRyYWNraW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldENhcHR1cmVFdmVudFBhcmFtcyggdHJhY2tlciwgcG9pbnRlclR5cGUgKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRyYWNrZXIuaGFzaCBdO1xuXG4gICAgICAgIGlmICggcG9pbnRlclR5cGUgPT09ICdwb2ludGVyZXZlbnQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cE5hbWU6ICQuTW91c2VUcmFja2VyLnVucHJlZml4ZWRQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJ1cCcgOiAnTVNQb2ludGVyVXAnLFxuICAgICAgICAgICAgICAgIHVwSGFuZGxlcjogZGVsZWdhdGUucG9pbnRlcnVwY2FwdHVyZWQsXG4gICAgICAgICAgICAgICAgbW92ZU5hbWU6ICQuTW91c2VUcmFja2VyLnVucHJlZml4ZWRQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJtb3ZlJyA6ICdNU1BvaW50ZXJNb3ZlJyxcbiAgICAgICAgICAgICAgICBtb3ZlSGFuZGxlcjogZGVsZWdhdGUucG9pbnRlcm1vdmVjYXB0dXJlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICggcG9pbnRlclR5cGUgPT09ICdtb3VzZScgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHVwTmFtZTogJ21vdXNldXAnLFxuICAgICAgICAgICAgICAgIHVwSGFuZGxlcjogZGVsZWdhdGUubW91c2V1cGNhcHR1cmVkLFxuICAgICAgICAgICAgICAgIG1vdmVOYW1lOiAnbW91c2Vtb3ZlJyxcbiAgICAgICAgICAgICAgICBtb3ZlSGFuZGxlcjogZGVsZWdhdGUubW91c2Vtb3ZlY2FwdHVyZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoIHBvaW50ZXJUeXBlID09PSAndG91Y2gnICkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB1cE5hbWU6ICd0b3VjaGVuZCcsXG4gICAgICAgICAgICAgICAgdXBIYW5kbGVyOiBkZWxlZ2F0ZS50b3VjaGVuZGNhcHR1cmVkLFxuICAgICAgICAgICAgICAgIG1vdmVOYW1lOiAndG91Y2htb3ZlJyxcbiAgICAgICAgICAgICAgICBtb3ZlSGFuZGxlcjogZGVsZWdhdGUudG91Y2htb3ZlY2FwdHVyZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIFwiTW91c2VUcmFja2VyLmdldENhcHR1cmVFdmVudFBhcmFtczogVW5rbm93biBwb2ludGVyIHR5cGUuXCIgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJlZ2luIGNhcHR1cmluZyBwb2ludGVyIGV2ZW50cyB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwdHVyZVBvaW50ZXIoIHRyYWNrZXIsIHBvaW50ZXJUeXBlLCBwb2ludGVyQ291bnQgKSB7XG4gICAgICAgIHZhciBwb2ludHNMaXN0ID0gdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyc0xpc3RCeVR5cGUoIHBvaW50ZXJUeXBlICksXG4gICAgICAgICAgICBldmVudFBhcmFtcztcblxuICAgICAgICBwb2ludHNMaXN0LmNhcHR1cmVDb3VudCArPSAocG9pbnRlckNvdW50IHx8IDEpO1xuXG4gICAgICAgIGlmICggcG9pbnRzTGlzdC5jYXB0dXJlQ291bnQgPT09IDEgKSB7XG4gICAgICAgICAgICBpZiAoICQuQnJvd3Nlci52ZW5kb3IgPT09ICQuQlJPV1NFUlMuSUUgJiYgJC5Ccm93c2VyLnZlcnNpb24gPCA5ICkge1xuICAgICAgICAgICAgICAgIHRyYWNrZXIuZWxlbWVudC5zZXRDYXB0dXJlKCB0cnVlICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zID0gZ2V0Q2FwdHVyZUV2ZW50UGFyYW1zKCB0cmFja2VyLCAkLk1vdXNlVHJhY2tlci5oYXZlUG9pbnRlckV2ZW50cyA/ICdwb2ludGVyZXZlbnQnIDogcG9pbnRlclR5cGUgKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBlbXVsYXRlIG1vdXNlIGNhcHR1cmUgYnkgaGFuZ2luZyBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50IG9iamVjdC5cbiAgICAgICAgICAgICAgICAvLyAgICAoTm90ZSB3ZSBsaXN0ZW4gb24gdGhlIGNhcHR1cmUgcGhhc2Ugc28gdGhlIGNhcHR1cmVkIGhhbmRsZXJzIHdpbGwgZ2V0IGNhbGxlZCBmaXJzdClcbiAgICAgICAgICAgICAgICBpZiAoaXNJbklmcmFtZSAmJiBjYW5BY2Nlc3NFdmVudHMod2luZG93LnRvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgJC5hZGRFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy50b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cEhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICQuYWRkRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmNhcHR1cmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zLnVwSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgJC5hZGRFdmVudChcbiAgICAgICAgICAgICAgICAgICAgJC5Nb3VzZVRyYWNrZXIuY2FwdHVyZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zLm1vdmVOYW1lLFxuICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy5tb3ZlSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFN0b3AgY2FwdHVyaW5nIHBvaW50ZXIgZXZlbnRzIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWxlYXNlUG9pbnRlciggdHJhY2tlciwgcG9pbnRlclR5cGUsIHBvaW50ZXJDb3VudCApIHtcbiAgICAgICAgdmFyIHBvaW50c0xpc3QgPSB0cmFja2VyLmdldEFjdGl2ZVBvaW50ZXJzTGlzdEJ5VHlwZSggcG9pbnRlclR5cGUgKSxcbiAgICAgICAgICAgIGV2ZW50UGFyYW1zO1xuXG4gICAgICAgIHBvaW50c0xpc3QuY2FwdHVyZUNvdW50IC09IChwb2ludGVyQ291bnQgfHwgMSk7XG5cbiAgICAgICAgaWYgKCBwb2ludHNMaXN0LmNhcHR1cmVDb3VudCA9PT0gMCApIHtcbiAgICAgICAgICAgIGlmICggJC5Ccm93c2VyLnZlbmRvciA9PT0gJC5CUk9XU0VSUy5JRSAmJiAkLkJyb3dzZXIudmVyc2lvbiA8IDkgKSB7XG4gICAgICAgICAgICAgICAgdHJhY2tlci5lbGVtZW50LnJlbGVhc2VDYXB0dXJlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zID0gZ2V0Q2FwdHVyZUV2ZW50UGFyYW1zKCB0cmFja2VyLCAkLk1vdXNlVHJhY2tlci5oYXZlUG9pbnRlckV2ZW50cyA/ICdwb2ludGVyZXZlbnQnIDogcG9pbnRlclR5cGUgKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBlbXVsYXRlIG1vdXNlIGNhcHR1cmUgYnkgaGFuZ2luZyBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50IG9iamVjdC5cbiAgICAgICAgICAgICAgICAvLyAgICAoTm90ZSB3ZSBsaXN0ZW4gb24gdGhlIGNhcHR1cmUgcGhhc2Ugc28gdGhlIGNhcHR1cmVkIGhhbmRsZXJzIHdpbGwgZ2V0IGNhbGxlZCBmaXJzdClcbiAgICAgICAgICAgICAgICBpZiAoaXNJbklmcmFtZSAmJiBjYW5BY2Nlc3NFdmVudHMod2luZG93LnRvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgJC5yZW1vdmVFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy50b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cEhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICQucmVtb3ZlRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmNhcHR1cmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy5tb3ZlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRQYXJhbXMubW92ZUhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICQucmVtb3ZlRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmNhcHR1cmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBldmVudFBhcmFtcy51cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50UGFyYW1zLnVwSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBXM0MgUG9pbnRlciBFdmVudHMgbW9kZWwgY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgc3RyaW5nIGZyb20gYSBET00gcG9pbnRlciBldmVudC5cbiAgICAgKiBJRTEwIHVzZWQgYSBsb25nIGludGVnZXIgdmFsdWUsIGJ1dCB0aGUgVzNDIHNwZWNpZmljYXRpb24gKGFuZCBJRTExKykgdXNlIGEgc3RyaW5nIFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKSB7XG4gICAgICAgIHZhciBwb2ludGVyVHlwZVN0cjtcbiAgICAgICAgaWYgKCAkLk1vdXNlVHJhY2tlci51bnByZWZpeGVkUG9pbnRlckV2ZW50cyApIHtcbiAgICAgICAgICAgIHBvaW50ZXJUeXBlU3RyID0gZXZlbnQucG9pbnRlclR5cGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJRTEwXG4gICAgICAgICAgICAvLyAgTVNQT0lOVEVSX1RZUEVfVE9VQ0g6IDB4MDAwMDAwMDJcbiAgICAgICAgICAgIC8vICBNU1BPSU5URVJfVFlQRV9QRU46ICAgMHgwMDAwMDAwM1xuICAgICAgICAgICAgLy8gIE1TUE9JTlRFUl9UWVBFX01PVVNFOiAweDAwMDAwMDA0XG4gICAgICAgICAgICBzd2l0Y2goIGV2ZW50LnBvaW50ZXJUeXBlIClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjYXNlIDB4MDAwMDAwMDI6XG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlU3RyID0gJ3RvdWNoJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAweDAwMDAwMDAzOlxuICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZVN0ciA9ICdwZW4nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDB4MDAwMDAwMDQ6XG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlU3RyID0gJ21vdXNlJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGVTdHIgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9pbnRlclR5cGVTdHI7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1vdXNlQWJzb2x1dGUoIGV2ZW50ICkge1xuICAgICAgICByZXR1cm4gJC5nZXRNb3VzZVBvc2l0aW9uKCBldmVudCApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TW91c2VSZWxhdGl2ZSggZXZlbnQsIGVsZW1lbnQgKSB7XG4gICAgICAgIHJldHVybiBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSwgZWxlbWVudCApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0UG9pbnRSZWxhdGl2ZVRvQWJzb2x1dGUoIHBvaW50LCBlbGVtZW50ICkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gJC5nZXRFbGVtZW50T2Zmc2V0KCBlbGVtZW50ICk7XG4gICAgICAgIHJldHVybiBwb2ludC5taW51cyggb2Zmc2V0ICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRDZW50ZXJQb2ludCggcG9pbnQxLCBwb2ludDIgKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCggKCBwb2ludDEueCArIHBvaW50Mi54ICkgLyAyLCAoIHBvaW50MS55ICsgcG9pbnQyLnkgKSAvIDIgKTtcbiAgICB9XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGV2aWNlLXNwZWNpZmljIERPTSBldmVudCBoYW5kbGVyc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkNsaWNrKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgaWYgKCB0cmFja2VyLmNsaWNrSGFuZGxlciApIHtcbiAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25EYmxDbGljayggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIGlmICggdHJhY2tlci5kYmxDbGlja0hhbmRsZXIgKSB7XG4gICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uS2V5RG93biggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIC8vJC5jb25zb2xlLmxvZyggXCJrZXlkb3duICVzICVzICVzICVzICVzXCIsIGV2ZW50LmtleUNvZGUsIGV2ZW50LmNoYXJDb2RlLCBldmVudC5jdHJsS2V5LCBldmVudC5zaGlmdEtleSwgZXZlbnQuYWx0S2V5ICk7XG4gICAgICAgIHZhciBwcm9wYWdhdGU7XG4gICAgICAgIGlmICggdHJhY2tlci5rZXlEb3duSGFuZGxlciApIHtcbiAgICAgICAgICAgIGV2ZW50ID0gJC5nZXRFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIua2V5RG93bkhhbmRsZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAga2V5Q29kZTogICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPyBldmVudC5rZXlDb2RlIDogZXZlbnQuY2hhckNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGN0cmw6ICAgICAgICAgICAgICAgICBldmVudC5jdHJsS2V5LFxuICAgICAgICAgICAgICAgICAgICBzaGlmdDogICAgICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogICAgICAgICAgICAgICAgICBldmVudC5hbHRLZXksXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6ICAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5LFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCAhcHJvcGFnYXRlICkge1xuICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25LZXlVcCggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIC8vJC5jb25zb2xlLmxvZyggXCJrZXl1cCAlcyAlcyAlcyAlcyAlc1wiLCBldmVudC5rZXlDb2RlLCBldmVudC5jaGFyQ29kZSwgZXZlbnQuY3RybEtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmFsdEtleSApO1xuICAgICAgICB2YXIgcHJvcGFnYXRlO1xuICAgICAgICBpZiAoIHRyYWNrZXIua2V5VXBIYW5kbGVyICkge1xuICAgICAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5rZXlVcEhhbmRsZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAga2V5Q29kZTogICAgICAgICAgICAgIGV2ZW50LmtleUNvZGUgPyBldmVudC5rZXlDb2RlIDogZXZlbnQuY2hhckNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGN0cmw6ICAgICAgICAgICAgICAgICBldmVudC5jdHJsS2V5LFxuICAgICAgICAgICAgICAgICAgICBzaGlmdDogICAgICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogICAgICAgICAgICAgICAgICBldmVudC5hbHRLZXksXG4gICAgICAgICAgICAgICAgICAgIG1ldGE6ICAgICAgICAgICAgICAgICBldmVudC5tZXRhS2V5LFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCAhcHJvcGFnYXRlICkge1xuICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25LZXlQcmVzcyggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIC8vJC5jb25zb2xlLmxvZyggXCJrZXlwcmVzcyAlcyAlcyAlcyAlcyAlc1wiLCBldmVudC5rZXlDb2RlLCBldmVudC5jaGFyQ29kZSwgZXZlbnQuY3RybEtleSwgZXZlbnQuc2hpZnRLZXksIGV2ZW50LmFsdEtleSApO1xuICAgICAgICB2YXIgcHJvcGFnYXRlO1xuICAgICAgICBpZiAoIHRyYWNrZXIua2V5SGFuZGxlciApIHtcbiAgICAgICAgICAgIGV2ZW50ID0gJC5nZXRFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIua2V5SGFuZGxlcihcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICBrZXlDb2RlOiAgICAgICAgICAgICAgZXZlbnQua2V5Q29kZSA/IGV2ZW50LmtleUNvZGUgOiBldmVudC5jaGFyQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgY3RybDogICAgICAgICAgICAgICAgIGV2ZW50LmN0cmxLZXksXG4gICAgICAgICAgICAgICAgICAgIHNoaWZ0OiAgICAgICAgICAgICAgICBldmVudC5zaGlmdEtleSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiAgICAgICAgICAgICAgICAgIGV2ZW50LmFsdEtleSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YTogICAgICAgICAgICAgICAgIGV2ZW50Lm1ldGFLZXksXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoICFwcm9wYWdhdGUgKSB7XG4gICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkZvY3VzKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyggXCJmb2N1cyAlc1wiLCBldmVudCApO1xuICAgICAgICB2YXIgcHJvcGFnYXRlO1xuICAgICAgICBpZiAoIHRyYWNrZXIuZm9jdXNIYW5kbGVyICkge1xuICAgICAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5mb2N1c0hhbmRsZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAgICAgICAgICAgICB0cmFja2VyLnVzZXJEYXRhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uQmx1ciggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coIFwiYmx1ciAlc1wiLCBldmVudCApO1xuICAgICAgICB2YXIgcHJvcGFnYXRlO1xuICAgICAgICBpZiAoIHRyYWNrZXIuYmx1ckhhbmRsZXIgKSB7XG4gICAgICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICBwcm9wYWdhdGUgPSB0cmFja2VyLmJsdXJIYW5kbGVyKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIHByb3BhZ2F0ZSA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlciBmb3IgJ3doZWVsJyBldmVudHNcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25XaGVlbCggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoIHRyYWNrZXIsIGV2ZW50LCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlciBmb3IgJ21vdXNld2hlZWwnLCAnRE9NTW91c2VTY3JvbGwnLCBhbmQgJ01vek1vdXNlUGl4ZWxTY3JvbGwnIGV2ZW50c1xuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbk1vdXNlV2hlZWwoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG5cbiAgICAgICAgLy8gU2ltdWxhdGUgYSAnd2hlZWwnIGV2ZW50XG4gICAgICAgIHZhciBzaW11bGF0ZWRFdmVudCA9IHtcbiAgICAgICAgICAgIHRhcmdldDogICAgIGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50LFxuICAgICAgICAgICAgdHlwZTogICAgICAgXCJ3aGVlbFwiLFxuICAgICAgICAgICAgc2hpZnRLZXk6ICAgZXZlbnQuc2hpZnRLZXkgfHwgZmFsc2UsXG4gICAgICAgICAgICBjbGllbnRYOiAgICBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgY2xpZW50WTogICAgZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgIHBhZ2VYOiAgICAgIGV2ZW50LnBhZ2VYID8gZXZlbnQucGFnZVggOiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgcGFnZVk6ICAgICAgZXZlbnQucGFnZVkgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgICBkZWx0YU1vZGU6ICBldmVudC50eXBlID09IFwiTW96TW91c2VQaXhlbFNjcm9sbFwiID8gMCA6IDEsIC8vIDA9cGl4ZWwsIDE9bGluZSwgMj1wYWdlXG4gICAgICAgICAgICBkZWx0YVg6ICAgICAwLFxuICAgICAgICAgICAgZGVsdGFaOiAgICAgMFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBkZWx0YVlcbiAgICAgICAgaWYgKCAkLk1vdXNlVHJhY2tlci53aGVlbEV2ZW50TmFtZSA9PSBcIm1vdXNld2hlZWxcIiApIHtcbiAgICAgICAgICAgIHNpbXVsYXRlZEV2ZW50LmRlbHRhWSA9IC0gMSAvICQuREVGQVVMVF9TRVRUSU5HUy5waXhlbHNQZXJXaGVlbExpbmUgKiBldmVudC53aGVlbERlbHRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2ltdWxhdGVkRXZlbnQuZGVsdGFZID0gZXZlbnQuZGV0YWlsO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlV2hlZWxFdmVudCggdHJhY2tlciwgc2ltdWxhdGVkRXZlbnQsIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzICd3aGVlbCcgZXZlbnRzLlxuICAgICAqIFRoZSBldmVudCBtYXkgYmUgc2ltdWxhdGVkIGJ5IHRoZSBsZWdhY3kgbW91c2Ugd2hlZWwgZXZlbnQgaGFuZGxlciAob25Nb3VzZVdoZWVsKCkpLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVXaGVlbEV2ZW50KCB0cmFja2VyLCBldmVudCwgb3JpZ2luYWxFdmVudCApIHtcbiAgICAgICAgdmFyIG5EZWx0YSA9IDAsXG4gICAgICAgICAgICBwcm9wYWdhdGU7XG5cbiAgICAgICAgLy8gVGhlIG5EZWx0YSB2YXJpYWJsZSBpcyBnYXRlZCB0byBwcm92aWRlIHNtb290aCB6LWluZGV4IHNjcm9sbGluZ1xuICAgICAgICAvLyAgIHNpbmNlIHRoZSBtb3VzZSB3aGVlbCBhbGxvd3MgZm9yIHN1YnN0YW50aWFsIGRlbHRhcyBtZWFudCBmb3IgcmFwaWRcbiAgICAgICAgLy8gICB5LWluZGV4IHNjcm9sbGluZy5cbiAgICAgICAgLy8gZXZlbnQuZGVsdGFNb2RlOiAwPXBpeGVsLCAxPWxpbmUsIDI9cGFnZVxuICAgICAgICAvLyBUT0RPOiBEZWx0YXMgaW4gcGl4ZWwgbW9kZSBzaG91bGQgYmUgYWNjdW11bGF0ZWQgdGhlbiBhIHNjcm9sbCB2YWx1ZSBjb21wdXRlZCBhZnRlciAkLkRFRkFVTFRfU0VUVElOR1MucGl4ZWxzUGVyV2hlZWxMaW5lIHRocmVzaG9sZCByZWFjaGVkXG4gICAgICAgIG5EZWx0YSA9IGV2ZW50LmRlbHRhWSA8IDAgPyAxIDogLTE7XG5cbiAgICAgICAgaWYgKCB0cmFja2VyLnNjcm9sbEhhbmRsZXIgKSB7XG4gICAgICAgICAgICBwcm9wYWdhdGUgPSB0cmFja2VyLnNjcm9sbEhhbmRsZXIoXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgICdtb3VzZScsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRNb3VzZVJlbGF0aXZlKCBldmVudCwgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogICAgICAgICAgICAgICBuRGVsdGEsXG4gICAgICAgICAgICAgICAgICAgIHNoaWZ0OiAgICAgICAgICAgICAgICBldmVudC5zaGlmdEtleSxcbiAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgb3JpZ2luYWxFdmVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIHByb3BhZ2F0ZSA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggb3JpZ2luYWxFdmVudCApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGFyZW50Q2hpbGQoIHBhcmVudCwgY2hpbGQgKVxuICAgIHtcbiAgICAgICBpZiAoIHBhcmVudCA9PT0gY2hpbGQgKSB7XG4gICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICB9XG4gICAgICAgd2hpbGUgKCBjaGlsZCAmJiBjaGlsZCAhPT0gcGFyZW50ICkge1xuICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnBhcmVudE5vZGU7XG4gICAgICAgfVxuICAgICAgIHJldHVybiBjaGlsZCA9PT0gcGFyZW50O1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogT25seSB1c2VkIG9uIElFIDhcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZUVudGVyKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuXG4gICAgICAgIGhhbmRsZU1vdXNlRW50ZXIoIHRyYWNrZXIsIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uTW91c2VPdmVyKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuXG4gICAgICAgIGlmICggZXZlbnQuY3VycmVudFRhcmdldCA9PT0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBpc1BhcmVudENoaWxkKCBldmVudC5jdXJyZW50VGFyZ2V0LCBldmVudC5yZWxhdGVkVGFyZ2V0ICkgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVNb3VzZUVudGVyKCB0cmFja2VyLCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZUVudGVyKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiAkLk1vdXNlVHJhY2tlci5tb3VzZVBvaW50ZXJJZCxcbiAgICAgICAgICAgIHR5cGU6ICdtb3VzZScsXG4gICAgICAgICAgICBpc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50UG9zOiBnZXRNb3VzZUFic29sdXRlKCBldmVudCApLFxuICAgICAgICAgICAgY3VycmVudFRpbWU6ICQubm93KClcbiAgICAgICAgfTtcblxuICAgICAgICB1cGRhdGVQb2ludGVyc0VudGVyKCB0cmFja2VyLCBldmVudCwgWyBnUG9pbnQgXSApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogT25seSB1c2VkIG9uIElFIDhcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZUxlYXZlKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuXG4gICAgICAgIGhhbmRsZU1vdXNlRXhpdCggdHJhY2tlciwgZXZlbnQgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZU91dCggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIGV2ZW50ID0gJC5nZXRFdmVudCggZXZlbnQgKTtcblxuICAgICAgICBpZiAoIGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgaXNQYXJlbnRDaGlsZCggZXZlbnQuY3VycmVudFRhcmdldCwgZXZlbnQucmVsYXRlZFRhcmdldCApICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlTW91c2VFeGl0KCB0cmFja2VyLCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZUV4aXQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgZ1BvaW50ID0ge1xuICAgICAgICAgICAgaWQ6ICQuTW91c2VUcmFja2VyLm1vdXNlUG9pbnRlcklkLFxuICAgICAgICAgICAgdHlwZTogJ21vdXNlJyxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRQb3M6IGdldE1vdXNlQWJzb2x1dGUoIGV2ZW50ICksXG4gICAgICAgICAgICBjdXJyZW50VGltZTogJC5ub3coKVxuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzRXhpdCggdHJhY2tlciwgZXZlbnQsIFsgZ1BvaW50IF0gKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBXM0MgRE9NIGxldmVsIDMgc3RhbmRhcmQgYnV0dG9uIHZhbHVlIGdpdmVuIGFuIGV2ZW50LmJ1dHRvbiBwcm9wZXJ0eTpcbiAgICAgKiAgIC0xID09IG5vbmUsIDAgPT0gcHJpbWFyeS9sZWZ0LCAxID09IG1pZGRsZSwgMiA9PSBzZWNvbmRhcnkvcmlnaHQsIDMgPT0gWDEvYmFjaywgNCA9PSBYMi9mb3J3YXJkLCA1ID09IGVyYXNlciAocGVuKVxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0U3RhbmRhcmRpemVkQnV0dG9uKCBidXR0b24gKSB7XG4gICAgICAgIGlmICggJC5Ccm93c2VyLnZlbmRvciA9PT0gJC5CUk9XU0VSUy5JRSAmJiAkLkJyb3dzZXIudmVyc2lvbiA8IDkgKSB7XG4gICAgICAgICAgICAvLyBPbiBJRSA4LCAwID09IG5vbmUsIDEgPT0gbGVmdCwgMiA9PSByaWdodCwgMyA9PSBsZWZ0IGFuZCByaWdodCwgNCA9PSBtaWRkbGUsIDUgPT0gbGVmdCBhbmQgbWlkZGxlLCA2ID09IHJpZ2h0IGFuZCBtaWRkbGUsIDcgPT0gYWxsIHRocmVlXG4gICAgICAgICAgICAvLyBUT0RPOiBTdXBwb3J0IGNob3JkZWQgKG11bHRpcGxlKSBidXR0b24gcHJlc3NlcyBvbiBJRSA4P1xuICAgICAgICAgICAgaWYgKCBidXR0b24gPT09IDEgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b24gPT09IDIgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b24gPT09IDQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidXR0b247XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZURvd24oIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgZ1BvaW50O1xuXG4gICAgICAgIGV2ZW50ID0gJC5nZXRFdmVudCggZXZlbnQgKTtcblxuICAgICAgICBnUG9pbnQgPSB7XG4gICAgICAgICAgICBpZDogJC5Nb3VzZVRyYWNrZXIubW91c2VQb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiAnbW91c2UnLFxuICAgICAgICAgICAgaXNQcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lOiAkLm5vdygpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCB1cGRhdGVQb2ludGVyc0Rvd24oIHRyYWNrZXIsIGV2ZW50LCBbIGdQb2ludCBdLCBnZXRTdGFuZGFyZGl6ZWRCdXR0b24oIGV2ZW50LmJ1dHRvbiApICkgKSB7XG4gICAgICAgICAgICAkLnN0b3BFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgIGNhcHR1cmVQb2ludGVyKCB0cmFja2VyLCAnbW91c2UnICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRyYWNrZXIuY2xpY2tIYW5kbGVyIHx8IHRyYWNrZXIuZGJsQ2xpY2tIYW5kbGVyIHx8IHRyYWNrZXIucHJlc3NIYW5kbGVyIHx8IHRyYWNrZXIuZHJhZ0hhbmRsZXIgfHwgdHJhY2tlci5kcmFnRW5kSGFuZGxlciApIHtcbiAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZVVwKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgaGFuZGxlTW91c2VVcCggdHJhY2tlciwgZXZlbnQgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QgKG9uIHRoZSBjYXB0dXJlIHBoYXNlKSB0byBlbXVsYXRlIG1vdXNlIGNhcHR1cmUuXG4gICAgICogb25Nb3VzZVVwIGlzIHN0aWxsIGF0dGFjaGVkIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQsIHNvIHN0b3AgcHJvcGFnYXRpb24gdG8gYXZvaWQgcHJvY2Vzc2luZyB0d2ljZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Nb3VzZVVwQ2FwdHVyZWQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVNb3VzZVVwKCB0cmFja2VyLCBldmVudCApO1xuICAgICAgICAkLnN0b3BFdmVudCggZXZlbnQgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VVcCggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIHZhciBnUG9pbnQ7XG5cbiAgICAgICAgZXZlbnQgPSAkLmdldEV2ZW50KCBldmVudCApO1xuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiAkLk1vdXNlVHJhY2tlci5tb3VzZVBvaW50ZXJJZCxcbiAgICAgICAgICAgIHR5cGU6ICdtb3VzZScsXG4gICAgICAgICAgICBpc1ByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBjdXJyZW50UG9zOiBnZXRNb3VzZUFic29sdXRlKCBldmVudCApLFxuICAgICAgICAgICAgY3VycmVudFRpbWU6ICQubm93KClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIHVwZGF0ZVBvaW50ZXJzVXAoIHRyYWNrZXIsIGV2ZW50LCBbIGdQb2ludCBdLCBnZXRTdGFuZGFyZGl6ZWRCdXR0b24oIGV2ZW50LmJ1dHRvbiApICkgKSB7XG4gICAgICAgICAgICByZWxlYXNlUG9pbnRlciggdHJhY2tlciwgJ21vdXNlJyApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uTW91c2VNb3ZlKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgaGFuZGxlTW91c2VNb3ZlKCB0cmFja2VyLCBldmVudCApO1xuICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QgKG9uIHRoZSBjYXB0dXJlIHBoYXNlKSB0byBlbXVsYXRlIG1vdXNlIGNhcHR1cmUuXG4gICAgICogb25Nb3VzZU1vdmUgaXMgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIHRyYWNrZWQgZWxlbWVudCwgc28gc3RvcCBwcm9wYWdhdGlvbiB0byBhdm9pZCBwcm9jZXNzaW5nIHR3aWNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbk1vdXNlTW92ZUNhcHR1cmVkKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgaGFuZGxlTW91c2VNb3ZlKCB0cmFja2VyLCBldmVudCApO1xuICAgICAgICAkLnN0b3BFdmVudCggZXZlbnQgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFuZGxlTW91c2VNb3ZlKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIGdQb2ludDtcblxuICAgICAgICBldmVudCA9ICQuZ2V0RXZlbnQoIGV2ZW50ICk7XG5cbiAgICAgICAgZ1BvaW50ID0ge1xuICAgICAgICAgICAgaWQ6ICQuTW91c2VUcmFja2VyLm1vdXNlUG9pbnRlcklkLFxuICAgICAgICAgICAgdHlwZTogJ21vdXNlJyxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRQb3M6IGdldE1vdXNlQWJzb2x1dGUoIGV2ZW50ICksXG4gICAgICAgICAgICBjdXJyZW50VGltZTogJC5ub3coKVxuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzTW92ZSggdHJhY2tlciwgZXZlbnQsIFsgZ1BvaW50IF0gKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWJvcnRUb3VjaENvbnRhY3RzKCB0cmFja2VyLCBldmVudCwgcG9pbnRzTGlzdCApIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBnUG9pbnRDb3VudCA9IHBvaW50c0xpc3QuZ2V0TGVuZ3RoKCksXG4gICAgICAgICAgICBhYm9ydEdQb2ludHMgPSBbXTtcblxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGdQb2ludENvdW50OyBpKysgKSB7XG4gICAgICAgICAgICBhYm9ydEdQb2ludHMucHVzaCggcG9pbnRzTGlzdC5nZXRCeUluZGV4KCBpICkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggYWJvcnRHUG9pbnRzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAvLyBzaW11bGF0ZSB0b3VjaGVuZFxuICAgICAgICAgICAgdXBkYXRlUG9pbnRlcnNVcCggdHJhY2tlciwgZXZlbnQsIGFib3J0R1BvaW50cywgMCApOyAvLyAwIG1lYW5zIHByaW1hcnkgYnV0dG9uIHByZXNzL3JlbGVhc2Ugb3IgdG91Y2ggY29udGFjdFxuICAgICAgICAgICAgLy8gcmVsZWFzZSBwb2ludGVyIGNhcHR1cmVcbiAgICAgICAgICAgIHBvaW50c0xpc3QuY2FwdHVyZUNvdW50ID0gMTtcbiAgICAgICAgICAgIHJlbGVhc2VQb2ludGVyKCB0cmFja2VyLCAndG91Y2gnICk7XG4gICAgICAgICAgICAvLyBzaW11bGF0ZSB0b3VjaGxlYXZlXG4gICAgICAgICAgICB1cGRhdGVQb2ludGVyc0V4aXQoIHRyYWNrZXIsIGV2ZW50LCBhYm9ydEdQb2ludHMgKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblRvdWNoU3RhcnQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgdGltZSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBqLFxuICAgICAgICAgICAgdG91Y2hDb3VudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCxcbiAgICAgICAgICAgIGdQb2ludHMgPSBbXSxcbiAgICAgICAgICAgIHBhcmVudEdQb2ludHMsXG4gICAgICAgICAgICBwb2ludHNMaXN0ID0gdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyc0xpc3RCeVR5cGUoICd0b3VjaCcgKTtcblxuICAgICAgICB0aW1lID0gJC5ub3coKTtcblxuICAgICAgICBpZiAoIHBvaW50c0xpc3QuZ2V0TGVuZ3RoKCkgPiBldmVudC50b3VjaGVzLmxlbmd0aCAtIHRvdWNoQ291bnQgKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUud2FybignVHJhY2tlZCB0b3VjaCBjb250YWN0IGNvdW50IGRvZXNuXFwndCBtYXRjaCBldmVudC50b3VjaGVzLmxlbmd0aC4gUmVtb3ZpbmcgYWxsIHRyYWNrZWQgdG91Y2ggcG9pbnRlcnMuJyk7XG4gICAgICAgICAgICBhYm9ydFRvdWNoQ29udGFjdHMoIHRyYWNrZXIsIGV2ZW50LCBwb2ludHNMaXN0ICk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHRvdWNoQ291bnQ7IGkrKyApIHtcbiAgICAgICAgICAgIGdQb2ludHMucHVzaCgge1xuICAgICAgICAgICAgICAgIGlkOiBldmVudC5jaGFuZ2VkVG91Y2hlc1sgaSBdLmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAvLyBpc1ByaW1hcnkgbm90IHNldCAtIGxldCB0aGUgdXBkYXRlUG9pbnRlcnMgZnVuY3Rpb25zIGRldGVybWluZSBpdFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3M6IGdldE1vdXNlQWJzb2x1dGUoIGV2ZW50LmNoYW5nZWRUb3VjaGVzWyBpIF0gKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VGltZTogdGltZVxuICAgICAgICAgICAgfSApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2ltdWxhdGUgdG91Y2hlbnRlciBvbiBvdXIgdHJhY2tlZCBlbGVtZW50XG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzRW50ZXIoIHRyYWNrZXIsIGV2ZW50LCBnUG9pbnRzICk7XG5cbiAgICAgICAgLy8gc2ltdWxhdGUgdG91Y2hlbnRlciBvbiBvdXIgdHJhY2tlZCBlbGVtZW50J3MgdHJhY2tlZCBhbmNlc3RvciBlbGVtZW50c1xuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE1PVVNFVFJBQ0tFUlMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIE1PVVNFVFJBQ0tFUlNbIGkgXSAhPT0gdHJhY2tlciAmJiBNT1VTRVRSQUNLRVJTWyBpIF0uaXNUcmFja2luZygpICYmIGlzUGFyZW50Q2hpbGQoIE1PVVNFVFJBQ0tFUlNbIGkgXS5lbGVtZW50LCB0cmFja2VyLmVsZW1lbnQgKSApIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRHUG9pbnRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCB0b3VjaENvdW50OyBqKysgKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEdQb2ludHMucHVzaCgge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV2ZW50LmNoYW5nZWRUb3VjaGVzWyBqIF0uaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0b3VjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpc1ByaW1hcnkgbm90IHNldCAtIGxldCB0aGUgdXBkYXRlUG9pbnRlcnMgZnVuY3Rpb25zIGRldGVybWluZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQuY2hhbmdlZFRvdWNoZXNbIGogXSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRpbWU6IHRpbWVcbiAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1cGRhdGVQb2ludGVyc0VudGVyKCBNT1VTRVRSQUNLRVJTWyBpIF0sIGV2ZW50LCBwYXJlbnRHUG9pbnRzICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHVwZGF0ZVBvaW50ZXJzRG93biggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMsIDAgKSApIHsgLy8gMCBtZWFucyBwcmltYXJ5IGJ1dHRvbiBwcmVzcy9yZWxlYXNlIG9yIHRvdWNoIGNvbnRhY3RcbiAgICAgICAgICAgICQuc3RvcEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgY2FwdHVyZVBvaW50ZXIoIHRyYWNrZXIsICd0b3VjaCcsIHRvdWNoQ291bnQgKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uVG91Y2hFbmQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVUb3VjaEVuZCggdHJhY2tlciwgZXZlbnQgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaGFuZGxlciBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IG9iamVjdCAob24gdGhlIGNhcHR1cmUgcGhhc2UpIHRvIGVtdWxhdGUgcG9pbnRlciBjYXB0dXJlLlxuICAgICAqIG9uVG91Y2hFbmQgaXMgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIHRyYWNrZWQgZWxlbWVudCwgc28gc3RvcCBwcm9wYWdhdGlvbiB0byBhdm9pZCBwcm9jZXNzaW5nIHR3aWNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblRvdWNoRW5kQ2FwdHVyZWQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVUb3VjaEVuZCggdHJhY2tlciwgZXZlbnQgKTtcbiAgICAgICAgJC5zdG9wRXZlbnQoIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbmRsZVRvdWNoRW5kKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIHRpbWUsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgaixcbiAgICAgICAgICAgIHRvdWNoQ291bnQgPSBldmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGgsXG4gICAgICAgICAgICBnUG9pbnRzID0gW10sXG4gICAgICAgICAgICBwYXJlbnRHUG9pbnRzO1xuXG4gICAgICAgIHRpbWUgPSAkLm5vdygpO1xuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgdG91Y2hDb3VudDsgaSsrICkge1xuICAgICAgICAgICAgZ1BvaW50cy5wdXNoKCB7XG4gICAgICAgICAgICAgICAgaWQ6IGV2ZW50LmNoYW5nZWRUb3VjaGVzWyBpIF0uaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICB0eXBlOiAndG91Y2gnLFxuICAgICAgICAgICAgICAgIC8vIGlzUHJpbWFyeSBub3Qgc2V0IC0gbGV0IHRoZSB1cGRhdGVQb2ludGVycyBmdW5jdGlvbnMgZGV0ZXJtaW5lIGl0XG4gICAgICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQuY2hhbmdlZFRvdWNoZXNbIGkgXSApLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lOiB0aW1lXG4gICAgICAgICAgICB9ICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHVwZGF0ZVBvaW50ZXJzVXAoIHRyYWNrZXIsIGV2ZW50LCBnUG9pbnRzLCAwICkgKSB7XG4gICAgICAgICAgICByZWxlYXNlUG9pbnRlciggdHJhY2tlciwgJ3RvdWNoJywgdG91Y2hDb3VudCApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2ltdWxhdGUgdG91Y2hsZWF2ZSBvbiBvdXIgdHJhY2tlZCBlbGVtZW50XG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzRXhpdCggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMgKTtcblxuICAgICAgICAvLyBzaW11bGF0ZSB0b3VjaGxlYXZlIG9uIG91ciB0cmFja2VkIGVsZW1lbnQncyB0cmFja2VkIGFuY2VzdG9yIGVsZW1lbnRzXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTU9VU0VUUkFDS0VSUy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGlmICggTU9VU0VUUkFDS0VSU1sgaSBdICE9PSB0cmFja2VyICYmIE1PVVNFVFJBQ0tFUlNbIGkgXS5pc1RyYWNraW5nKCkgJiYgaXNQYXJlbnRDaGlsZCggTU9VU0VUUkFDS0VSU1sgaSBdLmVsZW1lbnQsIHRyYWNrZXIuZWxlbWVudCApICkge1xuICAgICAgICAgICAgICAgIHBhcmVudEdQb2ludHMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHRvdWNoQ291bnQ7IGorKyApIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50R1BvaW50cy5wdXNoKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogZXZlbnQuY2hhbmdlZFRvdWNoZXNbIGogXS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzUHJpbWFyeSBub3Qgc2V0IC0gbGV0IHRoZSB1cGRhdGVQb2ludGVycyBmdW5jdGlvbnMgZGV0ZXJtaW5lIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9zOiBnZXRNb3VzZUFic29sdXRlKCBldmVudC5jaGFuZ2VkVG91Y2hlc1sgaiBdICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGltZTogdGltZVxuICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVBvaW50ZXJzRXhpdCggTU9VU0VUUkFDS0VSU1sgaSBdLCBldmVudCwgcGFyZW50R1BvaW50cyApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Ub3VjaE1vdmUoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVUb3VjaE1vdmUoIHRyYWNrZXIsIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QgKG9uIHRoZSBjYXB0dXJlIHBoYXNlKSB0byBlbXVsYXRlIHBvaW50ZXIgY2FwdHVyZS5cbiAgICAgKiBvblRvdWNoTW92ZSBpcyBzdGlsbCBhdHRhY2hlZCB0byB0aGUgdHJhY2tlZCBlbGVtZW50LCBzbyBzdG9wIHByb3BhZ2F0aW9uIHRvIGF2b2lkIHByb2Nlc3NpbmcgdHdpY2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uVG91Y2hNb3ZlQ2FwdHVyZWQoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVUb3VjaE1vdmUoIHRyYWNrZXIsIGV2ZW50ICk7XG4gICAgICAgICQuc3RvcEV2ZW50KCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVUb3VjaE1vdmUoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIHRvdWNoQ291bnQgPSBldmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGgsXG4gICAgICAgICAgICBnUG9pbnRzID0gW107XG5cbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCB0b3VjaENvdW50OyBpKysgKSB7XG4gICAgICAgICAgICBnUG9pbnRzLnB1c2goIHtcbiAgICAgICAgICAgICAgICBpZDogZXZlbnQuY2hhbmdlZFRvdWNoZXNbIGkgXS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0b3VjaCcsXG4gICAgICAgICAgICAgICAgLy8gaXNQcmltYXJ5IG5vdCBzZXQgLSBsZXQgdGhlIHVwZGF0ZVBvaW50ZXJzIGZ1bmN0aW9ucyBkZXRlcm1pbmUgaXRcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zOiBnZXRNb3VzZUFic29sdXRlKCBldmVudC5jaGFuZ2VkVG91Y2hlc1sgaSBdICksXG4gICAgICAgICAgICAgICAgY3VycmVudFRpbWU6ICQubm93KClcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzTW92ZSggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMgKTtcblxuICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblRvdWNoQ2FuY2VsKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIGksXG4gICAgICAgICAgICB0b3VjaENvdW50ID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoLFxuICAgICAgICAgICAgZ1BvaW50cyA9IFtdLFxuICAgICAgICAgICAgcG9pbnRzTGlzdCA9IHRyYWNrZXIuZ2V0QWN0aXZlUG9pbnRlcnNMaXN0QnlUeXBlKCAndG91Y2gnICk7XG4gICAgICAgIFxuICAgICAgICBhYm9ydFRvdWNoQ29udGFjdHMoIHRyYWNrZXIsIGV2ZW50LCBwb2ludHNMaXN0ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uR2VzdHVyZVN0YXJ0KCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25HZXN0dXJlQ2hhbmdlKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Qb2ludGVyT3ZlciggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIHZhciBnUG9pbnQ7XG5cbiAgICAgICAgaWYgKCBldmVudC5jdXJyZW50VGFyZ2V0ID09PSBldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGlzUGFyZW50Q2hpbGQoIGV2ZW50LmN1cnJlbnRUYXJnZXQsIGV2ZW50LnJlbGF0ZWRUYXJnZXQgKSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogZXZlbnQuaXNQcmltYXJ5LFxuICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lOiAkLm5vdygpXG4gICAgICAgIH07XG5cbiAgICAgICAgdXBkYXRlUG9pbnRlcnNFbnRlciggdHJhY2tlciwgZXZlbnQsIFsgZ1BvaW50IF0gKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Qb2ludGVyT3V0KCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIGdQb2ludDtcblxuICAgICAgICBpZiAoIGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgaXNQYXJlbnRDaGlsZCggZXZlbnQuY3VycmVudFRhcmdldCwgZXZlbnQucmVsYXRlZFRhcmdldCApICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZ1BvaW50ID0ge1xuICAgICAgICAgICAgaWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgICAgIHR5cGU6IGdldFBvaW50ZXJUeXBlKCBldmVudCApLFxuICAgICAgICAgICAgaXNQcmltYXJ5OiBldmVudC5pc1ByaW1hcnksXG4gICAgICAgICAgICBjdXJyZW50UG9zOiBnZXRNb3VzZUFic29sdXRlKCBldmVudCApLFxuICAgICAgICAgICAgY3VycmVudFRpbWU6ICQubm93KClcbiAgICAgICAgfTtcblxuICAgICAgICB1cGRhdGVQb2ludGVyc0V4aXQoIHRyYWNrZXIsIGV2ZW50LCBbIGdQb2ludCBdICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uUG9pbnRlckRvd24oIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgZ1BvaW50O1xuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogZXZlbnQuaXNQcmltYXJ5LFxuICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lOiAkLm5vdygpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCB1cGRhdGVQb2ludGVyc0Rvd24oIHRyYWNrZXIsIGV2ZW50LCBbIGdQb2ludCBdLCBldmVudC5idXR0b24gKSApIHtcbiAgICAgICAgICAgICQuc3RvcEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgY2FwdHVyZVBvaW50ZXIoIHRyYWNrZXIsIGdQb2ludC50eXBlICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRyYWNrZXIuY2xpY2tIYW5kbGVyIHx8IHRyYWNrZXIuZGJsQ2xpY2tIYW5kbGVyIHx8IHRyYWNrZXIucHJlc3NIYW5kbGVyIHx8IHRyYWNrZXIuZHJhZ0hhbmRsZXIgfHwgdHJhY2tlci5kcmFnRW5kSGFuZGxlciB8fCB0cmFja2VyLnBpbmNoSGFuZGxlciApIHtcbiAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25Qb2ludGVyVXAoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICBoYW5kbGVQb2ludGVyVXAoIHRyYWNrZXIsIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QgKG9uIHRoZSBjYXB0dXJlIHBoYXNlKSB0byBlbXVsYXRlIG1vdXNlIGNhcHR1cmUuXG4gICAgICogb25Qb2ludGVyVXAgaXMgc3RpbGwgYXR0YWNoZWQgdG8gdGhlIHRyYWNrZWQgZWxlbWVudCwgc28gc3RvcCBwcm9wYWdhdGlvbiB0byBhdm9pZCBwcm9jZXNzaW5nIHR3aWNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblBvaW50ZXJVcENhcHR1cmVkKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgdmFyIHBvaW50c0xpc3QgPSB0cmFja2VyLmdldEFjdGl2ZVBvaW50ZXJzTGlzdEJ5VHlwZSggZ2V0UG9pbnRlclR5cGUoIGV2ZW50ICkgKTtcbiAgICAgICAgaWYgKCBwb2ludHNMaXN0LmdldEJ5SWQoIGV2ZW50LnBvaW50ZXJJZCApICkge1xuICAgICAgICAgICAgaGFuZGxlUG9pbnRlclVwKCB0cmFja2VyLCBldmVudCApO1xuICAgICAgICB9XG4gICAgICAgICQuc3RvcEV2ZW50KCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyVXAoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgZ1BvaW50O1xuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogZXZlbnQuaXNQcmltYXJ5LFxuICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lOiAkLm5vdygpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCB1cGRhdGVQb2ludGVyc1VwKCB0cmFja2VyLCBldmVudCwgWyBnUG9pbnQgXSwgZXZlbnQuYnV0dG9uICkgKSB7XG4gICAgICAgICAgICByZWxlYXNlUG9pbnRlciggdHJhY2tlciwgZ1BvaW50LnR5cGUgKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblBvaW50ZXJNb3ZlKCB0cmFja2VyLCBldmVudCApIHtcbiAgICAgICAgaGFuZGxlUG9pbnRlck1vdmUoIHRyYWNrZXIsIGV2ZW50ICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QgKG9uIHRoZSBjYXB0dXJlIHBoYXNlKSB0byBlbXVsYXRlIG1vdXNlIGNhcHR1cmUuXG4gICAgICogb25Qb2ludGVyTW92ZSBpcyBzdGlsbCBhdHRhY2hlZCB0byB0aGUgdHJhY2tlZCBlbGVtZW50LCBzbyBzdG9wIHByb3BhZ2F0aW9uIHRvIGF2b2lkIHByb2Nlc3NpbmcgdHdpY2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uUG9pbnRlck1vdmVDYXB0dXJlZCggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIHZhciBwb2ludHNMaXN0ID0gdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyc0xpc3RCeVR5cGUoIGdldFBvaW50ZXJUeXBlKCBldmVudCApICk7XG4gICAgICAgIGlmICggcG9pbnRzTGlzdC5nZXRCeUlkKCBldmVudC5wb2ludGVySWQgKSApIHtcbiAgICAgICAgICAgIGhhbmRsZVBvaW50ZXJNb3ZlKCB0cmFja2VyLCBldmVudCApO1xuICAgICAgICB9XG4gICAgICAgICQuc3RvcEV2ZW50KCBldmVudCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyTW92ZSggdHJhY2tlciwgZXZlbnQgKSB7XG4gICAgICAgIC8vIFBvaW50ZXIgY2hhbmdlZCBjb29yZGluYXRlcywgYnV0dG9uIHN0YXRlLCBwcmVzc3VyZSwgdGlsdCwgb3IgY29udGFjdCBnZW9tZXRyeSAoZS5nLiB3aWR0aCBhbmQgaGVpZ2h0KVxuICAgICAgICB2YXIgZ1BvaW50O1xuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGlzUHJpbWFyeTogZXZlbnQuaXNQcmltYXJ5LFxuICAgICAgICAgICAgY3VycmVudFBvczogZ2V0TW91c2VBYnNvbHV0ZSggZXZlbnQgKSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lOiAkLm5vdygpXG4gICAgICAgIH07XG5cbiAgICAgICAgdXBkYXRlUG9pbnRlcnNNb3ZlKCB0cmFja2VyLCBldmVudCwgWyBnUG9pbnQgXSApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvblBvaW50ZXJDYW5jZWwoIHRyYWNrZXIsIGV2ZW50ICkge1xuICAgICAgICB2YXIgZ1BvaW50O1xuXG4gICAgICAgIGdQb2ludCA9IHtcbiAgICAgICAgICAgIGlkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgICAgICB0eXBlOiBnZXRQb2ludGVyVHlwZSggZXZlbnQgKVxuICAgICAgICB9O1xuXG4gICAgICAgIHVwZGF0ZVBvaW50ZXJzQ2FuY2VsKCB0cmFja2VyLCBldmVudCwgWyBnUG9pbnQgXSApO1xuICAgIH1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZXZpY2UtYWdub3N0aWMgRE9NIGV2ZW50IGhhbmRsZXJzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50TGlzdH0gcG9pbnRzTGlzdFxuICAgICAqICAgICBUaGUgR2VzdHVyZVBvaW50TGlzdCB0byB0cmFjayB0aGUgcG9pbnRlciBpbi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludH0gZ1BvaW50XG4gICAgICogICAgICBHZXN0dXJlIHBvaW50IHRvIHRyYWNrLlxuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9IE51bWJlciBvZiBnZXN0dXJlIHBvaW50cyBpbiBwb2ludHNMaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0VHJhY2tpbmdQb2ludGVyKCBwb2ludHNMaXN0LCBnUG9pbnQgKSB7XG5cbiAgICAgICAgLy8gSWYgaXNQcmltYXJ5IGlzIG5vdCBrbm93biBmb3IgdGhlIHBvaW50ZXIgdGhlbiBzZXQgaXQgYWNjb3JkaW5nIHRvIG91ciBydWxlczpcbiAgICAgICAgLy8gICAgdHJ1ZSBpZiB0aGUgZmlyc3QgcG9pbnRlciBpbiB0aGUgZ2VzdHVyZSwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICAgIGlmICggIWdQb2ludC5oYXNPd25Qcm9wZXJ0eSggJ2lzUHJpbWFyeScgKSApIHtcbiAgICAgICAgICAgIGlmICggcG9pbnRzTGlzdC5nZXRMZW5ndGgoKSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICBnUG9pbnQuaXNQcmltYXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ1BvaW50LmlzUHJpbWFyeSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdQb2ludC5zcGVlZCA9IDA7XG4gICAgICAgIGdQb2ludC5kaXJlY3Rpb24gPSAwO1xuICAgICAgICBnUG9pbnQuY29udGFjdFBvcyA9IGdQb2ludC5jdXJyZW50UG9zO1xuICAgICAgICBnUG9pbnQuY29udGFjdFRpbWUgPSBnUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgIGdQb2ludC5sYXN0UG9zID0gZ1BvaW50LmN1cnJlbnRQb3M7XG4gICAgICAgIGdQb2ludC5sYXN0VGltZSA9IGdQb2ludC5jdXJyZW50VGltZTtcblxuICAgICAgICByZXR1cm4gcG9pbnRzTGlzdC5hZGQoIGdQb2ludCApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludExpc3R9IHBvaW50c0xpc3RcbiAgICAgKiAgICAgVGhlIEdlc3R1cmVQb2ludExpc3QgdG8gc3RvcCB0cmFja2luZyB0aGUgcG9pbnRlciBvbi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludH0gZ1BvaW50XG4gICAgICogICAgICBHZXN0dXJlIHBvaW50IHRvIHN0b3AgdHJhY2tpbmcuXG4gICAgICogQHJldHVybnMge051bWJlcn0gTnVtYmVyIG9mIGdlc3R1cmUgcG9pbnRzIGluIHBvaW50c0xpc3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RvcFRyYWNraW5nUG9pbnRlciggcG9pbnRzTGlzdCwgZ1BvaW50ICkge1xuICAgICAgICB2YXIgbGlzdExlbmd0aCxcbiAgICAgICAgICAgIHByaW1hcnlQb2ludDtcblxuICAgICAgICBpZiAoIHBvaW50c0xpc3QuZ2V0QnlJZCggZ1BvaW50LmlkICkgKSB7XG4gICAgICAgICAgICBsaXN0TGVuZ3RoID0gcG9pbnRzTGlzdC5yZW1vdmVCeUlkKCBnUG9pbnQuaWQgKTtcblxuICAgICAgICAgICAgLy8gSWYgaXNQcmltYXJ5IGlzIG5vdCBrbm93biBmb3IgdGhlIHBvaW50ZXIgYW5kIHdlIGp1c3QgcmVtb3ZlZCB0aGUgcHJpbWFyeSBwb2ludGVyIGZyb20gdGhlIGxpc3QgdGhlbiB3ZSBuZWVkIHRvIHNldCBhbm90aGVyIHBvaW50ZXIgYXMgcHJpbWFyeVxuICAgICAgICAgICAgaWYgKCAhZ1BvaW50Lmhhc093blByb3BlcnR5KCAnaXNQcmltYXJ5JyApICkge1xuICAgICAgICAgICAgICAgIHByaW1hcnlQb2ludCA9IHBvaW50c0xpc3QuZ2V0UHJpbWFyeSgpO1xuICAgICAgICAgICAgICAgIGlmICggIXByaW1hcnlQb2ludCApIHtcbiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVBvaW50ID0gcG9pbnRzTGlzdC5nZXRCeUluZGV4KCAwICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggcHJpbWFyeVBvaW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVBvaW50LmlzUHJpbWFyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0TGVuZ3RoID0gcG9pbnRzTGlzdC5nZXRMZW5ndGgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaXN0TGVuZ3RoO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyXG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hdGluZyBET00gZXZlbnQuXG4gICAgICogQHBhcmFtIHtBcnJheS48T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50Pn0gZ1BvaW50c1xuICAgICAqICAgICAgR2VzdHVyZSBwb2ludHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVQb2ludGVyc0VudGVyKCB0cmFja2VyLCBldmVudCwgZ1BvaW50cyApIHtcbiAgICAgICAgdmFyIHBvaW50c0xpc3QgPSB0cmFja2VyLmdldEFjdGl2ZVBvaW50ZXJzTGlzdEJ5VHlwZSggZ1BvaW50c1sgMCBdLnR5cGUgKSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBnUG9pbnRDb3VudCA9IGdQb2ludHMubGVuZ3RoLFxuICAgICAgICAgICAgY3VyR1BvaW50LFxuICAgICAgICAgICAgdXBkYXRlR1BvaW50LFxuICAgICAgICAgICAgcHJvcGFnYXRlO1xuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZ1BvaW50Q291bnQ7IGkrKyApIHtcbiAgICAgICAgICAgIGN1ckdQb2ludCA9IGdQb2ludHNbIGkgXTtcbiAgICAgICAgICAgIHVwZGF0ZUdQb2ludCA9IHBvaW50c0xpc3QuZ2V0QnlJZCggY3VyR1BvaW50LmlkICk7XG5cbiAgICAgICAgICAgIGlmICggdXBkYXRlR1BvaW50ICkge1xuICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgdHJhY2tpbmcgdGhlIHBvaW50ZXIuLi51cGRhdGUgaXRcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuaW5zaWRlRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RQb3MgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQubGFzdFRpbWUgPSB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MgPSBjdXJHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG5cbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQgPSB1cGRhdGVHUG9pbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZm9yIHRyYWNraW5nIGFuZCBhZGQgdG8gdGhlIHRyYWNraW5nIGxpc3RcbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQuY2FwdHVyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQuaW5zaWRlRWxlbWVudFByZXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQuaW5zaWRlRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RhcnRUcmFja2luZ1BvaW50ZXIoIHBvaW50c0xpc3QsIGN1ckdQb2ludCApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbnRlclxuICAgICAgICAgICAgaWYgKCB0cmFja2VyLmVudGVySGFuZGxlciApIHtcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGUgPSB0cmFja2VyLmVudGVySGFuZGxlcihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogICAgICAgICAgY3VyR1BvaW50LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogICAgICAgICAgICAgZ2V0UG9pbnRSZWxhdGl2ZVRvQWJzb2x1dGUoIGN1ckdQb2ludC5jdXJyZW50UG9zLCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6ICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyczogICAgICAgICAgICAgdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyQ291bnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZUVsZW1lbnRQcmVzc2VkOiBjdXJHUG9pbnQuaW5zaWRlRWxlbWVudFByZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25Eb3duQW55OiAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zICE9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIGN1ckdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyXG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hdGluZyBET00gZXZlbnQuXG4gICAgICogQHBhcmFtIHtBcnJheS48T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50Pn0gZ1BvaW50c1xuICAgICAqICAgICAgR2VzdHVyZSBwb2ludHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGVQb2ludGVyc0V4aXQoIHRyYWNrZXIsIGV2ZW50LCBnUG9pbnRzICkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBUSElTWyB0cmFja2VyLmhhc2ggXSxcbiAgICAgICAgICAgIHBvaW50c0xpc3QgPSB0cmFja2VyLmdldEFjdGl2ZVBvaW50ZXJzTGlzdEJ5VHlwZSggZ1BvaW50c1sgMCBdLnR5cGUgKSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBnUG9pbnRDb3VudCA9IGdQb2ludHMubGVuZ3RoLFxuICAgICAgICAgICAgY3VyR1BvaW50LFxuICAgICAgICAgICAgdXBkYXRlR1BvaW50LFxuICAgICAgICAgICAgcHJvcGFnYXRlO1xuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZ1BvaW50Q291bnQ7IGkrKyApIHtcbiAgICAgICAgICAgIGN1ckdQb2ludCA9IGdQb2ludHNbIGkgXTtcbiAgICAgICAgICAgIHVwZGF0ZUdQb2ludCA9IHBvaW50c0xpc3QuZ2V0QnlJZCggY3VyR1BvaW50LmlkICk7XG5cbiAgICAgICAgICAgIGlmICggdXBkYXRlR1BvaW50ICkge1xuICAgICAgICAgICAgICAgIC8vIEFscmVhZHkgdHJhY2tpbmcgdGhlIHBvaW50ZXIuIElmIGNhcHR1cmVkIHRoZW4gdXBkYXRlIGl0LCBlbHNlIHN0b3AgdHJhY2tpbmcgaXRcbiAgICAgICAgICAgICAgICBpZiAoIHVwZGF0ZUdQb2ludC5jYXB0dXJlZCApIHtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RQb3MgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RUaW1lID0gdXBkYXRlR1BvaW50LmN1cnJlbnRUaW1lO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFBvcyA9IGN1ckdQb2ludC5jdXJyZW50UG9zO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcFRyYWNraW5nUG9pbnRlciggcG9pbnRzTGlzdCwgdXBkYXRlR1BvaW50ICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VyR1BvaW50ID0gdXBkYXRlR1BvaW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFeGl0XG4gICAgICAgICAgICBpZiAoIHRyYWNrZXIuZXhpdEhhbmRsZXIgKSB7XG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5leGl0SGFuZGxlcihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogICAgICAgICAgY3VyR1BvaW50LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogICAgICAgICAgICAgZ2V0UG9pbnRSZWxhdGl2ZVRvQWJzb2x1dGUoIGN1ckdQb2ludC5jdXJyZW50UG9zLCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6ICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyczogICAgICAgICAgICAgdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyQ291bnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZUVsZW1lbnRQcmVzc2VkOiB1cGRhdGVHUG9pbnQgPyB1cGRhdGVHUG9pbnQuaW5zaWRlRWxlbWVudFByZXNzZWQgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkRvd25Bbnk6ICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgIT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoRXZlbnQ6ICAgICAgICAgY3VyR1BvaW50LnR5cGUgPT09ICd0b3VjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlclxuICAgICAqICAgICBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAqICAgICBBIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYXRpbmcgRE9NIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7QXJyYXkuPE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludD59IGdQb2ludHNcbiAgICAgKiAgICAgIEdlc3R1cmUgcG9pbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGJ1dHRvbkNoYW5nZWRcbiAgICAgKiAgICAgIFRoZSBidXR0b24gaW52b2x2ZWQgaW4gdGhlIGV2ZW50OiAtMTogbm9uZSwgMDogcHJpbWFyeS9sZWZ0LCAxOiBhdXgvbWlkZGxlLCAyOiBzZWNvbmRhcnkvcmlnaHQsIDM6IFgxL2JhY2ssIDQ6IFgyL2ZvcndhcmQsIDU6IHBlbiBlcmFzZXIuXG4gICAgICogICAgICBOb3RlIG9uIGNob3JkZWQgYnV0dG9uIHByZXNzZXMgKGEgYnV0dG9uIHByZXNzZWQgd2hlbiBhbm90aGVyIGJ1dHRvbiBpcyBhbHJlYWR5IHByZXNzZWQpOiBJbiB0aGUgVzNDIFBvaW50ZXIgRXZlbnRzIG1vZGVsLFxuICAgICAqICAgICAgb25seSBvbmUgcG9pbnRlcmRvd24vcG9pbnRlcnVwIGV2ZW50IGNvbWJvIGlzIGZpcmVkLiBDaG9yZGVkIGJ1dHRvbiBzdGF0ZSBjaGFuZ2VzIGluc3RlYWQgZmlyZSBwb2ludGVybW92ZSBldmVudHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gVHJ1ZSBpZiBwb2ludGVycyBzaG91bGQgYmUgY2FwdHVyZWQgdG8gdGhlIHRyYWNrZWQgZWxlbWVudCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXJzRG93biggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMsIGJ1dHRvbkNoYW5nZWQgKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRyYWNrZXIuaGFzaCBdLFxuICAgICAgICAgICAgcHJvcGFnYXRlLFxuICAgICAgICAgICAgcG9pbnRzTGlzdCA9IHRyYWNrZXIuZ2V0QWN0aXZlUG9pbnRlcnNMaXN0QnlUeXBlKCBnUG9pbnRzWyAwIF0udHlwZSApLFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIGdQb2ludENvdW50ID0gZ1BvaW50cy5sZW5ndGgsXG4gICAgICAgICAgICBjdXJHUG9pbnQsXG4gICAgICAgICAgICB1cGRhdGVHUG9pbnQ7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgZXZlbnQuYnV0dG9ucyAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgPSBldmVudC5idXR0b25zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCAkLkJyb3dzZXIudmVuZG9yID09PSAkLkJST1dTRVJTLklFICYmICQuQnJvd3Nlci52ZXJzaW9uIDwgOSApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zICs9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMSApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXV4XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyArPSA0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgKz0gMjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSAzICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBYMSAoQmFjaylcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zICs9IDg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gNCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWDIgKEZvcndhcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyArPSAxNjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSA1ICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBQZW4gRXJhc2VyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyArPSAzMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgfD0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSAxICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBdXhcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIHw9IDQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMiApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyB8PSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDMgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFgxIChCYWNrKVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgfD0gODtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSA0ICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBYMiAoRm9yd2FyZClcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIHw9IDE2O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDUgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBlbiBFcmFzZXJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIHw9IDMyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgY2FwdHVyZSBhbmQgdHJhY2sgcHJpbWFyeSBidXR0b24sIHBlbiwgYW5kIHRvdWNoIGNvbnRhY3RzXG4gICAgICAgIGlmICggYnV0dG9uQ2hhbmdlZCAhPT0gMCApIHtcbiAgICAgICAgICAgIC8vIEF1eCBQcmVzc1xuICAgICAgICAgICAgaWYgKCB0cmFja2VyLm5vblByaW1hcnlQcmVzc0hhbmRsZXIgKSB7XG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5ub25QcmltYXJ5UHJlc3NIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICBnUG9pbnRzWyAwIF0udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggZ1BvaW50c1sgMCBdLmN1cnJlbnRQb3MsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiAgICAgICAgICAgICAgIGJ1dHRvbkNoYW5nZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIGdQb2ludHNbIDAgXS50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBnUG9pbnRDb3VudDsgaSsrICkge1xuICAgICAgICAgICAgY3VyR1BvaW50ID0gZ1BvaW50c1sgaSBdO1xuICAgICAgICAgICAgdXBkYXRlR1BvaW50ID0gcG9pbnRzTGlzdC5nZXRCeUlkKCBjdXJHUG9pbnQuaWQgKTtcblxuICAgICAgICAgICAgaWYgKCB1cGRhdGVHUG9pbnQgKSB7XG4gICAgICAgICAgICAgICAgLy8gQWxyZWFkeSB0cmFja2luZyB0aGUgcG9pbnRlci4uLnVwZGF0ZSBpdFxuICAgICAgICAgICAgICAgIHVwZGF0ZUdQb2ludC5jYXB0dXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuaW5zaWRlRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LmNvbnRhY3RQb3MgPSBjdXJHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY29udGFjdFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RQb3MgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQubGFzdFRpbWUgPSB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MgPSBjdXJHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG5cbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQgPSB1cGRhdGVHUG9pbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZm9yIHRyYWNraW5nIGFuZCBhZGQgdG8gdGhlIHRyYWNraW5nIGxpc3QgKG5vIHBvaW50ZXJvdmVyIG9yIHBvaW50ZXJtb3ZlIGV2ZW50IG9jY3VycmVkIGJlZm9yZSB0aGlzKVxuICAgICAgICAgICAgICAgIGN1ckdQb2ludC5jYXB0dXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3VyR1BvaW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjdXJHUG9pbnQuaW5zaWRlRWxlbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RhcnRUcmFja2luZ1BvaW50ZXIoIHBvaW50c0xpc3QsIGN1ckdQb2ludCApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwb2ludHNMaXN0LmNvbnRhY3RzKys7XG4gICAgICAgICAgICAvLyQuY29uc29sZS5sb2coJ2NvbnRhY3RzKysgJywgcG9pbnRzTGlzdC5jb250YWN0cyk7XG5cbiAgICAgICAgICAgIGlmICggdHJhY2tlci5kcmFnSGFuZGxlciB8fCB0cmFja2VyLmRyYWdFbmRIYW5kbGVyIHx8IHRyYWNrZXIucGluY2hIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgICQuTW91c2VUcmFja2VyLmdlc3R1cmVQb2ludFZlbG9jaXR5VHJhY2tlci5hZGRQb2ludCggdHJhY2tlciwgY3VyR1BvaW50ICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggcG9pbnRzTGlzdC5jb250YWN0cyA9PT0gMSApIHtcbiAgICAgICAgICAgICAgICAvLyBQcmVzc1xuICAgICAgICAgICAgICAgIGlmICggdHJhY2tlci5wcmVzc0hhbmRsZXIgKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIucHJlc3NIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICBjdXJHUG9pbnQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogICAgICAgICAgICAgZ2V0UG9pbnRSZWxhdGl2ZVRvQWJzb2x1dGUoIGN1ckdQb2ludC5jb250YWN0UG9zLCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hFdmVudDogICAgICAgICBjdXJHUG9pbnQudHlwZSA9PT0gJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAgICAgICAgICAgICB0cmFja2VyLnVzZXJEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBwb2ludHNMaXN0LmNvbnRhY3RzID09PSAyICkge1xuICAgICAgICAgICAgICAgIGlmICggdHJhY2tlci5waW5jaEhhbmRsZXIgJiYgY3VyR1BvaW50LnR5cGUgPT09ICd0b3VjaCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZm9yIHBpbmNoXG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLnBpbmNoR1BvaW50cyA9IHBvaW50c0xpc3QuYXNBcnJheSgpO1xuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5sYXN0UGluY2hEaXN0ID0gZGVsZWdhdGUuY3VycmVudFBpbmNoRGlzdCA9IGRlbGVnYXRlLnBpbmNoR1BvaW50c1sgMCBdLmN1cnJlbnRQb3MuZGlzdGFuY2VUbyggZGVsZWdhdGUucGluY2hHUG9pbnRzWyAxIF0uY3VycmVudFBvcyApO1xuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5sYXN0UGluY2hDZW50ZXIgPSBkZWxlZ2F0ZS5jdXJyZW50UGluY2hDZW50ZXIgPSBnZXRDZW50ZXJQb2ludCggZGVsZWdhdGUucGluY2hHUG9pbnRzWyAwIF0uY3VycmVudFBvcywgZGVsZWdhdGUucGluY2hHUG9pbnRzWyAxIF0uY3VycmVudFBvcyApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyXG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50XG4gICAgICogICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hdGluZyBET00gZXZlbnQuXG4gICAgICogQHBhcmFtIHtBcnJheS48T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXIuR2VzdHVyZVBvaW50Pn0gZ1BvaW50c1xuICAgICAqICAgICAgR2VzdHVyZSBwb2ludHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudC5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gYnV0dG9uQ2hhbmdlZFxuICAgICAqICAgICAgVGhlIGJ1dHRvbiBpbnZvbHZlZCBpbiB0aGUgZXZlbnQ6IC0xOiBub25lLCAwOiBwcmltYXJ5L2xlZnQsIDE6IGF1eC9taWRkbGUsIDI6IHNlY29uZGFyeS9yaWdodCwgMzogWDEvYmFjaywgNDogWDIvZm9yd2FyZCwgNTogcGVuIGVyYXNlci5cbiAgICAgKiAgICAgIE5vdGUgb24gY2hvcmRlZCBidXR0b24gcHJlc3NlcyAoYSBidXR0b24gcHJlc3NlZCB3aGVuIGFub3RoZXIgYnV0dG9uIGlzIGFscmVhZHkgcHJlc3NlZCk6IEluIHRoZSBXM0MgUG9pbnRlciBFdmVudHMgbW9kZWwsXG4gICAgICogICAgICBvbmx5IG9uZSBwb2ludGVyZG93bi9wb2ludGVydXAgZXZlbnQgY29tYm8gaXMgZmlyZWQuIENob3JkZWQgYnV0dG9uIHN0YXRlIGNoYW5nZXMgaW5zdGVhZCBmaXJlIHBvaW50ZXJtb3ZlIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufSBUcnVlIGlmIHBvaW50ZXIgY2FwdHVyZSBzaG91bGQgYmUgcmVsZWFzZWQgZnJvbSB0aGUgdHJhY2tlZCBlbGVtZW50LCBvdGhlcndpc2UgZmFsc2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9pbnRlcnNVcCggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMsIGJ1dHRvbkNoYW5nZWQgKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IFRISVNbIHRyYWNrZXIuaGFzaCBdLFxuICAgICAgICAgICAgcG9pbnRzTGlzdCA9IHRyYWNrZXIuZ2V0QWN0aXZlUG9pbnRlcnNMaXN0QnlUeXBlKCBnUG9pbnRzWyAwIF0udHlwZSApLFxuICAgICAgICAgICAgcHJvcGFnYXRlLFxuICAgICAgICAgICAgaW5zaWRlRWxlbWVudFJlbGVhc2VkLFxuICAgICAgICAgICAgcmVsZWFzZVBvaW50LFxuICAgICAgICAgICAgcmVsZWFzZVRpbWUsXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgZ1BvaW50Q291bnQgPSBnUG9pbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1ckdQb2ludCxcbiAgICAgICAgICAgIHVwZGF0ZUdQb2ludCxcbiAgICAgICAgICAgIHJlbGVhc2VDYXB0dXJlID0gZmFsc2UsXG4gICAgICAgICAgICB3YXNDYXB0dXJlZCA9IGZhbHNlLFxuICAgICAgICAgICAgcXVpY2s7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgZXZlbnQuYnV0dG9ucyAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgPSBldmVudC5idXR0b25zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCAkLkJyb3dzZXIudmVuZG9yID09PSAkLkJST1dTRVJTLklFICYmICQuQnJvd3Nlci52ZXJzaW9uIDwgOSApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFByaW1hcnlcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMSApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXV4XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyAtPSA0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgLT0gMjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSAzICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBYMSAoQmFjaylcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIC09IDg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gNCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWDIgKEZvcndhcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyAtPSAxNjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSA1ICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBQZW4gRXJhc2VyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyAtPSAzMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgXj0gfjE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gMSApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXV4XG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyBePSB+NDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBidXR0b25DaGFuZ2VkID09PSAyICkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zIF49IH4yO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGJ1dHRvbkNoYW5nZWQgPT09IDMgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFgxIChCYWNrKVxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgXj0gfjg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gNCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWDIgKEZvcndhcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyBePSB+MTY7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnV0dG9uQ2hhbmdlZCA9PT0gNSApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUGVuIEVyYXNlclxuICAgICAgICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgXj0gfjMyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgY2FwdHVyZSBhbmQgdHJhY2sgcHJpbWFyeSBidXR0b24sIHBlbiwgYW5kIHRvdWNoIGNvbnRhY3RzXG4gICAgICAgIGlmICggYnV0dG9uQ2hhbmdlZCAhPT0gMCApIHtcbiAgICAgICAgICAgIC8vIEF1eCBSZWxlYXNlXG4gICAgICAgICAgICBpZiAoIHRyYWNrZXIubm9uUHJpbWFyeVJlbGVhc2VIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIubm9uUHJpbWFyeVJlbGVhc2VIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogICAgICAgICAgIGdQb2ludHNbIDAgXS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggIGdQb2ludHNbIDAgXS5jdXJyZW50UG9zLCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogICAgICAgICAgICAgICAgYnV0dG9uQ2hhbmdlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6ICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgICBnUG9pbnRzWyAwIF0udHlwZSA9PT0gJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgICB0cmFja2VyLnVzZXJEYXRhXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZ1BvaW50Q291bnQ7IGkrKyApIHtcbiAgICAgICAgICAgIGN1ckdQb2ludCA9IGdQb2ludHNbIGkgXTtcbiAgICAgICAgICAgIHVwZGF0ZUdQb2ludCA9IHBvaW50c0xpc3QuZ2V0QnlJZCggY3VyR1BvaW50LmlkICk7XG5cbiAgICAgICAgICAgIGlmICggdXBkYXRlR1BvaW50ICkge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcG9pbnRlciwgc3RvcCB0cmFja2luZyBpdCBpZiBub3Qgc3RpbGwgaW4gdGhpcyBlbGVtZW50XG4gICAgICAgICAgICAgICAgaWYgKCB1cGRhdGVHUG9pbnQuY2FwdHVyZWQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUdQb2ludC5jYXB0dXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZWxlYXNlQ2FwdHVyZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHdhc0NhcHR1cmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RQb3MgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQubGFzdFRpbWUgPSB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MgPSBjdXJHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgaWYgKCAhdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3BUcmFja2luZ1BvaW50ZXIoIHBvaW50c0xpc3QsIHVwZGF0ZUdQb2ludCApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlbGVhc2VQb2ludCA9IHVwZGF0ZUdQb2ludC5jdXJyZW50UG9zO1xuICAgICAgICAgICAgICAgIHJlbGVhc2VUaW1lID0gdXBkYXRlR1BvaW50LmN1cnJlbnRUaW1lO1xuXG4gICAgICAgICAgICAgICAgaWYgKCB3YXNDYXB0dXJlZCApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUG9pbnRlciB3YXMgYWN0aXZhdGVkIGluIG91ciBlbGVtZW50IGJ1dCBjb3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBhbnkgZWxlbWVudCBzaW5jZSBldmVudHMgYXJlIGNhcHR1cmVkIHRvIG91ciBlbGVtZW50XG5cbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzTGlzdC5jb250YWN0cy0tO1xuICAgICAgICAgICAgICAgICAgICAvLyQuY29uc29sZS5sb2coJ2NvbnRhY3RzLS0gJywgcG9pbnRzTGlzdC5jb250YWN0cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFja2VyLmRyYWdIYW5kbGVyIHx8IHRyYWNrZXIuZHJhZ0VuZEhhbmRsZXIgfHwgdHJhY2tlci5waW5jaEhhbmRsZXIgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkLk1vdXNlVHJhY2tlci5nZXN0dXJlUG9pbnRWZWxvY2l0eVRyYWNrZXIucmVtb3ZlUG9pbnQoIHRyYWNrZXIsIHVwZGF0ZUdQb2ludCApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwb2ludHNMaXN0LmNvbnRhY3RzID09PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIChwcmVzc2VkIGluIG91ciBlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFja2VyLnJlbGVhc2VIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIucmVsZWFzZUhhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICAgdXBkYXRlR1BvaW50LnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogICAgICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCByZWxlYXNlUG9pbnQsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVFbGVtZW50UHJlc3NlZDogIHVwZGF0ZUdQb2ludC5pbnNpZGVFbGVtZW50UHJlc3NlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZUVsZW1lbnRSZWxlYXNlZDogdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoRXZlbnQ6ICAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHJhZyBFbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHJhY2tlci5kcmFnRW5kSGFuZGxlciAmJiAhdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MuZXF1YWxzKCB1cGRhdGVHUG9pbnQuY29udGFjdFBvcyApICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIuZHJhZ0VuZEhhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCB1cGRhdGVHUG9pbnQuY3VycmVudFBvcywgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZDogICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LnNwZWVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAgICAgICAgICAgIHVwZGF0ZUdQb2ludC5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogICAgICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoRXZlbnQ6ICAgICAgICAgdXBkYXRlR1BvaW50LnR5cGUgPT09ICd0b3VjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3BhZ2F0ZSA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGljayAvIERvdWJsZS1DbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIHRyYWNrZXIuY2xpY2tIYW5kbGVyIHx8IHRyYWNrZXIuZGJsQ2xpY2tIYW5kbGVyICkgJiYgdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpY2sgPSByZWxlYXNlVGltZSAtIHVwZGF0ZUdQb2ludC5jb250YWN0VGltZSA8PSB0cmFja2VyLmNsaWNrVGltZVRocmVzaG9sZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY29udGFjdFBvcy5kaXN0YW5jZVRvKCByZWxlYXNlUG9pbnQgKSA8PSB0cmFja2VyLmNsaWNrRGlzdFRocmVzaG9sZDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFja2VyLmNsaWNrSGFuZGxlciApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5jbGlja0hhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWNrOiAgICAgICAgICAgICAgICBxdWljayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogICAgICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvdWJsZS1DbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHJhY2tlci5kYmxDbGlja0hhbmRsZXIgJiYgcXVpY2sgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuY2xpY2tzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcG9pbnRzTGlzdC5jbGlja3MgPT09IDEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5sYXN0Q2xpY2tQb3MgPSByZWxlYXNlUG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmpzaGludCBsb29wZnVuYzp0cnVlKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmRibENsaWNrVGltZU91dCA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuY2xpY2tzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRyYWNrZXIuZGJsQ2xpY2tUaW1lVGhyZXNob2xkICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmpzaGludCBsb29wZnVuYzpmYWxzZSovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBvaW50c0xpc3QuY2xpY2tzID09PSAyICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KCBkZWxlZ2F0ZS5kYmxDbGlja1RpbWVPdXQgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50c0xpc3QuY2xpY2tzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVsZWdhdGUubGFzdENsaWNrUG9zLmRpc3RhbmNlVG8oIHJlbGVhc2VQb2ludCApIDw9IHRyYWNrZXIuZGJsQ2xpY2tEaXN0VGhyZXNob2xkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIuZGJsQ2xpY2tIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICB1cGRhdGVHUG9pbnQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQ6ICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmxhc3RDbGlja1BvcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBvaW50c0xpc3QuY29udGFjdHMgPT09IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRyYWNrZXIucGluY2hIYW5kbGVyICYmIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IGZvciBwaW5jaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLnBpbmNoR1BvaW50cyA9IHBvaW50c0xpc3QuYXNBcnJheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmxhc3RQaW5jaERpc3QgPSBkZWxlZ2F0ZS5jdXJyZW50UGluY2hEaXN0ID0gZGVsZWdhdGUucGluY2hHUG9pbnRzWyAwIF0uY3VycmVudFBvcy5kaXN0YW5jZVRvKCBkZWxlZ2F0ZS5waW5jaEdQb2ludHNbIDEgXS5jdXJyZW50UG9zICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUubGFzdFBpbmNoQ2VudGVyID0gZGVsZWdhdGUuY3VycmVudFBpbmNoQ2VudGVyID0gZ2V0Q2VudGVyUG9pbnQoIGRlbGVnYXRlLnBpbmNoR1BvaW50c1sgMCBdLmN1cnJlbnRQb3MsIGRlbGVnYXRlLnBpbmNoR1BvaW50c1sgMSBdLmN1cnJlbnRQb3MgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBvaW50ZXIgd2FzIGFjdGl2YXRlZCBpbiBhbm90aGVyIGVsZW1lbnQgYnV0IHJlbW92ZWQgaW4gb3VyIGVsZW1lbnRcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIChwcmVzc2VkIGluIGFub3RoZXIgZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFja2VyLnJlbGVhc2VIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5yZWxlYXNlSGFuZGxlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgICB1cGRhdGVHUG9pbnQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggcmVsZWFzZVBvaW50LCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogICAgICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2lkZUVsZW1lbnRQcmVzc2VkOiAgdXBkYXRlR1BvaW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGVFbGVtZW50UmVsZWFzZWQ6IHVwZGF0ZUdQb2ludC5pbnNpZGVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoRXZlbnQ6ICAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuY2FuY2VsRXZlbnQoIGV2ZW50ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVsZWFzZUNhcHR1cmU7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBDYWxsIHdoZW4gcG9pbnRlcihzKSBjaGFuZ2UgY29vcmRpbmF0ZXMsIGJ1dHRvbiBzdGF0ZSwgcHJlc3N1cmUsIHRpbHQsIG9yIGNvbnRhY3QgZ2VvbWV0cnkgKGUuZy4gd2lkdGggYW5kIGhlaWdodClcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGlubmVyXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlclxuICAgICAqICAgICBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBldmVudFxuICAgICAqICAgICBBIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYXRpbmcgRE9NIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7QXJyYXkuPE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludD59IGdQb2ludHNcbiAgICAgKiAgICAgIEdlc3R1cmUgcG9pbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlUG9pbnRlcnNNb3ZlKCB0cmFja2VyLCBldmVudCwgZ1BvaW50cyApIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gVEhJU1sgdHJhY2tlci5oYXNoIF0sXG4gICAgICAgICAgICBwb2ludHNMaXN0ID0gdHJhY2tlci5nZXRBY3RpdmVQb2ludGVyc0xpc3RCeVR5cGUoIGdQb2ludHNbIDAgXS50eXBlICksXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgZ1BvaW50Q291bnQgPSBnUG9pbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1ckdQb2ludCxcbiAgICAgICAgICAgIHVwZGF0ZUdQb2ludCxcbiAgICAgICAgICAgIGdQb2ludEFycmF5LFxuICAgICAgICAgICAgZGVsdGEsXG4gICAgICAgICAgICBwcm9wYWdhdGU7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgZXZlbnQuYnV0dG9ucyAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICBwb2ludHNMaXN0LmJ1dHRvbnMgPSBldmVudC5idXR0b25zO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBnUG9pbnRDb3VudDsgaSsrICkge1xuICAgICAgICAgICAgY3VyR1BvaW50ID0gZ1BvaW50c1sgaSBdO1xuICAgICAgICAgICAgdXBkYXRlR1BvaW50ID0gcG9pbnRzTGlzdC5nZXRCeUlkKCBjdXJHUG9pbnQuaWQgKTtcblxuICAgICAgICAgICAgaWYgKCB1cGRhdGVHUG9pbnQgKSB7XG4gICAgICAgICAgICAgICAgLy8gQWxyZWFkeSB0cmFja2luZyB0aGUgcG9pbnRlci4uLnVwZGF0ZSBpdFxuICAgICAgICAgICAgICAgIGlmICggY3VyR1BvaW50Lmhhc093blByb3BlcnR5KCAnaXNQcmltYXJ5JyApICkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuaXNQcmltYXJ5ID0gY3VyR1BvaW50LmlzUHJpbWFyeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50Lmxhc3RQb3MgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQubGFzdFRpbWUgPSB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICAgICAgdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MgPSBjdXJHUG9pbnQuY3VycmVudFBvcztcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuY3VycmVudFRpbWUgPSBjdXJHUG9pbnQuY3VycmVudFRpbWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZm9yIHRyYWNraW5nIGFuZCBhZGQgdG8gdGhlIHRyYWNraW5nIGxpc3QgKG5vIHBvaW50ZXJvdmVyIG9yIHBvaW50ZXJkb3duIGV2ZW50IG9jY3VycmVkIGJlZm9yZSB0aGlzKVxuICAgICAgICAgICAgICAgIGN1ckdQb2ludC5jYXB0dXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGN1ckdQb2ludC5pbnNpZGVFbGVtZW50UHJlc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGN1ckdQb2ludC5pbnNpZGVFbGVtZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdGFydFRyYWNraW5nUG9pbnRlciggcG9pbnRzTGlzdCwgY3VyR1BvaW50ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9wIChtb3VzZSBvbmx5KVxuICAgICAgICBpZiAoIHRyYWNrZXIuc3RvcEhhbmRsZXIgJiYgZ1BvaW50c1sgMCBdLnR5cGUgPT09ICdtb3VzZScgKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoIHRyYWNrZXIuc3RvcFRpbWVPdXQgKTtcbiAgICAgICAgICAgIHRyYWNrZXIuc3RvcFRpbWVPdXQgPSBzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVQb2ludGVyU3RvcCggdHJhY2tlciwgZXZlbnQsIGdQb2ludHNbIDAgXS50eXBlICk7XG4gICAgICAgICAgICB9LCB0cmFja2VyLnN0b3BEZWxheSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBwb2ludHNMaXN0LmNvbnRhY3RzID09PSAwICkge1xuICAgICAgICAgICAgLy8gTW92ZSAobm8gY29udGFjdHM6IGhvdmVyaW5nIG1vdXNlIG9yIG90aGVyIGhvdmVyLWNhcGFibGUgZGV2aWNlKVxuICAgICAgICAgICAgaWYgKCB0cmFja2VyLm1vdmVIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIubW92ZUhhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgIGdQb2ludHNbIDAgXS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCBnUG9pbnRzWyAwIF0uY3VycmVudFBvcywgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIGdQb2ludHNbIDAgXS50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICggcG9pbnRzTGlzdC5jb250YWN0cyA9PT0gMSApIHtcbiAgICAgICAgICAgIC8vIE1vdmUgKDEgY29udGFjdClcbiAgICAgICAgICAgIGlmICggdHJhY2tlci5tb3ZlSGFuZGxlciApIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQgPSBwb2ludHNMaXN0LmFzQXJyYXkoKVsgMCBdO1xuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIubW92ZUhhbmRsZXIoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCB1cGRhdGVHUG9pbnQuY3VycmVudFBvcywgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIHVwZGF0ZUdQb2ludC50eXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCBwcm9wYWdhdGUgPT09IGZhbHNlICkge1xuICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRHJhZ1xuICAgICAgICAgICAgaWYgKCB0cmFja2VyLmRyYWdIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUdQb2ludCA9IHBvaW50c0xpc3QuYXNBcnJheSgpWyAwIF07XG4gICAgICAgICAgICAgICAgZGVsdGEgPSB1cGRhdGVHUG9pbnQuY3VycmVudFBvcy5taW51cyggdXBkYXRlR1BvaW50Lmxhc3RQb3MgKTtcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGUgPSB0cmFja2VyLmRyYWdIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudFNvdXJjZTogICAgICAgICAgdHJhY2tlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICB1cGRhdGVHUG9pbnQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggdXBkYXRlR1BvaW50LmN1cnJlbnRQb3MsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogICAgICAgICAgICAgIHBvaW50c0xpc3QuYnV0dG9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhOiAgICAgICAgICAgICAgICBkZWx0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiAgICAgICAgICAgICAgICB1cGRhdGVHUG9pbnQuc3BlZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICAgICAgICAgICAgdXBkYXRlR1BvaW50LmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0OiAgICAgICAgICAgICAgICBldmVudC5zaGlmdEtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hFdmVudDogICAgICAgICB1cGRhdGVHUG9pbnQudHlwZSA9PT0gJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAgICAgICAgICAgICB0cmFja2VyLnVzZXJEYXRhXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIHBvaW50c0xpc3QuY29udGFjdHMgPT09IDIgKSB7XG4gICAgICAgICAgICAvLyBNb3ZlICgyIGNvbnRhY3RzLCB1c2UgY2VudGVyKVxuICAgICAgICAgICAgaWYgKCB0cmFja2VyLm1vdmVIYW5kbGVyICkge1xuICAgICAgICAgICAgICAgIGdQb2ludEFycmF5ID0gcG9pbnRzTGlzdC5hc0FycmF5KCk7XG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlID0gdHJhY2tlci5tb3ZlSGFuZGxlcihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZTogICAgICAgICAgZ1BvaW50QXJyYXlbIDAgXS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCBnZXRDZW50ZXJQb2ludCggZ1BvaW50QXJyYXlbIDAgXS5jdXJyZW50UG9zLCBnUG9pbnRBcnJheVsgMSBdLmN1cnJlbnRQb3MgKSwgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiAgICAgICAgICAgICAgcG9pbnRzTGlzdC5idXR0b25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIGdQb2ludEFycmF5WyAwIF0udHlwZSA9PT0gJ3RvdWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiAgICAgICAgICAgICB0cmFja2VyLnVzZXJEYXRhXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICggcHJvcGFnYXRlID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgICAgICAgICAgJC5jYW5jZWxFdmVudCggZXZlbnQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFBpbmNoXG4gICAgICAgICAgICBpZiAoIHRyYWNrZXIucGluY2hIYW5kbGVyICYmIGdQb2ludHNbIDAgXS50eXBlID09PSAndG91Y2gnICkge1xuICAgICAgICAgICAgICAgIGRlbHRhID0gZGVsZWdhdGUucGluY2hHUG9pbnRzWyAwIF0uY3VycmVudFBvcy5kaXN0YW5jZVRvKCBkZWxlZ2F0ZS5waW5jaEdQb2ludHNbIDEgXS5jdXJyZW50UG9zICk7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWx0YSAhPSBkZWxlZ2F0ZS5jdXJyZW50UGluY2hEaXN0ICkge1xuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5sYXN0UGluY2hEaXN0ID0gZGVsZWdhdGUuY3VycmVudFBpbmNoRGlzdDtcbiAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUuY3VycmVudFBpbmNoRGlzdCA9IGRlbHRhO1xuICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5sYXN0UGluY2hDZW50ZXIgPSBkZWxlZ2F0ZS5jdXJyZW50UGluY2hDZW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmN1cnJlbnRQaW5jaENlbnRlciA9IGdldENlbnRlclBvaW50KCBkZWxlZ2F0ZS5waW5jaEdQb2ludHNbIDAgXS5jdXJyZW50UG9zLCBkZWxlZ2F0ZS5waW5jaEdQb2ludHNbIDEgXS5jdXJyZW50UG9zICk7XG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZSA9IHRyYWNrZXIucGluY2hIYW5kbGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50U291cmNlOiAgICAgICAgICB0cmFja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJUeXBlOiAgICAgICAgICAndG91Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlc3R1cmVQb2ludHM6ICAgICAgICBkZWxlZ2F0ZS5waW5jaEdQb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENlbnRlcjogICAgICAgICAgIGdldFBvaW50UmVsYXRpdmVUb0Fic29sdXRlKCBkZWxlZ2F0ZS5sYXN0UGluY2hDZW50ZXIsIHRyYWNrZXIuZWxlbWVudCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogICAgICAgICAgICAgICBnZXRQb2ludFJlbGF0aXZlVG9BYnNvbHV0ZSggZGVsZWdhdGUuY3VycmVudFBpbmNoQ2VudGVyLCB0cmFja2VyLmVsZW1lbnQgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0RGlzdGFuY2U6ICAgICAgICAgZGVsZWdhdGUubGFzdFBpbmNoRGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZTogICAgICAgICAgICAgZGVsZWdhdGUuY3VycmVudFBpbmNoRGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogICAgICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGF0YTogICAgICAgICAgICAgdHJhY2tlci51c2VyRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3BhZ2F0ZSA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkLmNhbmNlbEV2ZW50KCBldmVudCApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBpbm5lclxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IHRyYWNrZXJcbiAgICAgKiAgICAgQSByZWZlcmVuY2UgdG8gdGhlIE1vdXNlVHJhY2tlciBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXZlbnRcbiAgICAgKiAgICAgQSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmF0aW5nIERPTSBldmVudC5cbiAgICAgKiBAcGFyYW0ge0FycmF5LjxPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlci5HZXN0dXJlUG9pbnQ+fSBnUG9pbnRzXG4gICAgICogICAgICBHZXN0dXJlIHBvaW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVBvaW50ZXJzQ2FuY2VsKCB0cmFja2VyLCBldmVudCwgZ1BvaW50cyApIHtcbiAgICAgICAgdXBkYXRlUG9pbnRlcnNVcCggdHJhY2tlciwgZXZlbnQsIGdQb2ludHMsIDAgKTtcbiAgICAgICAgdXBkYXRlUG9pbnRlcnNFeGl0KCB0cmFja2VyLCBldmVudCwgZ1BvaW50cyApO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAaW5uZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVQb2ludGVyU3RvcCggdHJhY2tlciwgb3JpZ2luYWxNb3ZlRXZlbnQsIHBvaW50ZXJUeXBlICkge1xuICAgICAgICBpZiAoIHRyYWNrZXIuc3RvcEhhbmRsZXIgKSB7XG4gICAgICAgICAgICB0cmFja2VyLnN0b3BIYW5kbGVyKCB7XG4gICAgICAgICAgICAgICAgZXZlbnRTb3VyY2U6ICAgICAgICAgIHRyYWNrZXIsXG4gICAgICAgICAgICAgICAgcG9pbnRlclR5cGU6ICAgICAgICAgIHBvaW50ZXJUeXBlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAgICAgICAgICAgICBnZXRNb3VzZVJlbGF0aXZlKCBvcmlnaW5hbE1vdmVFdmVudCwgdHJhY2tlci5lbGVtZW50ICksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogICAgICAgICAgICAgIHRyYWNrZXIuZ2V0QWN0aXZlUG9pbnRlcnNMaXN0QnlUeXBlKCBwb2ludGVyVHlwZSApLmJ1dHRvbnMsXG4gICAgICAgICAgICAgICAgaXNUb3VjaEV2ZW50OiAgICAgICAgIHBvaW50ZXJUeXBlID09PSAndG91Y2gnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6ICAgICAgICBvcmlnaW5hbE1vdmVFdmVudCxcbiAgICAgICAgICAgICAgICBwcmV2ZW50RGVmYXVsdEFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlckRhdGE6ICAgICAgICAgICAgIHRyYWNrZXIudXNlckRhdGFcbiAgICAgICAgICAgIH0gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBUcnVlIGlmIGluc2lkZSBhbiBpZnJhbWUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAvLyBAbWVtYmVyIHtCb29sZWFufSBpc0luSWZyYW1lXG4gICAgLy8gQHByaXZhdGVcbiAgICAvLyBAaW5uZXJcbiAgICB2YXIgaXNJbklmcmFtZSA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9KSgpO1xuIFxuICAgIC8vIEBmdW5jdGlvblxuICAgIC8vIEBwcml2YXRlXG4gICAgLy8gQGlubmVyXG4gICAgLy8gQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgdGhlIHRhcmdldCBoYXMgYWNjZXNzIHJpZ2h0cyB0byBldmVudHMsIG90aGVyd2lzZSBmYWxzZS5cbiAgICBmdW5jdGlvbiBjYW5BY2Nlc3NFdmVudHMgKHRhcmdldCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hZGRFdmVudExpc3RlbmVyICYmIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbn0gKCBPcGVuU2VhZHJhZ29uICkgKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBDb250cm9sXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHN1cHBvcnRlZCBsb2NhdGlvbnMgd2hlcmUgY29udHJvbHMgY2FuIGJlIGFuY2hvcmVkLlxuICogVGhlIGFuY2hvcmluZyBpcyBhbHdheXMgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lci5cbiAqIEBtZW1iZXIgQ29udHJvbEFuY2hvclxuICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAqIEBzdGF0aWNcbiAqIEB0eXBlIHtPYmplY3R9XG4gKiBAcHJvcGVydHkge051bWJlcn0gTk9ORVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IFRPUF9MRUZUXG4gKiBAcHJvcGVydHkge051bWJlcn0gVE9QX1JJR0hUXG4gKiBAcHJvcGVydHkge051bWJlcn0gQk9UVE9NX0xFRlRcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBCT1RUT01fUklHSFRcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBBQlNPTFVURVxuICovXG4kLkNvbnRyb2xBbmNob3IgPSB7XG4gICAgTk9ORTogMCxcbiAgICBUT1BfTEVGVDogMSxcbiAgICBUT1BfUklHSFQ6IDIsXG4gICAgQk9UVE9NX1JJR0hUOiAzLFxuICAgIEJPVFRPTV9MRUZUOiA0LFxuICAgIEFCU09MVVRFOiA1XG59O1xuXG4vKipcbiAqIEBjbGFzcyBDb250cm9sXG4gKiBAY2xhc3NkZXNjIEEgQ29udHJvbCByZXByZXNlbnRzIGFueSBpbnRlcmZhY2UgZWxlbWVudCB3aGljaCBpcyBtZWFudCB0byBhbGxvdyB0aGUgdXNlclxuICogdG8gaW50ZXJhY3Qgd2l0aCB0aGUgem9vbWFibGUgaW50ZXJmYWNlLiBBbnkgY29udHJvbCBjYW4gYmUgYW5jaG9yZWQgdG8gYW55XG4gKiBlbGVtZW50LlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSB0aGUgY29udHJvbCBlbGVtZW50IHRvIGJlIGFuY2hvcmVkIGluIHRoZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge09iamVjdCB9IG9wdGlvbnMgLSBBbGwgcmVxdWlyZWQgYW5kIG9wdGlvbmFsIHNldHRpbmdzIGZvciBjb25maWd1cmluZyBhIGNvbnRyb2wgZWxlbWVudC5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Db250cm9sQW5jaG9yfSBbb3B0aW9ucy5hbmNob3I9T3BlblNlYWRyYWdvbi5Db250cm9sQW5jaG9yLk5PTkVdIC0gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb250cm9sXG4gKiAgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYXR0YWNoVG9WaWV3ZXI9dHJ1ZV0gLSBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBhZGRlZCBkaXJlY3RseSB0byB0aGUgdmlld2VyLCBvclxuICogIGRpcmVjdGx5IHRvIHRoZSBjb250YWluZXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYXV0b0ZhZGU9dHJ1ZV0gLSBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBoYXZlIHRoZSBhdXRvZmFkZSBiZWhhdmlvclxuICogQHBhcmFtIHtFbGVtZW50fSBjb250YWluZXIgLSB0aGUgZWxlbWVudCB0byBjb250cm9sIHdpbGwgYmUgYW5jaG9yZWQgdG9vLlxuICovXG4kLkNvbnRyb2wgPSBmdW5jdGlvbiAoIGVsZW1lbnQsIG9wdGlvbnMsIGNvbnRhaW5lciApIHtcbiAgICB2YXIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ251bWJlcicpXG4gICAge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoXCJQYXNzaW5nIGFuIGFuY2hvciBkaXJlY3RseSBpbnRvIHRoZSBPcGVuU2VhZHJhZ29uLkNvbnRyb2wgY29uc3RydWN0b3IgaXMgZGVwcmVjYXRlZDsgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwbGVhc2UgdXNlIGFuIG9wdGlvbnMgb2JqZWN0IGluc3RlYWQuICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlN1cHBvcnQgZm9yIHRoaXMgZGVwcmVjYXRlZCB2YXJpYW50IGlzIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBEZWNlbWJlciAyMDEzXCIpO1xuICAgICAgICAgb3B0aW9ucyA9IHthbmNob3I6IG9wdGlvbnN9O1xuICAgIH1cbiAgICBvcHRpb25zLmF0dGFjaFRvVmlld2VyID0gKHR5cGVvZiBvcHRpb25zLmF0dGFjaFRvVmlld2VyID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogb3B0aW9ucy5hdHRhY2hUb1ZpZXdlcjtcbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZSBjb250cm9sIHNob3VsZCBoYXZlIGF1dG9mYWRlIGJlaGF2aW9yLlxuICAgICAqIEBtZW1iZXIge0Jvb2xlYW59IGF1dG9GYWRlXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQ29udHJvbCNcbiAgICAgKi9cbiAgICB0aGlzLmF1dG9GYWRlID0gKHR5cGVvZiBvcHRpb25zLmF1dG9GYWRlID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogb3B0aW9ucy5hdXRvRmFkZTtcbiAgICAvKipcbiAgICAgKiBUaGUgZWxlbWVudCBwcm92aWRpbmcgdGhlIHVzZXIgaW50ZXJmYWNlIHdpdGggc29tZSB0eXBlIG9mIGNvbnRyb2wgKGUuZy4gYSB6b29tLWluIGJ1dHRvbikuXG4gICAgICogQG1lbWJlciB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkNvbnRyb2wjXG4gICAgICovXG4gICAgdGhpcy5lbGVtZW50ICAgID0gZWxlbWVudDtcbiAgICAvKipcbiAgICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIENvbnRyb2wgcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lci5cbiAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLkNvbnRyb2xBbmNob3J9IGFuY2hvclxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkNvbnRyb2wjXG4gICAgICovXG4gICAgdGhpcy5hbmNob3IgICAgID0gb3B0aW9ucy5hbmNob3I7XG4gICAgLyoqXG4gICAgICogVGhlIENvbnRyb2wncyBjb250YWluaW5nIGVsZW1lbnQuXG4gICAgICogQG1lbWJlciB7RWxlbWVudH0gY29udGFpbmVyXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQ29udHJvbCNcbiAgICAgKi9cbiAgICB0aGlzLmNvbnRhaW5lciAgPSBjb250YWluZXI7XG4gICAgLyoqXG4gICAgICogQSBuZXV0cmFsIGVsZW1lbnQgc3Vycm91bmRpbmcgdGhlIGNvbnRyb2wgZWxlbWVudC5cbiAgICAgKiBAbWVtYmVyIHtFbGVtZW50fSB3cmFwcGVyXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQ29udHJvbCNcbiAgICAgKi9cbiAgICBpZiAoIHRoaXMuYW5jaG9yID09ICQuQ29udHJvbEFuY2hvci5BQlNPTFVURSApIHtcbiAgICAgICAgdGhpcy53cmFwcGVyICAgID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcbiAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUudG9wID0gdHlwZW9mICggb3B0aW9ucy50b3AgKSAgPT0gXCJudW1iZXJcIiA/ICggb3B0aW9ucy50b3AgKyAncHgnICkgOiBvcHRpb25zLnRvcDtcbiAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmxlZnQgID0gdHlwZW9mICggb3B0aW9ucy5sZWZ0ICkgID09IFwibnVtYmVyXCIgPyAgKG9wdGlvbnMubGVmdCArICdweCcgKSA6IG9wdGlvbnMubGVmdDtcbiAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmhlaWdodCA9IHR5cGVvZiAoIG9wdGlvbnMuaGVpZ2h0ICkgID09IFwibnVtYmVyXCIgPyAoIG9wdGlvbnMuaGVpZ2h0ICsgJ3B4JyApIDogb3B0aW9ucy5oZWlnaHQ7XG4gICAgICAgIHRoaXMud3JhcHBlci5zdHlsZS53aWR0aCAgPSB0eXBlb2YgKCBvcHRpb25zLndpZHRoICkgID09IFwibnVtYmVyXCIgPyAoIG9wdGlvbnMud2lkdGggKyAncHgnICkgOiBvcHRpb25zLndpZHRoO1xuICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLnBhZGRpbmcgPSBcIjBweFwiO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IFwiMHB4XCI7XG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gXCIwcHhcIjtcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndyYXBwZXIgICAgPSAkLm1ha2VOZXV0cmFsRWxlbWVudCggXCJkaXZcIiApO1xuICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG4gICAgICAgIGlmICggdGhpcy5hbmNob3IgPT0gJC5Db250cm9sQW5jaG9yLk5PTkUgKSB7XG4gICAgICAgICAgICAvLyBJRTYgZml4XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUud2lkdGggPSB0aGlzLndyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy53cmFwcGVyLmFwcGVuZENoaWxkKCB0aGlzLmVsZW1lbnQgKTtcblxuICAgIGlmIChvcHRpb25zLmF0dGFjaFRvVmlld2VyICkge1xuICAgICAgICBpZiAoIHRoaXMuYW5jaG9yID09ICQuQ29udHJvbEFuY2hvci5UT1BfUklHSFQgfHxcbiAgICAgICAgICAgICB0aGlzLmFuY2hvciA9PSAkLkNvbnRyb2xBbmNob3IuQk9UVE9NX1JJR0hUICkge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlcixcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5maXJzdENoaWxkXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoIHRoaXMud3JhcHBlciApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKCB0aGlzLndyYXBwZXIgKTtcbiAgICB9XG59O1xuXG4vKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uQ29udHJvbC5wcm90b3R5cGUgKi9cbiQuQ29udHJvbC5wcm90b3R5cGUgPSB7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRoZSBjb250cm9sIGZyb20gdGhlIGNvbnRhaW5lci5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBkZXN0cm95OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy53cmFwcGVyLnJlbW92ZUNoaWxkKCB0aGlzLmVsZW1lbnQgKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQoIHRoaXMud3JhcHBlciApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBjb250cm9sIGlzIGN1cnJlbnRseSB2aXNpYmxlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgY3VycmVubHkgdmlzaWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIGlzVmlzaWJsZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZXIuc3R5bGUuZGlzcGxheSAhPSBcIm5vbmVcIjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY29udHJvbC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZpc2libGUgLSB0cnVlIHRvIG1ha2UgdmlzaWJsZSwgZmFsc2UgdG8gaGlkZS5cbiAgICAgKi9cbiAgICBzZXRWaXNpYmxlOiBmdW5jdGlvbiggdmlzaWJsZSApIHtcbiAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID9cbiAgICAgICAgICAgICggdGhpcy5hbmNob3IgPT0gJC5Db250cm9sQW5jaG9yLkFCU09MVVRFID8gJ2Jsb2NrJyA6ICdpbmxpbmUtYmxvY2snICkgOlxuICAgICAgICAgICAgXCJub25lXCI7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG9wYWNpdHkgbGV2ZWwgZm9yIHRoZSBjb250cm9sLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBvcGFjdGl5IC0gYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDAgaW5jbHVzaXZlbHkuXG4gICAgICovXG4gICAgc2V0T3BhY2l0eTogZnVuY3Rpb24oIG9wYWNpdHkgKSB7XG4gICAgICAgIGlmICggdGhpcy5lbGVtZW50WyAkLlNJR05BTCBdICYmICQuQnJvd3Nlci52ZW5kb3IgPT0gJC5CUk9XU0VSUy5JRSApIHtcbiAgICAgICAgICAgICQuc2V0RWxlbWVudE9wYWNpdHkoIHRoaXMuZWxlbWVudCwgb3BhY2l0eSwgdHJ1ZSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJC5zZXRFbGVtZW50T3BhY2l0eSggdGhpcy53cmFwcGVyLCBvcGFjaXR5LCB0cnVlICk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIENvbnRyb2xEb2NrXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuICAgIC8qKlxuICAgICAqIEBjbGFzcyBDb250cm9sRG9ja1xuICAgICAqIEBjbGFzc2Rlc2MgUHJvdmlkZXMgYSBjb250YWluZXIgZWxlbWVudCAoYSAmbHQ7Zm9ybSZndDsgZWxlbWVudCkgd2l0aCBzdXBwb3J0IGZvciB0aGUgbGF5b3V0IG9mIGNvbnRyb2wgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqL1xuICAgICQuQ29udHJvbERvY2sgPSBmdW5jdGlvbiggb3B0aW9ucyApe1xuICAgICAgICB2YXIgbGF5b3V0cyA9IFsgJ3RvcGxlZnQnLCAndG9wcmlnaHQnLCAnYm90dG9tcmlnaHQnLCAnYm90dG9tbGVmdCddLFxuICAgICAgICAgICAgbGF5b3V0LFxuICAgICAgICAgICAgaTtcblxuICAgICAgICAkLmV4dGVuZCggdHJ1ZSwgdGhpcywge1xuICAgICAgICAgICAgaWQ6ICdjb250cm9sZG9jay0nKyQubm93KCkrJy0nK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwMDAwKSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogJC5tYWtlTmV1dHJhbEVsZW1lbnQoICdkaXYnICksXG4gICAgICAgICAgICBjb250cm9sczogW11cbiAgICAgICAgfSwgb3B0aW9ucyApO1xuXG4gICAgICAgIC8vIERpc2FibGUgdGhlIGZvcm0ncyBzdWJtaXQ7IG90aGVyd2lzZSBidXR0b24gY2xpY2tzIGFuZCByZXR1cm4ga2V5c1xuICAgICAgICAvLyBjYW4gdHJpZ2dlciBpdC5cbiAgICAgICAgdGhpcy5jb250YWluZXIub25zdWJtaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiggdGhpcy5lbGVtZW50ICl7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQgPSAkLmdldEVsZW1lbnQoIHRoaXMuZWxlbWVudCApO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCB0aGlzLmNvbnRhaW5lciApO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yKCBpID0gMDsgaSA8IGxheW91dHMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgICAgIGxheW91dCA9IGxheW91dHNbIGkgXTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHNbIGxheW91dCBdID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbHNbIGxheW91dCBdLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgICAgIGlmICggbGF5b3V0Lm1hdGNoKCAnbGVmdCcgKSApe1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbIGxheW91dCBdLnN0eWxlLmxlZnQgPSAnMHB4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICggbGF5b3V0Lm1hdGNoKCAncmlnaHQnICkgKXtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzWyBsYXlvdXQgXS5zdHlsZS5yaWdodCA9ICcwcHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCBsYXlvdXQubWF0Y2goICd0b3AnICkgKXtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzWyBsYXlvdXQgXS5zdHlsZS50b3AgPSAnMHB4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICggbGF5b3V0Lm1hdGNoKCAnYm90dG9tJyApICl7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sc1sgbGF5b3V0IF0uc3R5bGUuYm90dG9tID0gJzBweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCggdGhpcy5jb250cm9scy50b3BsZWZ0ICk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKCB0aGlzLmNvbnRyb2xzLnRvcHJpZ2h0ICk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKCB0aGlzLmNvbnRyb2xzLmJvdHRvbXJpZ2h0ICk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKCB0aGlzLmNvbnRyb2xzLmJvdHRvbWxlZnQgKTtcbiAgICB9O1xuXG4gICAgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLkNvbnRyb2xEb2NrLnByb3RvdHlwZSAqL1xuICAgICQuQ29udHJvbERvY2sucHJvdG90eXBlID0ge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICovXG4gICAgICAgIGFkZENvbnRyb2w6IGZ1bmN0aW9uICggZWxlbWVudCwgY29udHJvbE9wdGlvbnMgKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgICAgICB2YXIgZGl2ID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCBnZXRDb250cm9sSW5kZXgoIHRoaXMsIGVsZW1lbnQgKSA+PSAwICkge1xuICAgICAgICAgICAgICAgIHJldHVybjsgICAgIC8vIHRoZXkncmUgdHJ5aW5nIHRvIGFkZCBhIGR1cGxpY2F0ZSBjb250cm9sXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAoIGNvbnRyb2xPcHRpb25zLmFuY2hvciApIHtcbiAgICAgICAgICAgICAgICBjYXNlICQuQ29udHJvbEFuY2hvci5UT1BfUklHSFQ6XG4gICAgICAgICAgICAgICAgICAgIGRpdiA9IHRoaXMuY29udHJvbHMudG9wcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0ID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5wYWRkaW5nVG9wID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkNvbnRyb2xBbmNob3IuQk9UVE9NX1JJR0hUOlxuICAgICAgICAgICAgICAgICAgICBkaXYgPSB0aGlzLmNvbnRyb2xzLmJvdHRvbXJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucGFkZGluZ0JvdHRvbSA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJC5Db250cm9sQW5jaG9yLkJPVFRPTV9MRUZUOlxuICAgICAgICAgICAgICAgICAgICBkaXYgPSB0aGlzLmNvbnRyb2xzLmJvdHRvbWxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQgPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnBhZGRpbmdCb3R0b20gPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICQuQ29udHJvbEFuY2hvci5UT1BfTEVGVDpcbiAgICAgICAgICAgICAgICAgICAgZGl2ID0gdGhpcy5jb250cm9scy50b3BsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0ID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5wYWRkaW5nVG9wID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkNvbnRyb2xBbmNob3IuQUJTT0xVVEU6XG4gICAgICAgICAgICAgICAgICAgIGRpdiA9IHRoaXMuY29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucGFkZGluZyA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY2FzZSAkLkNvbnRyb2xBbmNob3IuTk9ORTpcbiAgICAgICAgICAgICAgICAgICAgZGl2ID0gdGhpcy5jb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5wYWRkaW5nID0gXCIwcHhcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29udHJvbHMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgJC5Db250cm9sKCBlbGVtZW50LCBjb250cm9sT3B0aW9ucywgZGl2IClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLkNvbnRyb2xEb2NrfSBDaGFpbmFibGUuXG4gICAgICAgICAqL1xuICAgICAgICByZW1vdmVDb250cm9sOiBmdW5jdGlvbiAoIGVsZW1lbnQgKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgICAgICB2YXIgaSA9IGdldENvbnRyb2xJbmRleCggdGhpcywgZWxlbWVudCApO1xuXG4gICAgICAgICAgICBpZiAoIGkgPj0gMCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xzWyBpIF0uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHMuc3BsaWNlKCBpLCAxICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5Db250cm9sRG9ja30gQ2hhaW5hYmxlLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xlYXJDb250cm9sczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgd2hpbGUgKCB0aGlzLmNvbnRyb2xzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9scy5wb3AoKS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgYXJlQ29udHJvbHNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaTtcblxuICAgICAgICAgICAgZm9yICggaSA9IHRoaXMuY29udHJvbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmNvbnRyb2xzWyBpIF0uaXNWaXNpYmxlKCkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLkNvbnRyb2xEb2NrfSBDaGFpbmFibGUuXG4gICAgICAgICAqL1xuICAgICAgICBzZXRDb250cm9sc0VuYWJsZWQ6IGZ1bmN0aW9uKCBlbmFibGVkICkge1xuICAgICAgICAgICAgdmFyIGk7XG5cbiAgICAgICAgICAgIGZvciAoIGkgPSB0aGlzLmNvbnRyb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNbIGkgXS5zZXRWaXNpYmxlKCBlbmFibGVkICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gVXRpbGl0eSBtZXRob2RzXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGZ1bmN0aW9uIGdldENvbnRyb2xJbmRleCggZG9jaywgZWxlbWVudCApIHtcbiAgICAgICAgdmFyIGNvbnRyb2xzID0gZG9jay5jb250cm9scyxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgZm9yICggaSA9IGNvbnRyb2xzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICAgICAgaWYgKCBjb250cm9sc1sgaSBdLmVsZW1lbnQgPT0gZWxlbWVudCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gUGxhY2VtZW50XG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCQpIHtcblxuICAgIC8qKlxuICAgICAqIEFuIGVudW1lcmF0aW9uIG9mIHBvc2l0aW9ucyB0byBhbmNob3IgYW4gZWxlbWVudC5cbiAgICAgKiBAbWVtYmVyIFBsYWNlbWVudFxuICAgICAqIEBtZW1iZXJPZiBPcGVuU2VhZHJhZ29uXG4gICAgICogQHN0YXRpY1xuICAgICAqIEByZWFkb25seVxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IENFTlRFUlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IFRPUF9MRUZUXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBsYWNlbWVudH0gVE9QXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBsYWNlbWVudH0gVE9QX1JJR0hUXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBsYWNlbWVudH0gUklHSFRcbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBCT1RUT01fUklHSFRcbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBCT1RUT01cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBCT1RUT01fTEVGVFxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IExFRlRcbiAgICAgKi9cbiAgICAkLlBsYWNlbWVudCA9ICQuZnJlZXplT2JqZWN0KHtcbiAgICAgICAgQ0VOVEVSOiAgICAgICAwLFxuICAgICAgICBUT1BfTEVGVDogICAgIDEsXG4gICAgICAgIFRPUDogICAgICAgICAgMixcbiAgICAgICAgVE9QX1JJR0hUOiAgICAzLFxuICAgICAgICBSSUdIVDogICAgICAgIDQsXG4gICAgICAgIEJPVFRPTV9SSUdIVDogNSxcbiAgICAgICAgQk9UVE9NOiAgICAgICA2LFxuICAgICAgICBCT1RUT01fTEVGVDogIDcsXG4gICAgICAgIExFRlQ6ICAgICAgICAgOCxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgMDoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMToge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0hvcml6b250YWxseUNlbnRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1ZlcnRpY2FsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMjoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1ZlcnRpY2FsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMzoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNSaWdodDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1ZlcnRpY2FsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNDoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNSaWdodDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNToge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNSaWdodDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzQm90dG9tOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNjoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNIb3Jpem9udGFsbHlDZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzQm90dG9tOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgNzoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0hvcml6b250YWxseUNlbnRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzQm90dG9tOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgODoge1xuICAgICAgICAgICAgICAgIGlzTGVmdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc0hvcml6b250YWxseUNlbnRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1JpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc1RvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNWZXJ0aWNhbGx5Q2VudGVyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNCb3R0b206IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxufShPcGVuU2VhZHJhZ29uKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gVmlld2VyXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vLyBkaWN0aW9uYXJ5IGZyb20gaGFzaCB0byBwcml2YXRlIHByb3BlcnRpZXNcbnZhciBUSElTID0ge307XG52YXIgbmV4dEhhc2ggPSAxO1xuXG4vKipcbiAqXG4gKiBUaGUgbWFpbiBwb2ludCBvZiBlbnRyeSBpbnRvIGNyZWF0aW5nIGEgem9vbWFibGUgaW1hZ2Ugb24gdGhlIHBhZ2UuPGJyPlxuICogPGJyPlxuICogV2UgaGF2ZSBwcm92aWRlZCBhbiBpZGlvbWF0aWMgamF2YXNjcmlwdCBjb25zdHJ1Y3RvciB3aGljaCB0YWtlc1xuICogYSBzaW5nbGUgb2JqZWN0LCBidXQgc3RpbGwgc3VwcG9ydCB0aGUgbGVnYWN5IHBvc2l0aW9uYWwgYXJndW1lbnRzLjxicj5cbiAqIDxicj5cbiAqIFRoZSBvcHRpb25zIGJlbG93IGFyZSBnaXZlbiBpbiBvcmRlciB0aGF0IHRoZXkgYXBwZWFyZWQgaW4gdGhlIGNvbnN0cnVjdG9yXG4gKiBhcyBhcmd1bWVudHMgYW5kIHdlIHRyYW5zbGF0ZSBhIHBvc2l0aW9uYWwgY2FsbCBpbnRvIGFuIGlkaW9tYXRpYyBjYWxsLjxicj5cbiAqIDxicj5cbiAqIFRvIGNyZWF0ZSBhIHZpZXdlciwgeW91IGNhbiB1c2UgZWl0aGVyIG9mIHRoaXMgbWV0aG9kczo8YnI+XG4gKiA8dWw+XG4gKiA8bGk+PGNvZGU+dmFyIHZpZXdlciA9IG5ldyBPcGVuU2VhZHJhZ29uLlZpZXdlcihvcHRpb25zKTs8L2NvZGU+PC9saT5cbiAqIDxsaT48Y29kZT52YXIgdmlld2VyID0gT3BlblNlYWRyYWdvbihvcHRpb25zKTs8L2NvZGU+PC9saT5cbiAqIDwvdWw+XG4gKiBAY2xhc3MgVmlld2VyXG4gKiBAY2xhc3NkZXNjIFRoZSBtYWluIE9wZW5TZWFkcmFnb24gdmlld2VyIGNsYXNzLlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLkV2ZW50U291cmNlXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLkNvbnRyb2xEb2NrXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uT3B0aW9uc30gb3B0aW9ucyAtIFZpZXdlciBvcHRpb25zLlxuICpcbiAqKi9cbiQuVmlld2VyID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cbiAgICB2YXIgYXJncyAgPSBhcmd1bWVudHMsXG4gICAgICAgIF90aGlzID0gdGhpcyxcbiAgICAgICAgaTtcblxuXG4gICAgLy9iYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBwb3NpdGlvbmFsIGFyZ3Mgd2hpbGUgcHJlZmVyaW5nIG1vcmVcbiAgICAvL2lkaW9tYXRpYyBqYXZhc2NyaXB0IG9wdGlvbnMgb2JqZWN0IGFzIHRoZSBvbmx5IGFyZ3VtZW50XG4gICAgaWYoICEkLmlzUGxhaW5PYmplY3QoIG9wdGlvbnMgKSApe1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgaWQ6ICAgICAgICAgICAgICAgICBhcmdzWyAwIF0sXG4gICAgICAgICAgICB4bWxQYXRoOiAgICAgICAgICAgIGFyZ3MubGVuZ3RoID4gMSA/IGFyZ3NbIDEgXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHByZWZpeFVybDogICAgICAgICAgYXJncy5sZW5ndGggPiAyID8gYXJnc1sgMiBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udHJvbHM6ICAgICAgICAgICBhcmdzLmxlbmd0aCA+IDMgPyBhcmdzWyAzIF0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdmVybGF5czogICAgICAgICAgIGFyZ3MubGVuZ3RoID4gNCA/IGFyZ3NbIDQgXSA6IHVuZGVmaW5lZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vb3B0aW9ucy5jb25maWcgYW5kIHRoZSBnZW5lcmFsIGNvbmZpZyBhcmd1bWVudCBhcmUgZGVwcmVjYXRlZFxuICAgIC8vaW4gZmF2b3Igb2YgdGhlIG1vcmUgZGlyZWN0IHNwZWNpZmljYXRpb24gb2Ygb3B0aW9uYWwgc2V0dGluZ3NcbiAgICAvL2JlaW5nIHBhc3MgZGlyZWN0bHkgb24gdGhlIG9wdGlvbnMgb2JqZWN0XG4gICAgaWYgKCBvcHRpb25zLmNvbmZpZyApe1xuICAgICAgICAkLmV4dGVuZCggdHJ1ZSwgb3B0aW9ucywgb3B0aW9ucy5jb25maWcgKTtcbiAgICAgICAgZGVsZXRlIG9wdGlvbnMuY29uZmlnO1xuICAgIH1cblxuICAgIC8vUHVibGljIHByb3BlcnRpZXNcbiAgICAvL0FsbG93IHRoZSBvcHRpb25zIG9iamVjdCB0byBvdmVycmlkZSBnbG9iYWwgZGVmYXVsdHNcbiAgICAkLmV4dGVuZCggdHJ1ZSwgdGhpcywge1xuXG4gICAgICAgIC8vaW50ZXJuYWwgc3RhdGUgYW5kIGRvbSBpZGVudGlmaWVyc1xuICAgICAgICBpZDogICAgICAgICAgICAgb3B0aW9ucy5pZCxcbiAgICAgICAgaGFzaDogICAgICAgICAgIG9wdGlvbnMuaGFzaCB8fCBuZXh0SGFzaCsrLFxuXG4gICAgICAgIC8vZG9tIG5vZGVzXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgcGFyZW50IGVsZW1lbnQgb2YgdGhpcyBWaWV3ZXIgaW5zdGFuY2UsIHBhc3NlZCBpbiB3aGVuIHRoZSBWaWV3ZXIgd2FzIGNyZWF0ZWQuXG4gICAgICAgICAqIEBtZW1iZXIge0VsZW1lbnR9IGVsZW1lbnRcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgZWxlbWVudDogICAgICAgIG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBICZsdDtkaXYmZ3Q7IGVsZW1lbnQgKHByb3ZpZGVkIGJ5IHtAbGluayBPcGVuU2VhZHJhZ29uLkNvbnRyb2xEb2NrfSksIHRoZSBiYXNlIGVsZW1lbnQgb2YgdGhpcyBWaWV3ZXIgaW5zdGFuY2UuPGJyPjxicj5cbiAgICAgICAgICogQ2hpbGQgZWxlbWVudCBvZiB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjZWxlbWVudH0uXG4gICAgICAgICAqIEBtZW1iZXIge0VsZW1lbnR9IGNvbnRhaW5lclxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXIjXG4gICAgICAgICAqL1xuICAgICAgICBjb250YWluZXI6ICAgICAgbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgJmx0O2RpdiZndDsgZWxlbWVudCwgdGhlIGVsZW1lbnQgd2hlcmUgdXNlci1pbnB1dCBldmVudHMgYXJlIGhhbmRsZWQgZm9yIHBhbm5pbmcgYW5kIHpvb21pbmcuPGJyPjxicj5cbiAgICAgICAgICogQ2hpbGQgZWxlbWVudCBvZiB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY29udGFpbmVyfSxcbiAgICAgICAgICogcG9zaXRpb25lZCBvbiB0b3Agb2Yge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI2tleWJvYXJkQ29tbWFuZEFyZWF9Ljxicj48YnI+XG4gICAgICAgICAqIFRoZSBwYXJlbnQgb2Yge0BsaW5rIE9wZW5TZWFkcmFnb24uRHJhd2VyI2NhbnZhc30gaW5zdGFuY2VzLlxuICAgICAgICAgKiBAbWVtYmVyIHtFbGVtZW50fSBjYW52YXNcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgY2FudmFzOiAgICAgICAgIG51bGwsXG5cbiAgICAgICAgLy8gT3ZlcmxheXMgbGlzdC4gQW4gb3ZlcmxheSBhbGxvd3MgdG8gYWRkIGh0bWwgb24gdG9wIG9mIHRoZSB2aWV3ZXIuXG4gICAgICAgIG92ZXJsYXlzOiAgICAgICAgICAgW10sXG4gICAgICAgIC8vIENvbnRhaW5lciBpbnNpZGUgdGhlIGNhbnZhcyB3aGVyZSBvdmVybGF5cyBhcmUgZHJhd24uXG4gICAgICAgIG92ZXJsYXlzQ29udGFpbmVyOiAgbnVsbCxcblxuICAgICAgICAvL3ByaXZhdGUgc3RhdGUgcHJvcGVydGllc1xuICAgICAgICBwcmV2aW91c0JvZHk6ICAgW10sXG5cbiAgICAgICAgLy9UaGlzIHdhcyBvcmlnaW5hbGx5IGluaXRpYWxpemVkIGluIHRoZSBjb25zdHJ1Y3RvciBhbmQgc28gY291bGQgbmV2ZXJcbiAgICAgICAgLy9oYXZlIGFueXRoaW5nIGluIGl0LiAgbm93IGl0IGNhbiBiZWNhdXNlIHdlIGFsbG93IGl0IHRvIGJlIHNwZWNpZmllZFxuICAgICAgICAvL2luIHRoZSBvcHRpb25zIGFuZCBpcyBvbmx5IGVtcHR5IGJ5IGRlZmF1bHQgaWYgbm90IHNwZWNpZmllZC4gQWxzb1xuICAgICAgICAvL3RoaXMgYXJyYXkgd2FzIHJldHVybmVkIGZyb20gZ2V0X2NvbnRyb2xzIHdoaWNoIEkgZmluZCBjb25mdXNpbmdcbiAgICAgICAgLy9zaW5jZSB0aGlzIG9iamVjdCBoYXMgYSBjb250cm9scyBwcm9wZXJ0eSB3aGljaCBpcyB0cmVhdGVkIGluIG90aGVyXG4gICAgICAgIC8vZnVuY3Rpb25zIGxpa2UgY2xlYXJDb250cm9scy4gIEknbSByZW1vdmluZyB0aGUgYWNjZXNzb3JzLlxuICAgICAgICBjdXN0b21Db250cm9sczogW10sXG5cbiAgICAgICAgLy9UaGVzZSBhcmUgb3JpZ2luYWxseSBub3QgcGFydCBvcHRpb25zIGJ1dCBkZWNsYXJlZCBhcyBtZW1iZXJzXG4gICAgICAgIC8vaW4gaW5pdGlhbGl6ZS4gIEl0J3Mgc3RpbGwgY29uc2lkZXJlZCBpZGlvbWF0aWMgdG8gcHV0IHRoZW0gaGVyZVxuICAgICAgICBzb3VyY2U6ICAgICAgICAgbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhhbmRsZXMgcmVuZGVyaW5nIG9mIHRpbGVzIGluIHRoZSB2aWV3ZXIuIENyZWF0ZWQgZm9yIGVhY2ggVGlsZVNvdXJjZSBvcGVuZWQuXG4gICAgICAgICAqIEBtZW1iZXIge09wZW5TZWFkcmFnb24uRHJhd2VyfSBkcmF3ZXJcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgZHJhd2VyOiAgICAgICAgICAgICBudWxsLFxuICAgICAgICB3b3JsZDogICAgICAgICAgICAgIG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIYW5kbGVzIGNvb3JkaW5hdGUtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IC0gem9vbSwgcGFuLCByb3RhdGlvbiwgZXRjLiBDcmVhdGVkIGZvciBlYWNoIFRpbGVTb3VyY2Ugb3BlbmVkLlxuICAgICAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLlZpZXdwb3J0fSB2aWV3cG9ydFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXIjXG4gICAgICAgICAqL1xuICAgICAgICB2aWV3cG9ydDogICAgICAgbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09wZW5TZWFkcmFnb24uTmF2aWdhdG9yfSBuYXZpZ2F0b3JcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyI1xuICAgICAgICAgKi9cbiAgICAgICAgbmF2aWdhdG9yOiAgICAgIG51bGwsXG5cbiAgICAgICAgLy9BIGNvbGxlY3Rpb24gdmlld3BvcnQgaXMgYSBzZXBhcmF0ZSB2aWV3cG9ydCB1c2VkIHRvIHByb3ZpZGVcbiAgICAgICAgLy9zaW11bHRhbmVvdXMgcmVuZGVyaW5nIG9mIHNldHMgb2YgdGlsZXNcbiAgICAgICAgY29sbGVjdGlvblZpZXdwb3J0OiAgICAgbnVsbCxcbiAgICAgICAgY29sbGVjdGlvbkRyYXdlcjogICAgICAgbnVsbCxcblxuICAgICAgICAvL1VJIGltYWdlIHJlc291cmNlc1xuICAgICAgICAvL1RPRE86IHJlbmFtZSBuYXZJbWFnZXMgdG8gdWlJbWFnZXNcbiAgICAgICAgbmF2SW1hZ2VzOiAgICAgIG51bGwsXG5cbiAgICAgICAgLy9pbnRlcmZhY2UgYnV0dG9uIGNvbnRyb2xzXG4gICAgICAgIGJ1dHRvbnM6ICAgICAgICBudWxsLFxuXG4gICAgICAgIC8vVE9ETzogdGhpcyBpcyBkZWZ1bmN0IHNvIHNhZmVseSByZW1vdmUgaXRcbiAgICAgICAgcHJvZmlsZXI6ICAgICAgIG51bGxcblxuICAgIH0sICQuREVGQVVMVF9TRVRUSU5HUywgb3B0aW9ucyApO1xuXG4gICAgaWYgKCB0eXBlb2YoIHRoaXMuaGFzaCkgPT09IFwidW5kZWZpbmVkXCIgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgaGFzaCBtdXN0IGJlIGRlZmluZWQsIGVpdGhlciBieSBzcGVjaWZ5aW5nIG9wdGlvbnMuaWQgb3Igb3B0aW9ucy5oYXNoLlwiKTtcbiAgICB9XG4gICAgaWYgKCB0eXBlb2YoIFRISVNbIHRoaXMuaGFzaCBdICkgIT09IFwidW5kZWZpbmVkXCIgKSB7XG4gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdGhyb3cgYW4gZXJyb3IgaGVyZSwgYXMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBkaXNjYXJkZWRcbiAgICAgICAgLy8gdGhlIHByZXZpb3VzIHZpZXdlciB3aXRoIHRoZSBzYW1lIGhhc2ggYW5kIG5vdyB3YW50IHRvIHJlY3JlYXRlIGl0LlxuICAgICAgICAkLmNvbnNvbGUud2FybihcIkhhc2ggXCIgKyB0aGlzLmhhc2ggKyBcIiBoYXMgYWxyZWFkeSBiZWVuIHVzZWQuXCIpO1xuICAgIH1cblxuICAgIC8vUHJpdmF0ZSBzdGF0ZSBwcm9wZXJ0aWVzXG4gICAgVEhJU1sgdGhpcy5oYXNoIF0gPSB7XG4gICAgICAgIFwiZnNCb3VuZHNEZWx0YVwiOiAgICAgbmV3ICQuUG9pbnQoIDEsIDEgKSxcbiAgICAgICAgXCJwcmV2Q29udGFpbmVyU2l6ZVwiOiBudWxsLFxuICAgICAgICBcImFuaW1hdGluZ1wiOiAgICAgICAgIGZhbHNlLFxuICAgICAgICBcImZvcmNlUmVkcmF3XCI6ICAgICAgIGZhbHNlLFxuICAgICAgICBcIm1vdXNlSW5zaWRlXCI6ICAgICAgIGZhbHNlLFxuICAgICAgICBcImdyb3VwXCI6ICAgICAgICAgICAgIG51bGwsXG4gICAgICAgIC8vIHdoZXRoZXIgd2Ugc2hvdWxkIGJlIGNvbnRpbnVvdXNseSB6b29taW5nXG4gICAgICAgIFwiem9vbWluZ1wiOiAgICAgICAgICAgZmFsc2UsXG4gICAgICAgIC8vIGhvdyBtdWNoIHdlIHNob3VsZCBiZSBjb250aW51b3VzbHkgem9vbWluZyBieVxuICAgICAgICBcInpvb21GYWN0b3JcIjogICAgICAgIG51bGwsXG4gICAgICAgIFwibGFzdFpvb21UaW1lXCI6ICAgICAgbnVsbCxcbiAgICAgICAgXCJmdWxsUGFnZVwiOiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgXCJvbmZ1bGxzY3JlZW5jaGFuZ2VcIjogbnVsbFxuICAgIH07XG5cbiAgICB0aGlzLl9zZXF1ZW5jZUluZGV4ID0gMDtcbiAgICB0aGlzLl9maXJzdE9wZW4gPSB0cnVlO1xuICAgIHRoaXMuX3VwZGF0ZVJlcXVlc3RJZCA9IG51bGw7XG4gICAgdGhpcy5fbG9hZFF1ZXVlID0gW107XG4gICAgdGhpcy5jdXJyZW50T3ZlcmxheXMgPSBbXTtcblxuICAgIHRoaXMuX2xhc3RTY3JvbGxUaW1lID0gJC5ub3coKTsgLy8gdmFyaWFibGUgdXNlZCB0byBoZWxwIG5vcm1hbGl6ZSB0aGUgc2Nyb2xsIGV2ZW50IHNwZWVkIG9mIGRpZmZlcmVudCBkZXZpY2VzXG5cbiAgICAvL0luaGVyaXQgc29tZSBiZWhhdmlvcnMgYW5kIHByb3BlcnRpZXNcbiAgICAkLkV2ZW50U291cmNlLmNhbGwoIHRoaXMgKTtcblxuICAgIHRoaXMuYWRkSGFuZGxlciggJ29wZW4tZmFpbGVkJywgZnVuY3Rpb24gKCBldmVudCApIHtcbiAgICAgICAgdmFyIG1zZyA9ICQuZ2V0U3RyaW5nKCBcIkVycm9ycy5PcGVuRmFpbGVkXCIsIGV2ZW50LmV2ZW50U291cmNlLCBldmVudC5tZXNzYWdlKTtcbiAgICAgICAgX3RoaXMuX3Nob3dNZXNzYWdlKCBtc2cgKTtcbiAgICB9KTtcblxuICAgICQuQ29udHJvbERvY2suY2FsbCggdGhpcywgb3B0aW9ucyApO1xuXG4gICAgLy9EZWFsIHdpdGggdGlsZSBzb3VyY2VzXG4gICAgaWYgKCB0aGlzLnhtbFBhdGggICl7XG4gICAgICAgIC8vRGVwcmVjYXRlZCBvcHRpb24uICBOb3cgaXQgaXMgcHJlZmVycmVkIHRvIHVzZSB0aGUgdGlsZVNvdXJjZXMgb3B0aW9uXG4gICAgICAgIHRoaXMudGlsZVNvdXJjZXMgPSBbIHRoaXMueG1sUGF0aCBdO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudCAgICAgICAgICAgICAgPSB0aGlzLmVsZW1lbnQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHRoaXMuaWQgKTtcbiAgICB0aGlzLmNhbnZhcyAgICAgICAgICAgICAgID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcblxuICAgIHRoaXMuY2FudmFzLmNsYXNzTmFtZSA9IFwib3BlbnNlYWRyYWdvbi1jYW52YXNcIjtcbiAgICAoZnVuY3Rpb24oIHN0eWxlICl7XG4gICAgICAgIHN0eWxlLndpZHRoICAgID0gXCIxMDAlXCI7XG4gICAgICAgIHN0eWxlLmhlaWdodCAgID0gXCIxMDAlXCI7XG4gICAgICAgIHN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgICAgIHN0eWxlLnRvcCAgICAgID0gXCIwcHhcIjtcbiAgICAgICAgc3R5bGUubGVmdCAgICAgPSBcIjBweFwiO1xuICAgIH0odGhpcy5jYW52YXMuc3R5bGUpKTtcbiAgICAkLnNldEVsZW1lbnRUb3VjaEFjdGlvbk5vbmUoIHRoaXMuY2FudmFzICk7XG4gICAgaWYgKG9wdGlvbnMudGFiSW5kZXggIT09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5jYW52YXMudGFiSW5kZXggPSAob3B0aW9ucy50YWJJbmRleCA9PT0gdW5kZWZpbmVkID8gMCA6IG9wdGlvbnMudGFiSW5kZXgpO1xuICAgIH1cblxuICAgIC8vdGhlIGNvbnRhaW5lciBpcyBjcmVhdGVkIHRocm91Z2ggYXBwbHlpbmcgdGhlIENvbnRyb2xEb2NrIGNvbnN0cnVjdG9yIGFib3ZlXG4gICAgdGhpcy5jb250YWluZXIuY2xhc3NOYW1lID0gXCJvcGVuc2VhZHJhZ29uLWNvbnRhaW5lclwiO1xuICAgIChmdW5jdGlvbiggc3R5bGUgKXtcbiAgICAgICAgc3R5bGUud2lkdGggICAgID0gXCIxMDAlXCI7XG4gICAgICAgIHN0eWxlLmhlaWdodCAgICA9IFwiMTAwJVwiO1xuICAgICAgICBzdHlsZS5wb3NpdGlvbiAgPSBcInJlbGF0aXZlXCI7XG4gICAgICAgIHN0eWxlLm92ZXJmbG93ICA9IFwiaGlkZGVuXCI7XG4gICAgICAgIHN0eWxlLmxlZnQgICAgICA9IFwiMHB4XCI7XG4gICAgICAgIHN0eWxlLnRvcCAgICAgICA9IFwiMHB4XCI7XG4gICAgICAgIHN0eWxlLnRleHRBbGlnbiA9IFwibGVmdFwiOyAgLy8gbmVlZGVkIHRvIHByb3RlY3QgYWdhaW5zdFxuICAgIH0oIHRoaXMuY29udGFpbmVyLnN0eWxlICkpO1xuXG4gICAgdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKCB0aGlzLmNhbnZhcywgdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZCApO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCggdGhpcy5jb250YWluZXIgKTtcblxuICAgIC8vVXNlZCBmb3IgdG9nZ2xpbmcgYmV0d2VlbiBmdWxsc2NyZWVuIGFuZCBkZWZhdWx0IGNvbnRhaW5lciBzaXplXG4gICAgLy9UT0RPOiB0aGVzZSBjYW4gYmUgY2xvc3VyZSBwcml2YXRlIGFuZCBzaGFyZWQgYWNyb3NzIFZpZXdlclxuICAgIC8vICAgICAgaW5zdGFuY2VzLlxuICAgIHRoaXMuYm9keVdpZHRoICAgICAgPSBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoO1xuICAgIHRoaXMuYm9keUhlaWdodCAgICAgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodDtcbiAgICB0aGlzLmJvZHlPdmVyZmxvdyAgID0gZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdztcbiAgICB0aGlzLmRvY092ZXJmbG93ICAgID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93O1xuXG4gICAgdGhpcy5pbm5lclRyYWNrZXIgPSBuZXcgJC5Nb3VzZVRyYWNrZXIoe1xuICAgICAgICBlbGVtZW50OiAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLFxuICAgICAgICBzdGFydERpc2FibGVkOiAgICAgICAgICAgIHRoaXMubW91c2VOYXZFbmFibGVkID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6ICAgICAgIHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6ICAgICAgIHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICBkYmxDbGlja1RpbWVUaHJlc2hvbGQ6ICAgIHRoaXMuZGJsQ2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICBkYmxDbGlja0Rpc3RUaHJlc2hvbGQ6ICAgIHRoaXMuZGJsQ2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICBrZXlEb3duSGFuZGxlcjogICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzS2V5RG93biApLFxuICAgICAgICBrZXlIYW5kbGVyOiAgICAgICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzS2V5UHJlc3MgKSxcbiAgICAgICAgY2xpY2tIYW5kbGVyOiAgICAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNhbnZhc0NsaWNrICksXG4gICAgICAgIGRibENsaWNrSGFuZGxlcjogICAgICAgICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNEYmxDbGljayApLFxuICAgICAgICBkcmFnSGFuZGxlcjogICAgICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzRHJhZyApLFxuICAgICAgICBkcmFnRW5kSGFuZGxlcjogICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzRHJhZ0VuZCApLFxuICAgICAgICBlbnRlckhhbmRsZXI6ICAgICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzRW50ZXIgKSxcbiAgICAgICAgZXhpdEhhbmRsZXI6ICAgICAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNhbnZhc0V4aXQgKSxcbiAgICAgICAgcHJlc3NIYW5kbGVyOiAgICAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNhbnZhc1ByZXNzICksXG4gICAgICAgIHJlbGVhc2VIYW5kbGVyOiAgICAgICAgICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNSZWxlYXNlICksXG4gICAgICAgIG5vblByaW1hcnlQcmVzc0hhbmRsZXI6ICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNOb25QcmltYXJ5UHJlc3MgKSxcbiAgICAgICAgbm9uUHJpbWFyeVJlbGVhc2VIYW5kbGVyOiAkLmRlbGVnYXRlKCB0aGlzLCBvbkNhbnZhc05vblByaW1hcnlSZWxlYXNlICksXG4gICAgICAgIHNjcm9sbEhhbmRsZXI6ICAgICAgICAgICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNTY3JvbGwgKSxcbiAgICAgICAgcGluY2hIYW5kbGVyOiAgICAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNhbnZhc1BpbmNoIClcbiAgICB9KTtcblxuICAgIHRoaXMub3V0ZXJUcmFja2VyID0gbmV3ICQuTW91c2VUcmFja2VyKHtcbiAgICAgICAgZWxlbWVudDogICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgc3RhcnREaXNhYmxlZDogICAgICAgICB0aGlzLm1vdXNlTmF2RW5hYmxlZCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiAgICB0aGlzLmNsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgY2xpY2tEaXN0VGhyZXNob2xkOiAgICB0aGlzLmNsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgZGJsQ2xpY2tUaW1lVGhyZXNob2xkOiB0aGlzLmRibENsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgZGJsQ2xpY2tEaXN0VGhyZXNob2xkOiB0aGlzLmRibENsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgZW50ZXJIYW5kbGVyOiAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNvbnRhaW5lckVudGVyICksXG4gICAgICAgIGV4aXRIYW5kbGVyOiAgICAgICAgICAgJC5kZWxlZ2F0ZSggdGhpcywgb25Db250YWluZXJFeGl0IClcbiAgICB9KTtcblxuICAgIGlmKCB0aGlzLnRvb2xiYXIgKXtcbiAgICAgICAgdGhpcy50b29sYmFyID0gbmV3ICQuQ29udHJvbERvY2soeyBlbGVtZW50OiB0aGlzLnRvb2xiYXIgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5iaW5kU3RhbmRhcmRDb250cm9scygpO1xuXG4gICAgVEhJU1sgdGhpcy5oYXNoIF0ucHJldkNvbnRhaW5lclNpemUgPSBfZ2V0U2FmZUVsZW1TaXplKCB0aGlzLmNvbnRhaW5lciApO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSB3b3JsZFxuICAgIHRoaXMud29ybGQgPSBuZXcgJC5Xb3JsZCh7XG4gICAgICAgIHZpZXdlcjogdGhpc1xuICAgIH0pO1xuXG4gICAgdGhpcy53b3JsZC5hZGRIYW5kbGVyKCdhZGQtaXRlbScsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgbWFpbnRhaW4gdGhlIHNvdXJjZSBwcm9wZXJ0eVxuICAgICAgICBfdGhpcy5zb3VyY2UgPSBfdGhpcy53b3JsZC5nZXRJdGVtQXQoMCkuc291cmNlO1xuXG4gICAgICAgIFRISVNbIF90aGlzLmhhc2ggXS5mb3JjZVJlZHJhdyA9IHRydWU7XG5cbiAgICAgICAgaWYgKCFfdGhpcy5fdXBkYXRlUmVxdWVzdElkKSB7XG4gICAgICAgICAgICBfdGhpcy5fdXBkYXRlUmVxdWVzdElkID0gc2NoZWR1bGVVcGRhdGUoIF90aGlzLCB1cGRhdGVNdWx0aSApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmxkLmFkZEhhbmRsZXIoJ3JlbW92ZS1pdGVtJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBtYWludGFpbiB0aGUgc291cmNlIHByb3BlcnR5XG4gICAgICAgIGlmIChfdGhpcy53b3JsZC5nZXRJdGVtQ291bnQoKSkge1xuICAgICAgICAgICAgX3RoaXMuc291cmNlID0gX3RoaXMud29ybGQuZ2V0SXRlbUF0KDApLnNvdXJjZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLnNvdXJjZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBUSElTWyBfdGhpcy5oYXNoIF0uZm9yY2VSZWRyYXcgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy53b3JsZC5hZGRIYW5kbGVyKCdtZXRyaWNzLWNoYW5nZScsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGlmIChfdGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgICAgX3RoaXMudmlld3BvcnQuX3NldENvbnRlbnRCb3VuZHMoX3RoaXMud29ybGQuZ2V0SG9tZUJvdW5kcygpLCBfdGhpcy53b3JsZC5nZXRDb250ZW50RmFjdG9yKCkpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmxkLmFkZEhhbmRsZXIoJ2l0ZW0taW5kZXgtY2hhbmdlJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBtYWludGFpbiB0aGUgc291cmNlIHByb3BlcnR5XG4gICAgICAgIF90aGlzLnNvdXJjZSA9IF90aGlzLndvcmxkLmdldEl0ZW1BdCgwKS5zb3VyY2U7XG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHZpZXdwb3J0XG4gICAgdGhpcy52aWV3cG9ydCA9IG5ldyAkLlZpZXdwb3J0KHtcbiAgICAgICAgY29udGFpbmVyU2l6ZTogICAgICBUSElTWyB0aGlzLmhhc2ggXS5wcmV2Q29udGFpbmVyU2l6ZSxcbiAgICAgICAgc3ByaW5nU3RpZmZuZXNzOiAgICB0aGlzLnNwcmluZ1N0aWZmbmVzcyxcbiAgICAgICAgYW5pbWF0aW9uVGltZTogICAgICB0aGlzLmFuaW1hdGlvblRpbWUsXG4gICAgICAgIG1pblpvb21JbWFnZVJhdGlvOiAgdGhpcy5taW5ab29tSW1hZ2VSYXRpbyxcbiAgICAgICAgbWF4Wm9vbVBpeGVsUmF0aW86ICB0aGlzLm1heFpvb21QaXhlbFJhdGlvLFxuICAgICAgICB2aXNpYmlsaXR5UmF0aW86ICAgIHRoaXMudmlzaWJpbGl0eVJhdGlvLFxuICAgICAgICB3cmFwSG9yaXpvbnRhbDogICAgIHRoaXMud3JhcEhvcml6b250YWwsXG4gICAgICAgIHdyYXBWZXJ0aWNhbDogICAgICAgdGhpcy53cmFwVmVydGljYWwsXG4gICAgICAgIGRlZmF1bHRab29tTGV2ZWw6ICAgdGhpcy5kZWZhdWx0Wm9vbUxldmVsLFxuICAgICAgICBtaW5ab29tTGV2ZWw6ICAgICAgIHRoaXMubWluWm9vbUxldmVsLFxuICAgICAgICBtYXhab29tTGV2ZWw6ICAgICAgIHRoaXMubWF4Wm9vbUxldmVsLFxuICAgICAgICB2aWV3ZXI6ICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgIGRlZ3JlZXM6ICAgICAgICAgICAgdGhpcy5kZWdyZWVzLFxuICAgICAgICBuYXZpZ2F0b3JSb3RhdGU6ICAgIHRoaXMubmF2aWdhdG9yUm90YXRlLFxuICAgICAgICBob21lRmlsbHNWaWV3ZXI6ICAgIHRoaXMuaG9tZUZpbGxzVmlld2VyLFxuICAgICAgICBtYXJnaW5zOiAgICAgICAgICAgIHRoaXMudmlld3BvcnRNYXJnaW5zXG4gICAgfSk7XG5cbiAgICB0aGlzLnZpZXdwb3J0Ll9zZXRDb250ZW50Qm91bmRzKHRoaXMud29ybGQuZ2V0SG9tZUJvdW5kcygpLCB0aGlzLndvcmxkLmdldENvbnRlbnRGYWN0b3IoKSk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGltYWdlIGxvYWRlclxuICAgIHRoaXMuaW1hZ2VMb2FkZXIgPSBuZXcgJC5JbWFnZUxvYWRlcih7XG4gICAgICAgIGpvYkxpbWl0OiB0aGlzLmltYWdlTG9hZGVyTGltaXRcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgdGlsZSBjYWNoZVxuICAgIHRoaXMudGlsZUNhY2hlID0gbmV3ICQuVGlsZUNhY2hlKHtcbiAgICAgICAgbWF4SW1hZ2VDYWNoZUNvdW50OiB0aGlzLm1heEltYWdlQ2FjaGVDb3VudFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBkcmF3ZXJcbiAgICB0aGlzLmRyYXdlciA9IG5ldyAkLkRyYXdlcih7XG4gICAgICAgIHZpZXdlcjogICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgdmlld3BvcnQ6ICAgICAgICAgICB0aGlzLnZpZXdwb3J0LFxuICAgICAgICBlbGVtZW50OiAgICAgICAgICAgIHRoaXMuY2FudmFzLFxuICAgICAgICBkZWJ1Z0dyaWRDb2xvcjogICAgIHRoaXMuZGVidWdHcmlkQ29sb3JcbiAgICB9KTtcblxuICAgIC8vIE92ZXJsYXkgY29udGFpbmVyXG4gICAgdGhpcy5vdmVybGF5c0NvbnRhaW5lciAgICA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCBcImRpdlwiICk7XG4gICAgdGhpcy5jYW52YXMuYXBwZW5kQ2hpbGQoIHRoaXMub3ZlcmxheXNDb250YWluZXIgKTtcblxuICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBkcmF3ZXIsIHNlZSBpZiBpdCBzdXBwb3J0cyByb3RhdGUuIElmIG5vdCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgcm90YXRlIGJ1dHRvbnNcbiAgICBpZiAoIXRoaXMuZHJhd2VyLmNhblJvdGF0ZSgpKSB7XG4gICAgICAgIC8vIERpc2FibGUvcmVtb3ZlIHRoZSByb3RhdGUgbGVmdC9yaWdodCBidXR0b25zIHNpbmNlIHRoZXkgYXJlbid0IHN1cHBvcnRlZFxuICAgICAgICBpZiAodGhpcy5yb3RhdGVMZWZ0KSB7XG4gICAgICAgICAgICBpID0gdGhpcy5idXR0b25zLmJ1dHRvbnMuaW5kZXhPZih0aGlzLnJvdGF0ZUxlZnQpO1xuICAgICAgICAgICAgdGhpcy5idXR0b25zLmJ1dHRvbnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgdGhpcy5idXR0b25zLmVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5yb3RhdGVMZWZ0LmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdGF0ZVJpZ2h0KSB7XG4gICAgICAgICAgICBpID0gdGhpcy5idXR0b25zLmJ1dHRvbnMuaW5kZXhPZih0aGlzLnJvdGF0ZVJpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9ucy5idXR0b25zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9ucy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMucm90YXRlUmlnaHQuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL0luc3RhbnRpYXRlIGEgbmF2aWdhdG9yIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAoIHRoaXMuc2hvd05hdmlnYXRvcil7XG4gICAgICAgIHRoaXMubmF2aWdhdG9yID0gbmV3ICQuTmF2aWdhdG9yKHtcbiAgICAgICAgICAgIGlkOiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvcklkLFxuICAgICAgICAgICAgcG9zaXRpb246ICAgICAgICAgIHRoaXMubmF2aWdhdG9yUG9zaXRpb24sXG4gICAgICAgICAgICBzaXplUmF0aW86ICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTaXplUmF0aW8sXG4gICAgICAgICAgICBtYWludGFpblNpemVSYXRpbzogdGhpcy5uYXZpZ2F0b3JNYWludGFpblNpemVSYXRpbyxcbiAgICAgICAgICAgIHRvcDogICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvclRvcCxcbiAgICAgICAgICAgIGxlZnQ6ICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRvckxlZnQsXG4gICAgICAgICAgICB3aWR0aDogICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3JXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogICAgICAgICAgICB0aGlzLm5hdmlnYXRvckhlaWdodCxcbiAgICAgICAgICAgIGF1dG9SZXNpemU6ICAgICAgICB0aGlzLm5hdmlnYXRvckF1dG9SZXNpemUsXG4gICAgICAgICAgICBhdXRvRmFkZTogICAgICAgICAgdGhpcy5uYXZpZ2F0b3JBdXRvRmFkZSxcbiAgICAgICAgICAgIHByZWZpeFVybDogICAgICAgICB0aGlzLnByZWZpeFVybCxcbiAgICAgICAgICAgIHZpZXdlcjogICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgbmF2aWdhdG9yUm90YXRlOiAgIHRoaXMubmF2aWdhdG9yUm90YXRlLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW5Qb2xpY3k6IHRoaXMuY3Jvc3NPcmlnaW5Qb2xpY3lcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2VxdWVuY2UgbW9kZVxuICAgIGlmICh0aGlzLnNlcXVlbmNlTW9kZSkge1xuICAgICAgICB0aGlzLmJpbmRTZXF1ZW5jZUNvbnRyb2xzKCk7XG4gICAgfVxuXG4gICAgLy8gT3BlbiBpbml0aWFsIHRpbGVzb3VyY2VzXG4gICAgaWYgKHRoaXMudGlsZVNvdXJjZXMpIHtcbiAgICAgICAgdGhpcy5vcGVuKCB0aGlzLnRpbGVTb3VyY2VzICk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGN1c3RvbSBjb250cm9sc1xuICAgIGZvciAoIGkgPSAwOyBpIDwgdGhpcy5jdXN0b21Db250cm9scy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgdGhpcy5hZGRDb250cm9sKFxuICAgICAgICAgICAgdGhpcy5jdXN0b21Db250cm9sc1sgaSBdLmlkLFxuICAgICAgICAgICAge2FuY2hvcjogdGhpcy5jdXN0b21Db250cm9sc1sgaSBdLmFuY2hvcn1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsIGZhZGUgb3V0XG4gICAgJC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIGZ1bmN0aW9uKCl7XG4gICAgICAgIGJlZ2luQ29udHJvbHNBdXRvSGlkZSggX3RoaXMgKTtcbiAgICB9ICk7XG59O1xuXG4kLmV4dGVuZCggJC5WaWV3ZXIucHJvdG90eXBlLCAkLkV2ZW50U291cmNlLnByb3RvdHlwZSwgJC5Db250cm9sRG9jay5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5WaWV3ZXIucHJvdG90eXBlICove1xuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIGlzT3BlbjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLndvcmxkLmdldEl0ZW1Db3VudCgpO1xuICAgIH0sXG5cbiAgICAvLyBkZXByZWNhdGVkXG4gICAgb3BlbkR6aTogZnVuY3Rpb24gKCBkemkgKSB7XG4gICAgICAgICQuY29uc29sZS5lcnJvciggXCJbVmlld2VyLm9wZW5EemldIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdXNlIFZpZXdlci5vcGVuKCkgaW5zdGVhZC5cIiApO1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuKCBkemkgKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIG9wZW5UaWxlU291cmNlOiBmdW5jdGlvbiAoIHRpbGVTb3VyY2UgKSB7XG4gICAgICAgICQuY29uc29sZS5lcnJvciggXCJbVmlld2VyLm9wZW5UaWxlU291cmNlXSB0aGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSBWaWV3ZXIub3BlbigpIGluc3RlYWQuXCIgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbiggdGlsZVNvdXJjZSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBPcGVuIHRpbGVkIGltYWdlcyBpbnRvIHRoZSB2aWV3ZXIsIGNsb3NpbmcgYW55IG90aGVycy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xPYmplY3R8RnVuY3Rpb259IHRpbGVTb3VyY2VzIC0gVGhpcyBjYW4gYmUgYSBUaWxlZEltYWdlXG4gICAgICogc3BlY2lmaWVyLCBhIFRpbGVTb3VyY2Ugc3BlY2lmaWVyLCBvciBhbiBhcnJheSBvZiBlaXRoZXIuIEEgVGlsZWRJbWFnZSBzcGVjaWZpZXJcbiAgICAgKiBpcyB0aGUgc2FtZSBhcyB0aGUgb3B0aW9ucyBwYXJhbWV0ZXIgZm9yIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNhZGRUaWxlZEltYWdlfSxcbiAgICAgKiBleGNlcHQgZm9yIHRoZSBpbmRleCBwcm9wZXJ0eTsgaW1hZ2VzIGFyZSBhZGRlZCBpbiBzZXF1ZW5jZS5cbiAgICAgKiBBIFRpbGVTb3VyY2Ugc3BlY2lmaWVyIGlzIGFueXRoaW5nIHlvdSBjb3VsZCBwYXNzIGFzIHRoZSB0aWxlU291cmNlIHByb3BlcnR5XG4gICAgICogb2YgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIGZvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjYWRkVGlsZWRJbWFnZX0uXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6b3BlblxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpvcGVuLWZhaWxlZFxuICAgICAqL1xuICAgIG9wZW46IGZ1bmN0aW9uICh0aWxlU291cmNlcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcblxuICAgICAgICBpZiAoIXRpbGVTb3VyY2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZXF1ZW5jZU1vZGUgJiYgJC5pc0FycmF5KHRpbGVTb3VyY2VzKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVmZXJlbmNlU3RyaXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVN0cmlwLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVN0cmlwID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50aWxlU291cmNlcyA9IHRpbGVTb3VyY2VzO1xuICAgICAgICAgICAgdGhpcy5fc2VxdWVuY2VJbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHRoaXMudGlsZVNvdXJjZXMubGVuZ3RoIC0gMSwgdGhpcy5pbml0aWFsUGFnZSkpO1xuICAgICAgICAgICAgaWYgKHRoaXMudGlsZVNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKHRoaXMudGlsZVNvdXJjZXNbdGhpcy5fc2VxdWVuY2VJbmRleF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNob3dSZWZlcmVuY2VTdHJpcCApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVN0cmlwID0gbmV3ICQuUmVmZXJlbmNlU3RyaXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICAgICAgICAgIHRoaXMucmVmZXJlbmNlU3RyaXBFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICAgIHRoaXMucmVmZXJlbmNlU3RyaXBQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVSYXRpbzogICB0aGlzLnJlZmVyZW5jZVN0cmlwU2l6ZVJhdGlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiAgICAgIHRoaXMucmVmZXJlbmNlU3RyaXBTY3JvbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICAgICAgdGhpcy5yZWZlcmVuY2VTdHJpcEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAgICAgICB0aGlzLnJlZmVyZW5jZVN0cmlwV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlU291cmNlczogdGhpcy50aWxlU291cmNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeFVybDogICB0aGlzLnByZWZpeFVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdlcjogICAgICB0aGlzXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VxdWVuY2VCdXR0b25zKCB0aGlzLl9zZXF1ZW5jZUluZGV4ICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISQuaXNBcnJheSh0aWxlU291cmNlcykpIHtcbiAgICAgICAgICAgIHRpbGVTb3VyY2VzID0gW3RpbGVTb3VyY2VzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGlsZVNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcGVuaW5nID0gdHJ1ZTtcblxuICAgICAgICB2YXIgZXhwZWN0ZWQgPSB0aWxlU291cmNlcy5sZW5ndGg7XG4gICAgICAgIHZhciBzdWNjZXNzZXMgPSAwO1xuICAgICAgICB2YXIgZmFpbHVyZXMgPSAwO1xuICAgICAgICB2YXIgZmFpbEV2ZW50O1xuXG4gICAgICAgIHZhciBjaGVja0NvbXBsZXRpb24gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzZXMgKyBmYWlsdXJlcyA9PT0gZXhwZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fZmlyc3RPcGVuIHx8ICFfdGhpcy5wcmVzZXJ2ZVZpZXdwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy52aWV3cG9ydC5nb0hvbWUoIHRydWUgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnZpZXdwb3J0LnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2ZpcnN0T3BlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2UgPSB0aWxlU291cmNlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS50aWxlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2UudGlsZVNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdsb2JhbCBvdmVybGF5c1xuICAgICAgICAgICAgICAgICAgICBpZiggX3RoaXMub3ZlcmxheXMgJiYgIV90aGlzLnByZXNlcnZlT3ZlcmxheXMgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IF90aGlzLm92ZXJsYXlzLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPdmVybGF5c1sgaSBdID0gZ2V0T3ZlcmxheU9iamVjdCggX3RoaXMsIF90aGlzLm92ZXJsYXlzWyBpIF0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9kcmF3T3ZlcmxheXMoKTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX29wZW5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIHZpZXdlciBoYXMgb3BlbmVkIGFuZCBsb2FkZWQgb25lIG9yIG1vcmUgVGlsZVNvdXJjZXMuXG4gICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAqIEBldmVudCBvcGVuXG4gICAgICAgICAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2V9IHNvdXJjZSAtIFRoZSB0aWxlIHNvdXJjZSB0aGF0IHdhcyBvcGVuZWQuXG4gICAgICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHdoYXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHNvdXJjZXM/XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoICdvcGVuJywgeyBzb3VyY2U6IHNvdXJjZSB9ICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX29wZW5pbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGxvYWRpbmcgYSBUaWxlU291cmNlLlxuICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXZlbnQgb3Blbi1mYWlsZWRcbiAgICAgICAgICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gbWVzc2FnZSAtIEluZm9ybWF0aW9uIGFib3V0IHdoYXQgZmFpbGVkLlxuICAgICAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gc291cmNlIC0gVGhlIHRpbGUgc291cmNlIHRoYXQgZmFpbGVkLlxuICAgICAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5yYWlzZUV2ZW50KCAnb3Blbi1mYWlsZWQnLCBmYWlsRXZlbnQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGRvT25lID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKCEkLmlzUGxhaW5PYmplY3Qob3B0aW9ucykgfHwgIW9wdGlvbnMudGlsZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRpbGVTb3VyY2U6IG9wdGlvbnNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgJC5jb25zb2xlLmVycm9yKCdbVmlld2VyLm9wZW5dIHNldHRpbmcgaW5kZXhlcyBoZXJlIGlzIG5vdCBzdXBwb3J0ZWQ7IHVzZSBhZGRUaWxlZEltYWdlIGluc3RlYWQnKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5pbmRleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29sbGVjdGlvbkltbWVkaWF0ZWx5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmNvbGxlY3Rpb25JbW1lZGlhdGVseSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3M7XG4gICAgICAgICAgICBvcHRpb25zLnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NlcysrO1xuXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogbm93IHRoYXQgb3B0aW9ucyBoYXMgb3RoZXIgdGhpbmdzIGJlc2lkZXMgdGlsZVNvdXJjZSwgdGhlIG92ZXJsYXlzXG4gICAgICAgICAgICAgICAgLy8gc2hvdWxkIHByb2JhYmx5IGJlIGF0IHRoZSBvcHRpb25zIGxldmVsLCBub3QgdGhlIHRpbGVTb3VyY2UgbGV2ZWwuXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudGlsZVNvdXJjZS5vdmVybGF5cykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMudGlsZVNvdXJjZS5vdmVybGF5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWRkT3ZlcmxheShvcHRpb25zLnRpbGVTb3VyY2Uub3ZlcmxheXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFN1Y2Nlc3MoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGxldGlvbigpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIG9yaWdpbmFsRXJyb3IgPSBvcHRpb25zLmVycm9yO1xuICAgICAgICAgICAgb3B0aW9ucy5lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZXMrKztcblxuICAgICAgICAgICAgICAgIGlmICghZmFpbEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxFdmVudCA9IGV2ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXJyb3IoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNoZWNrQ29tcGxldGlvbigpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgX3RoaXMuYWRkVGlsZWRJbWFnZShvcHRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBUaWxlU291cmNlc1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbGVTb3VyY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkb09uZSh0aWxlU291cmNlc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpjbG9zZVxuICAgICAqL1xuICAgIGNsb3NlOiBmdW5jdGlvbiAoICkge1xuICAgICAgICBpZiAoICFUSElTWyB0aGlzLmhhc2ggXSApIHtcbiAgICAgICAgICAgIC8vdGhpcyB2aWV3ZXIgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQ6IHJldHVybmluZyBpbW1lZGlhdGVseVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcGVuaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCB0aGlzLm5hdmlnYXRvciApIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiggISB0aGlzLnByZXNlcnZlT3ZlcmxheXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJPdmVybGF5cygpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5c0NvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMud29ybGQucmVtb3ZlQWxsKCk7XG4gICAgICAgIHRoaXMuaW1hZ2VMb2FkZXIuY2xlYXIoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIHZpZXdlciBpcyBjbG9zZWQgKHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2xvc2V9KS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV2ZW50IGNsb3NlXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAnY2xvc2UnICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gZGVzdHJveSB0aGUgdmlld2VyIGFuZCBjbGVhbiB1cCBldmVyeXRoaW5nIGNyZWF0ZWQgYnkgT3BlblNlYWRyYWdvbi5cbiAgICAgKlxuICAgICAqIEV4YW1wbGU6XG4gICAgICogdmFyIHZpZXdlciA9IE9wZW5TZWFkcmFnb24oe1xuICAgICAqICAgWy4uLl1cbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIC8vd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGUgdmlld2VyOlxuICAgICAqIHZpZXdlci5kZXN0cm95KCk7XG4gICAgICogdmlld2VyID0gbnVsbDsgLy9pbXBvcnRhbnRcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCApIHtcbiAgICAgICAgaWYgKCAhVEhJU1sgdGhpcy5oYXNoIF0gKSB7XG4gICAgICAgICAgICAvL3RoaXMgdmlld2VyIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkOiByZXR1cm5pbmcgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmNsZWFyT3ZlcmxheXMoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5c0NvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuXG4gICAgICAgIC8vVE9ETzogaW1wbGVtZW50IHRoaXMuLi5cbiAgICAgICAgLy90aGlzLnVuYmluZFNlcXVlbmNlQ29udHJvbHMoKVxuICAgICAgICAvL3RoaXMudW5iaW5kU3RhbmRhcmRDb250cm9scygpXG5cbiAgICAgICAgaWYgKHRoaXMucmVmZXJlbmNlU3RyaXApIHtcbiAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlU3RyaXAuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VTdHJpcCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuX3VwZGF0ZVJlcXVlc3RJZCAhPT0gbnVsbCApIHtcbiAgICAgICAgICAgICQuY2FuY2VsQW5pbWF0aW9uRnJhbWUoIHRoaXMuX3VwZGF0ZVJlcXVlc3RJZCApO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlUmVxdWVzdElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5kcmF3ZXIgKSB7XG4gICAgICAgICAgICB0aGlzLmRyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbW92ZUFsbEhhbmRsZXJzKCk7XG5cbiAgICAgICAgLy8gR28gdGhyb3VnaCB0b3AgZWxlbWVudCAocGFzc2VkIHRvIHVzKSBhbmQgcmVtb3ZlIGFsbCBjaGlsZHJlblxuICAgICAgICAvLyBVc2UgcmVtb3ZlQ2hpbGQgdG8gbWFrZSBzdXJlIGl0IGhhbmRsZXMgU1ZHIG9yIGFueSBub24taHRtbFxuICAgICAgICAvLyBhbHNvIGl0IHBlcmZvcm1zIGJldHRlciAtIGh0dHA6Ly9qc3BlcmYuY29tL2lubmVyaHRtbC12cy1yZW1vdmVjaGlsZC8xNVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50KXtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXN0cm95IHRoZSBtb3VzZSB0cmFja2Vyc1xuICAgICAgICBpZiAodGhpcy5pbm5lclRyYWNrZXIpe1xuICAgICAgICAgICAgdGhpcy5pbm5lclRyYWNrZXIuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm91dGVyVHJhY2tlcil7XG4gICAgICAgICAgICB0aGlzLm91dGVyVHJhY2tlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBUSElTWyB0aGlzLmhhc2ggXSA9IG51bGw7XG4gICAgICAgIGRlbGV0ZSBUSElTWyB0aGlzLmhhc2ggXTtcblxuICAgICAgICAvLyBjbGVhciBhbGwgb3VyIHJlZmVyZW5jZXMgdG8gZG9tIG9iamVjdHNcbiAgICAgICAgdGhpcy5jYW52YXMgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG5cbiAgICAgICAgLy8gY2xlYXIgb3VyIHJlZmVyZW5jZSB0byB0aGUgbWFpbiBlbGVtZW50IC0gdGhleSB3aWxsIG5lZWQgdG8gcGFzcyBpdCBpbiBhZ2FpbiwgY3JlYXRpbmcgYSBuZXcgdmlld2VyXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNNb3VzZU5hdkVuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5uZXJUcmFja2VyLmlzVHJhY2tpbmcoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBlbmFibGVkIC0gdHJ1ZSB0byBlbmFibGUsIGZhbHNlIHRvIGRpc2FibGVcbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDptb3VzZS1lbmFibGVkXG4gICAgICovXG4gICAgc2V0TW91c2VOYXZFbmFibGVkOiBmdW5jdGlvbiggZW5hYmxlZCApe1xuICAgICAgICB0aGlzLmlubmVyVHJhY2tlci5zZXRUcmFja2luZyggZW5hYmxlZCApO1xuICAgICAgICB0aGlzLm91dGVyVHJhY2tlci5zZXRUcmFja2luZyggZW5hYmxlZCApO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gbW91c2UvdG91Y2ggbmF2aWdhdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3NldE1vdXNlTmF2RW5hYmxlZH0pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgbW91c2UtZW5hYmxlZFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlZFxuICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJhaXNlRXZlbnQoICdtb3VzZS1lbmFibGVkJywgeyBlbmFibGVkOiBlbmFibGVkIH0gKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBhcmVDb250cm9sc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVuYWJsZWQgPSB0aGlzLmNvbnRyb2xzLmxlbmd0aCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciggaSA9IDA7IGkgPCB0aGlzLmNvbnRyb2xzLmxlbmd0aDsgaSsrICl7XG4gICAgICAgICAgICBlbmFibGVkID0gZW5hYmxlZCAmJiB0aGlzLmNvbnRyb2xzWyBpIF0uaXNWaXNpYmlsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmFibGVkO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIFNob3dzIG9yIGhpZGVzIHRoZSBjb250cm9scyAoZS5nLiB0aGUgZGVmYXVsdCBuYXZpZ2F0aW9uIGJ1dHRvbnMpLlxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSB0cnVlIHRvIHNob3csIGZhbHNlIHRvIGhpZGUuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6Y29udHJvbHMtZW5hYmxlZFxuICAgICAqL1xuICAgIHNldENvbnRyb2xzRW5hYmxlZDogZnVuY3Rpb24oIGVuYWJsZWQgKSB7XG4gICAgICAgIGlmKCBlbmFibGVkICl7XG4gICAgICAgICAgICBhYm9ydENvbnRyb2xzQXV0b0hpZGUoIHRoaXMgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJlZ2luQ29udHJvbHNBdXRvSGlkZSggdGhpcyApO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBjb250cm9scyBhcmUgc2hvd24gb3IgaGlkZGVuIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3NldENvbnRyb2xzRW5hYmxlZH0pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgY29udHJvbHMtZW5hYmxlZFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlZFxuICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnJhaXNlRXZlbnQoICdjb250cm9scy1lbmFibGVkJywgeyBlbmFibGVkOiBlbmFibGVkIH0gKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNGdWxsUGFnZTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gVEhJU1sgdGhpcy5oYXNoIF0uZnVsbFBhZ2U7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGwgcGFnZSBtb2RlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZnVsbFBhZ2VcbiAgICAgKiAgICAgIElmIHRydWUsIGVudGVyIGZ1bGwgcGFnZSBtb2RlLiAgSWYgZmFsc2UsIGV4aXQgZnVsbCBwYWdlIG1vZGUuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6cHJlLWZ1bGwtcGFnZVxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpmdWxsLXBhZ2VcbiAgICAgKi9cbiAgICBzZXRGdWxsUGFnZTogZnVuY3Rpb24oIGZ1bGxQYWdlICkge1xuXG4gICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgIGJvZHlTdHlsZSA9IGJvZHkuc3R5bGUsXG4gICAgICAgICAgICBkb2NTdHlsZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSxcbiAgICAgICAgICAgIF90aGlzID0gdGhpcyxcbiAgICAgICAgICAgIGhhc2gsXG4gICAgICAgICAgICBub2RlcyxcbiAgICAgICAgICAgIGk7XG5cbiAgICAgICAgLy9kb250IGJvdGhlciBtb2RpZnlpbmcgdGhlIERPTSBpZiB3ZSBhcmUgYWxyZWFkeSBpbiBmdWxsIHBhZ2UgbW9kZS5cbiAgICAgICAgaWYgKCBmdWxsUGFnZSA9PSB0aGlzLmlzRnVsbFBhZ2UoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZ1bGxQYWdlRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgZnVsbFBhZ2U6IGZ1bGxQYWdlLFxuICAgICAgICAgICAgcHJldmVudERlZmF1bHRBY3Rpb246IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgdmlld2VyIGlzIGFib3V0IHRvIGNoYW5nZSB0by9mcm9tIGZ1bGwtcGFnZSBtb2RlIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3NldEZ1bGxQYWdlfSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCBwcmUtZnVsbC1wYWdlXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtCb29sZWFufSBmdWxsUGFnZSAtIFRydWUgaWYgZW50ZXJpbmcgZnVsbC1wYWdlIG1vZGUsIGZhbHNlIGlmIGV4aXRpbmcgZnVsbC1wYWdlIG1vZGUuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcHJldmVudERlZmF1bHRBY3Rpb24gLSBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IGZ1bGwtcGFnZSBtb2RlIGNoYW5nZS4gRGVmYXVsdDogZmFsc2UuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ3ByZS1mdWxsLXBhZ2UnLCBmdWxsUGFnZUV2ZW50QXJncyApO1xuICAgICAgICBpZiAoIGZ1bGxQYWdlRXZlbnRBcmdzLnByZXZlbnREZWZhdWx0QWN0aW9uICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIGZ1bGxQYWdlICkge1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRTaXplID0gJC5nZXRFbGVtZW50U2l6ZSggdGhpcy5lbGVtZW50ICk7XG4gICAgICAgICAgICB0aGlzLnBhZ2VTY3JvbGwgPSAkLmdldFBhZ2VTY3JvbGwoKTtcblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50TWFyZ2luID0gdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpbjtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW4gPSBcIjBcIjtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFBhZGRpbmcgPSB0aGlzLmVsZW1lbnQuc3R5bGUucGFkZGluZztcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wYWRkaW5nID0gXCIwXCI7XG5cbiAgICAgICAgICAgIHRoaXMuYm9keU1hcmdpbiA9IGJvZHlTdHlsZS5tYXJnaW47XG4gICAgICAgICAgICB0aGlzLmRvY01hcmdpbiA9IGRvY1N0eWxlLm1hcmdpbjtcbiAgICAgICAgICAgIGJvZHlTdHlsZS5tYXJnaW4gPSBcIjBcIjtcbiAgICAgICAgICAgIGRvY1N0eWxlLm1hcmdpbiA9IFwiMFwiO1xuXG4gICAgICAgICAgICB0aGlzLmJvZHlQYWRkaW5nID0gYm9keVN0eWxlLnBhZGRpbmc7XG4gICAgICAgICAgICB0aGlzLmRvY1BhZGRpbmcgPSBkb2NTdHlsZS5wYWRkaW5nO1xuICAgICAgICAgICAgYm9keVN0eWxlLnBhZGRpbmcgPSBcIjBcIjtcbiAgICAgICAgICAgIGRvY1N0eWxlLnBhZGRpbmcgPSBcIjBcIjtcblxuICAgICAgICAgICAgdGhpcy5ib2R5V2lkdGggPSBib2R5U3R5bGUud2lkdGg7XG4gICAgICAgICAgICB0aGlzLmRvY1dpZHRoID0gZG9jU3R5bGUud2lkdGg7XG4gICAgICAgICAgICBib2R5U3R5bGUud2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgICAgIGRvY1N0eWxlLndpZHRoID0gXCIxMDAlXCI7XG5cbiAgICAgICAgICAgIHRoaXMuYm9keUhlaWdodCA9IGJvZHlTdHlsZS5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLmRvY0hlaWdodCA9IGRvY1N0eWxlLmhlaWdodDtcbiAgICAgICAgICAgIGJvZHlTdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgICAgIGRvY1N0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgICAvL3doZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4gb24gdGhlIGlwYWQgaXQgd2FzbnQgc3VmZmljaWVudCB0byBsZWF2ZVxuICAgICAgICAgICAgLy90aGUgYm9keSBpbnRhY3QgYXMgb25seSBvbmx5IHRoZSB0b3AgaGFsZiBvZiB0aGUgc2NyZWVuIHdvdWxkXG4gICAgICAgICAgICAvL3Jlc3BvbmQgdG8gdG91Y2ggZXZlbnRzIG9uIHRoZSBjYW52YXMsIHdoaWxlIHRoZSBib3R0b20gaGFsZiB0cmVhdGVkXG4gICAgICAgICAgICAvL3RoZW0gYXMgdG91Y2ggZXZlbnRzIG9uIHRoZSBkb2N1bWVudCBib2R5LiAgVGh1cyB3ZSByZW1vdmUgYW5kIHN0b3JlXG4gICAgICAgICAgICAvL3RoZSBib2RpZXMgZWxlbWVudHMgYW5kIHJlcGxhY2UgdGhlbSB3aGVuIHdlIGxlYXZlIGZ1bGwgc2NyZWVuLlxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0JvZHkgPSBbXTtcbiAgICAgICAgICAgIFRISVNbIHRoaXMuaGFzaCBdLnByZXZFbGVtZW50UGFyZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS5wcmV2TmV4dFNpYmxpbmcgPSB0aGlzLmVsZW1lbnQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS5wcmV2RWxlbWVudFdpZHRoID0gdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoO1xuICAgICAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0ucHJldkVsZW1lbnRIZWlnaHQgPSB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgbm9kZXMgPSBib2R5LmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBub2RlczsgaSsrICkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNCb2R5LnB1c2goIGJvZHkuY2hpbGROb2Rlc1sgMCBdICk7XG4gICAgICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZCggYm9keS5jaGlsZE5vZGVzWyAwIF0gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9JZiB3ZSd2ZSBnb3QgYSB0b29sYmFyLCB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgdXNlciB0byB1c2UgY3NzIHRvXG4gICAgICAgICAgICAvL3ByZXNlcnZlIGl0IGluIGZ1bGxwYWdlIG1vZGVcbiAgICAgICAgICAgIGlmICggdGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhci5lbGVtZW50ICkge1xuICAgICAgICAgICAgICAgIC8vc2F2ZSBhIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuICAgICAgICAgICAgICAgIC8vaW4gdGhlIGxvbmcgcnVuIHdlIG5lZWQgYSBiZXR0ZXIgc3RyYXRlZ3lcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXIucGFyZW50Tm9kZSA9IHRoaXMudG9vbGJhci5lbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyLm5leHRTaWJsaW5nID0gdGhpcy50b29sYmFyLmVsZW1lbnQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgYm9keS5hcHBlbmRDaGlsZCggdGhpcy50b29sYmFyLmVsZW1lbnQgKTtcblxuICAgICAgICAgICAgICAgIC8vTWFrZSBzdXJlIHRoZSB1c2VyIGhhcyBzb21lIGFiaWxpdHkgdG8gc3R5bGUgdGhlIHRvb2xiYXIgYmFzZWRcbiAgICAgICAgICAgICAgICAvL29uIHRoZSBtb2RlXG4gICAgICAgICAgICAgICAgJC5hZGRDbGFzcyggdGhpcy50b29sYmFyLmVsZW1lbnQsICdmdWxscGFnZScgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJC5hZGRDbGFzcyggdGhpcy5lbGVtZW50LCAnZnVsbHBhZ2UnICk7XG4gICAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKCB0aGlzLmVsZW1lbnQgKTtcblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9ICQuZ2V0V2luZG93U2l6ZSgpLnkgKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gJC5nZXRXaW5kb3dTaXplKCkueCArICdweCc7XG5cbiAgICAgICAgICAgIGlmICggdGhpcy50b29sYmFyICYmIHRoaXMudG9vbGJhci5lbGVtZW50ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAoXG4gICAgICAgICAgICAgICAgICAgICQuZ2V0RWxlbWVudFNpemUoIHRoaXMuZWxlbWVudCApLnkgLSAkLmdldEVsZW1lbnRTaXplKCB0aGlzLnRvb2xiYXIuZWxlbWVudCApLnlcbiAgICAgICAgICAgICAgICApICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uZnVsbFBhZ2UgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBtb3VzZSB3aWxsIGJlIGluc2lkZSBjb250YWluZXIgbm93XG4gICAgICAgICAgICAkLmRlbGVnYXRlKCB0aGlzLCBvbkNvbnRhaW5lckVudGVyICkoIHt9ICk7XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpbiA9IHRoaXMuZWxlbWVudE1hcmdpbjtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wYWRkaW5nID0gdGhpcy5lbGVtZW50UGFkZGluZztcblxuICAgICAgICAgICAgYm9keVN0eWxlLm1hcmdpbiA9IHRoaXMuYm9keU1hcmdpbjtcbiAgICAgICAgICAgIGRvY1N0eWxlLm1hcmdpbiA9IHRoaXMuZG9jTWFyZ2luO1xuXG4gICAgICAgICAgICBib2R5U3R5bGUucGFkZGluZyA9IHRoaXMuYm9keVBhZGRpbmc7XG4gICAgICAgICAgICBkb2NTdHlsZS5wYWRkaW5nID0gdGhpcy5kb2NQYWRkaW5nO1xuXG4gICAgICAgICAgICBib2R5U3R5bGUud2lkdGggPSB0aGlzLmJvZHlXaWR0aDtcbiAgICAgICAgICAgIGRvY1N0eWxlLndpZHRoID0gdGhpcy5kb2NXaWR0aDtcblxuICAgICAgICAgICAgYm9keVN0eWxlLmhlaWdodCA9IHRoaXMuYm9keUhlaWdodDtcbiAgICAgICAgICAgIGRvY1N0eWxlLmhlaWdodCA9IHRoaXMuZG9jSGVpZ2h0O1xuXG4gICAgICAgICAgICBib2R5LnJlbW92ZUNoaWxkKCB0aGlzLmVsZW1lbnQgKTtcbiAgICAgICAgICAgIG5vZGVzID0gdGhpcy5wcmV2aW91c0JvZHkubGVuZ3RoO1xuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBub2RlczsgaSsrICkge1xuICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoIHRoaXMucHJldmlvdXNCb2R5LnNoaWZ0KCkgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJC5yZW1vdmVDbGFzcyggdGhpcy5lbGVtZW50LCAnZnVsbHBhZ2UnICk7XG4gICAgICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS5wcmV2RWxlbWVudFBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICAgICAgICAgIFRISVNbIHRoaXMuaGFzaCBdLnByZXZOZXh0U2libGluZ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy9JZiB3ZSd2ZSBnb3QgYSB0b29sYmFyLCB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgdXNlciB0byB1c2UgY3NzIHRvXG4gICAgICAgICAgICAvL3Jlc2V0IGl0IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZVxuICAgICAgICAgICAgaWYgKCB0aGlzLnRvb2xiYXIgJiYgdGhpcy50b29sYmFyLmVsZW1lbnQgKSB7XG4gICAgICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZCggdGhpcy50b29sYmFyLmVsZW1lbnQgKTtcblxuICAgICAgICAgICAgICAgIC8vTWFrZSBzdXJlIHRoZSB1c2VyIGhhcyBzb21lIGFiaWxpdHkgdG8gc3R5bGUgdGhlIHRvb2xiYXIgYmFzZWRcbiAgICAgICAgICAgICAgICAvL29uIHRoZSBtb2RlXG4gICAgICAgICAgICAgICAgJC5yZW1vdmVDbGFzcyggdGhpcy50b29sYmFyLmVsZW1lbnQsICdmdWxscGFnZScgKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b29sYmFyLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhci5uZXh0U2libGluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudG9vbGJhci5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRvb2xiYXIubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IFRISVNbIHRoaXMuaGFzaCBdLnByZXZFbGVtZW50V2lkdGg7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gVEhJU1sgdGhpcy5oYXNoIF0ucHJldkVsZW1lbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgIC8vIEFmdGVyIGV4aXRpbmcgZnVsbFBhZ2Ugb3IgZnVsbFNjcmVlbiwgaXQgY2FuIHRha2Ugc29tZSB0aW1lXG4gICAgICAgICAgICAvLyBiZWZvcmUgdGhlIGJyb3dzZXIgY2FuIGFjdHVhbGx5IHNldCB0aGUgc2Nyb2xsLlxuICAgICAgICAgICAgdmFyIHJlc3RvcmVTY3JvbGxDb3VudGVyID0gMDtcbiAgICAgICAgICAgIHZhciByZXN0b3JlU2Nyb2xsID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5zZXRQYWdlU2Nyb2xsKCBfdGhpcy5wYWdlU2Nyb2xsICk7XG4gICAgICAgICAgICAgICAgdmFyIHBhZ2VTY3JvbGwgPSAkLmdldFBhZ2VTY3JvbGwoKTtcbiAgICAgICAgICAgICAgICByZXN0b3JlU2Nyb2xsQ291bnRlcisrO1xuICAgICAgICAgICAgICAgIGlmICggcmVzdG9yZVNjcm9sbENvdW50ZXIgPCAxMCAmJlxuICAgICAgICAgICAgICAgICAgICBwYWdlU2Nyb2xsLnggIT09IF90aGlzLnBhZ2VTY3JvbGwueCB8fFxuICAgICAgICAgICAgICAgICAgICBwYWdlU2Nyb2xsLnkgIT09IF90aGlzLnBhZ2VTY3JvbGwueSApIHtcbiAgICAgICAgICAgICAgICAgICAgJC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJlc3RvcmVTY3JvbGwgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgJC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHJlc3RvcmVTY3JvbGwgKTtcblxuICAgICAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uZnVsbFBhZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gbW91c2Ugd2lsbCBsaWtlbHkgYmUgb3V0c2lkZSBub3dcbiAgICAgICAgICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ29udGFpbmVyRXhpdCApKCB7IH0gKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLm5hdmlnYXRvciAmJiB0aGlzLnZpZXdwb3J0ICkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3IudXBkYXRlKCB0aGlzLnZpZXdwb3J0ICk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIHZpZXdlciBoYXMgY2hhbmdlZCB0by9mcm9tIGZ1bGwtcGFnZSBtb2RlIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3NldEZ1bGxQYWdlfSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCBmdWxsLXBhZ2VcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGZ1bGxQYWdlIC0gVHJ1ZSBpZiBjaGFuZ2VkIHRvIGZ1bGwtcGFnZSBtb2RlLCBmYWxzZSBpZiBleGl0ZWQgZnVsbC1wYWdlIG1vZGUuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ2Z1bGwtcGFnZScsIHsgZnVsbFBhZ2U6IGZ1bGxQYWdlIH0gKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlIGZ1bGwgc2NyZWVuIG1vZGUgaWYgc3VwcG9ydGVkLiBUb2dnbGUgZnVsbCBwYWdlIG1vZGUgb3RoZXJ3aXNlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZnVsbFNjcmVlblxuICAgICAqICAgICAgSWYgdHJ1ZSwgZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4gIElmIGZhbHNlLCBleGl0IGZ1bGwgc2NyZWVuIG1vZGUuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6cHJlLWZ1bGwtc2NyZWVuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50OmZ1bGwtc2NyZWVuXG4gICAgICovXG4gICAgc2V0RnVsbFNjcmVlbjogZnVuY3Rpb24oIGZ1bGxTY3JlZW4gKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCAhJC5zdXBwb3J0c0Z1bGxTY3JlZW4gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRGdWxsUGFnZSggZnVsbFNjcmVlbiApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAkLmlzRnVsbFNjcmVlbigpID09PSBmdWxsU2NyZWVuICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZnVsbFNjcmVlRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgZnVsbFNjcmVlbjogZnVsbFNjcmVlbixcbiAgICAgICAgICAgIHByZXZlbnREZWZhdWx0QWN0aW9uOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIHZpZXdlciBpcyBhYm91dCB0byBjaGFuZ2UgdG8vZnJvbSBmdWxsLXNjcmVlbiBtb2RlIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3NldEZ1bGxTY3JlZW59KS5cbiAgICAgICAgICogTm90ZTogdGhlIHByZS1mdWxsLXNjcmVlbiBldmVudCBpcyBub3QgcmFpc2VkIHdoZW4gdGhlIHVzZXIgaXMgZXhpdGluZ1xuICAgICAgICAgKiBmdWxsLXNjcmVlbiBtb2RlIGJ5IHByZXNzaW5nIHRoZSBFc2Mga2V5LiBJbiB0aGF0IGNhc2UsIGNvbnNpZGVyIHVzaW5nXG4gICAgICAgICAqIHRoZSBmdWxsLXNjcmVlbiwgcHJlLWZ1bGwtcGFnZSBvciBmdWxsLXBhZ2UgZXZlbnRzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgcHJlLWZ1bGwtc2NyZWVuXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtCb29sZWFufSBmdWxsU2NyZWVuIC0gVHJ1ZSBpZiBlbnRlcmluZyBmdWxsLXNjcmVlbiBtb2RlLCBmYWxzZSBpZiBleGl0aW5nIGZ1bGwtc2NyZWVuIG1vZGUuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcHJldmVudERlZmF1bHRBY3Rpb24gLSBTZXQgdG8gdHJ1ZSB0byBwcmV2ZW50IGZ1bGwtc2NyZWVuIG1vZGUgY2hhbmdlLiBEZWZhdWx0OiBmYWxzZS5cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAncHJlLWZ1bGwtc2NyZWVuJywgZnVsbFNjcmVlRXZlbnRBcmdzICk7XG4gICAgICAgIGlmICggZnVsbFNjcmVlRXZlbnRBcmdzLnByZXZlbnREZWZhdWx0QWN0aW9uICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIGZ1bGxTY3JlZW4gKSB7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RnVsbFBhZ2UoIHRydWUgKTtcbiAgICAgICAgICAgIC8vIElmIHRoZSBmdWxsIHBhZ2UgbW9kZSBpcyBub3QgYWN0dWFsbHkgZW50ZXJlZCwgd2UgbmVlZCB0byBwcmV2ZW50XG4gICAgICAgICAgICAvLyB0aGUgZnVsbCBzY3JlZW4gbW9kZS5cbiAgICAgICAgICAgIGlmICggIXRoaXMuaXNGdWxsUGFnZSgpICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZ1bGxQYWdlU3R5bGVXaWR0aCA9IHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aDtcbiAgICAgICAgICAgIHRoaXMuZnVsbFBhZ2VTdHlsZUhlaWdodCA9IHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuXG4gICAgICAgICAgICB2YXIgb25GdWxsU2NyZWVuQ2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlzRnVsbFNjcmVlbiA9ICQuaXNGdWxsU2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgaWYgKCAhaXNGdWxsU2NyZWVuICkge1xuICAgICAgICAgICAgICAgICAgICAkLnJlbW92ZUV2ZW50KCBkb2N1bWVudCwgJC5mdWxsU2NyZWVuRXZlbnROYW1lLCBvbkZ1bGxTY3JlZW5DaGFuZ2UgKTtcbiAgICAgICAgICAgICAgICAgICAgJC5yZW1vdmVFdmVudCggZG9jdW1lbnQsICQuZnVsbFNjcmVlbkVycm9yRXZlbnROYW1lLCBvbkZ1bGxTY3JlZW5DaGFuZ2UgKTtcblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zZXRGdWxsUGFnZSggZmFsc2UgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBfdGhpcy5pc0Z1bGxQYWdlKCkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gX3RoaXMuZnVsbFBhZ2VTdHlsZVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBfdGhpcy5mdWxsUGFnZVN0eWxlSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICggX3RoaXMubmF2aWdhdG9yICYmIF90aGlzLnZpZXdwb3J0ICkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5uYXZpZ2F0b3IudXBkYXRlKCBfdGhpcy52aWV3cG9ydCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgdmlld2VyIGhhcyBjaGFuZ2VkIHRvL2Zyb20gZnVsbC1zY3JlZW4gbW9kZSAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNzZXRGdWxsU2NyZWVufSkuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBAZXZlbnQgZnVsbC1zY3JlZW5cbiAgICAgICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZnVsbFNjcmVlbiAtIFRydWUgaWYgY2hhbmdlZCB0byBmdWxsLXNjcmVlbiBtb2RlLCBmYWxzZSBpZiBleGl0ZWQgZnVsbC1zY3JlZW4gbW9kZS5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggJ2Z1bGwtc2NyZWVuJywgeyBmdWxsU2NyZWVuOiBpc0Z1bGxTY3JlZW4gfSApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICQuYWRkRXZlbnQoIGRvY3VtZW50LCAkLmZ1bGxTY3JlZW5FdmVudE5hbWUsIG9uRnVsbFNjcmVlbkNoYW5nZSApO1xuICAgICAgICAgICAgJC5hZGRFdmVudCggZG9jdW1lbnQsICQuZnVsbFNjcmVlbkVycm9yRXZlbnROYW1lLCBvbkZ1bGxTY3JlZW5DaGFuZ2UgKTtcblxuICAgICAgICAgICAgJC5yZXF1ZXN0RnVsbFNjcmVlbiggZG9jdW1lbnQuYm9keSApO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLmV4aXRGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAgICovXG4gICAgaXNWaXNpYmxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ICE9IFwiaGlkZGVuXCI7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSB2aXNpYmxlXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6dmlzaWJsZVxuICAgICAqL1xuICAgIHNldFZpc2libGU6IGZ1bmN0aW9uKCB2aXNpYmxlICl7XG4gICAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHkgPSB2aXNpYmxlID8gXCJcIiA6IFwiaGlkZGVuXCI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgdmlld2VyIGlzIHNob3duIG9yIGhpZGRlbiAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNzZXRWaXNpYmxlfSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCB2aXNpYmxlXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtCb29sZWFufSB2aXNpYmxlXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ3Zpc2libGUnLCB7IHZpc2libGU6IHZpc2libGUgfSApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgdGlsZWQgaW1hZ2UgdG8gdGhlIHZpZXdlci5cbiAgICAgKiBvcHRpb25zLnRpbGVTb3VyY2UgY2FuIGJlIGFueXRoaW5nIHRoYXQge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI29wZW59XG4gICAgICogIHN1cHBvcnRzIGV4Y2VwdCBhcnJheXMgb2YgaW1hZ2VzLlxuICAgICAqIE5vdGUgdGhhdCB5b3UgY2FuIHNwZWNpZnkgb3B0aW9ucy53aWR0aCBvciBvcHRpb25zLmhlaWdodCwgYnV0IG5vdCBib3RoLlxuICAgICAqIFRoZSBvdGhlciBkaW1lbnNpb24gd2lsbCBiZSBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgaXRlbSdzIGFzcGVjdCByYXRpby5cbiAgICAgKiBJZiBjb2xsZWN0aW9uTW9kZSBpcyBvbiAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9KSwgdGhlIG5ldyBpbWFnZSBpc1xuICAgICAqIGF1dG9tYXRpY2FsbHkgYXJyYW5nZWQgd2l0aCB0aGUgb3RoZXJzLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fEZ1bmN0aW9ufSBvcHRpb25zLnRpbGVTb3VyY2UgLSBUaGUgVGlsZVNvdXJjZSBzcGVjaWZpZXIuXG4gICAgICogQSBTdHJpbmcgaW1wbGllcyBhIHVybCB1c2VkIHRvIGRldGVybWluZSB0aGUgdGlsZVNvdXJjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqICAgICAgYmFzZWQgb24gdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHVybC4gSlNPTlAgaXMgaW1wbGllZCBieSAqLmpzLFxuICAgICAqICAgICAgb3RoZXJ3aXNlIHRoZSB1cmwgaXMgcmV0cmlldmVkIGFzIHRleHQgYW5kIHRoZSByZXN1bHRpbmcgdGV4dCBpc1xuICAgICAqICAgICAgaW50cm9zcGVjdGVkIHRvIGRldGVybWluZSBpZiBpdHMganNvbiwgeG1sLCBvciB0ZXh0IGFuZCBwYXJzZWQuXG4gICAgICogQW4gT2JqZWN0IGltcGxpZXMgYW4gaW5saW5lIGNvbmZpZ3VyYXRpb24gd2hpY2ggaGFzIGEgc2luZ2xlXG4gICAgICogICAgICBwcm9wZXJ0eSBzdWZmaWNpZW50IGZvciBiZWluZyBhYmxlIHRvIGRldGVybWluZSB0aWxlU291cmNlXG4gICAgICogICAgICBpbXBsZW1lbnRhdGlvbi4gSWYgdGhlIG9iamVjdCBoYXMgYSBwcm9wZXJ0eSB3aGljaCBpcyBhIGZ1bmN0aW9uXG4gICAgICogICAgICBuYW1lZCAnZ2V0VGlsZVVybCcsIGl0IGlzIHRyZWF0ZWQgYXMgYSBjdXN0b20gVGlsZVNvdXJjZS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuaW5kZXhdIFRoZSBpbmRleCBvZiB0aGUgaXRlbS4gQWRkZWQgb24gdG9wIG9mXG4gICAgICogYWxsIG90aGVyIGl0ZW1zIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5yZXBsYWNlPWZhbHNlXSBJZiB0cnVlLCB0aGUgaXRlbSBhdCBvcHRpb25zLmluZGV4IHdpbGwgYmVcbiAgICAgKiByZW1vdmVkIGFuZCB0aGUgbmV3IGl0ZW0gaXMgYWRkZWQgaW4gaXRzIHBsYWNlLiBvcHRpb25zLnRpbGVTb3VyY2Ugd2lsbCBiZVxuICAgICAqIGludGVycHJldGVkIGFuZCBmZXRjaGVkIGlmIG5lY2Vzc2FyeSBiZWZvcmUgdGhlIG9sZCBpdGVtIGlzIHJlbW92ZWQgdG8gYXZvaWQgbGVhdmluZ1xuICAgICAqIGEgZ2FwIGluIHRoZSB3b3JsZC5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMueD0wXSBUaGUgWCBwb3NpdGlvbiBmb3IgdGhlIGltYWdlIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy55PTBdIFRoZSBZIHBvc2l0aW9uIGZvciB0aGUgaW1hZ2UgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLndpZHRoPTFdIFRoZSB3aWR0aCBmb3IgdGhlIGltYWdlIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5oZWlnaHRdIFRoZSBoZWlnaHQgZm9yIHRoZSBpbWFnZSBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gW29wdGlvbnMuZml0Qm91bmRzXSBUaGUgYm91bmRzIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzXG4gICAgICogdG8gZml0IHRoZSBpbWFnZSBpbnRvLiBJZiBzcGVjaWZpZWQsIHgsIHksIHdpZHRoIGFuZCBoZWlnaHQgZ2V0IGlnbm9yZWQuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBsYWNlbWVudH0gW29wdGlvbnMuZml0Qm91bmRzUGxhY2VtZW50PU9wZW5TZWFkcmFnb24uUGxhY2VtZW50LkNFTlRFUl1cbiAgICAgKiBIb3cgdG8gYW5jaG9yIHRoZSBpbWFnZSBpbiB0aGUgYm91bmRzIGlmIG9wdGlvbnMuZml0Qm91bmRzIGlzIHNldC5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gW29wdGlvbnMuY2xpcF0gLSBBbiBhcmVhLCBpbiBpbWFnZSBwaXhlbHMsIHRvIGNsaXAgdG9cbiAgICAgKiAocG9ydGlvbnMgb2YgdGhlIGltYWdlIG91dHNpZGUgb2YgdGhpcyBhcmVhIHdpbGwgbm90IGJlIHZpc2libGUpLiBPbmx5IHdvcmtzIG9uXG4gICAgICogYnJvd3NlcnMgdGhhdCBzdXBwb3J0IHRoZSBIVE1MNSBjYW52YXMuXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm9wYWNpdHldIE9wYWNpdHkgdGhlIHRpbGVkIGltYWdlIHNob3VsZCBiZSBkcmF3biBhdCBieSBkZWZhdWx0LlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRpb25dIEhvdyB0aGUgaW1hZ2UgaXMgY29tcG9zaXRlZCBvbnRvIG90aGVyIGltYWdlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5zdWNjZXNzXSBBIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgd2hlbiB0aGUgaW1hZ2UgaXNcbiAgICAgKiBzdWNjZXNzZnVsbHkgYWRkZWQuIEl0J3MgcGFzc2VkIHRoZSBldmVudCBvYmplY3Qgd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgcHJvcGVydHk6XG4gICAgICogXCJpdGVtXCIsIHRoZSByZXN1bHRpbmcgVGlsZWRJbWFnZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5lcnJvcl0gQSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGlmIHRoZSBpbWFnZSBpc1xuICAgICAqIHVuYWJsZSB0byBiZSBhZGRlZC4gSXQncyBwYXNzZWQgdGhlIGVycm9yIGV2ZW50IG9iamVjdCwgd2hpY2ggY29udGFpbnMgXCJtZXNzYWdlXCJcbiAgICAgKiBhbmQgXCJzb3VyY2VcIiBwcm9wZXJ0aWVzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuY29sbGVjdGlvbkltbWVkaWF0ZWx5PWZhbHNlXSBJZiBjb2xsZWN0aW9uTW9kZSBpcyBvbixcbiAgICAgKiBzcGVjaWZpZXMgd2hldGhlciB0byBzbmFwIHRvIHRoZSBuZXcgYXJyYW5nZW1lbnQgaW1tZWRpYXRlbHkgb3IgdG8gYW5pbWF0ZSB0byBpdC5cbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xDYW52YXNHcmFkaWVudHxDYW52YXNQYXR0ZXJufEZ1bmN0aW9ufSBbb3B0aW9ucy5wbGFjZWhvbGRlckZpbGxTdHlsZV0gLSBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uV29ybGQuZXZlbnQ6YWRkLWl0ZW1cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6YWRkLWl0ZW0tZmFpbGVkXG4gICAgICovXG4gICAgYWRkVGlsZWRJbWFnZTogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQob3B0aW9ucywgXCJbVmlld2VyLmFkZFRpbGVkSW1hZ2VdIG9wdGlvbnMgaXMgcmVxdWlyZWRcIik7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQob3B0aW9ucy50aWxlU291cmNlLCBcIltWaWV3ZXIuYWRkVGlsZWRJbWFnZV0gb3B0aW9ucy50aWxlU291cmNlIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KCFvcHRpb25zLnJlcGxhY2UgfHwgKG9wdGlvbnMuaW5kZXggPiAtMSAmJiBvcHRpb25zLmluZGV4IDwgdGhpcy53b3JsZC5nZXRJdGVtQ291bnQoKSksXG4gICAgICAgICAgICBcIltWaWV3ZXIuYWRkVGlsZWRJbWFnZV0gaWYgb3B0aW9ucy5yZXBsYWNlIGlzIHVzZWQsIG9wdGlvbnMuaW5kZXggbXVzdCBiZSBhIHZhbGlkIGluZGV4IGluIFZpZXdlci53b3JsZFwiKTtcblxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnJlcGxhY2UpIHtcbiAgICAgICAgICAgIG9wdGlvbnMucmVwbGFjZUl0ZW0gPSBfdGhpcy53b3JsZC5nZXRJdGVtQXQob3B0aW9ucy5pbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9oaWRlTWVzc2FnZSgpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyRmlsbFN0eWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9wdGlvbnMucGxhY2Vob2xkZXJGaWxsU3R5bGUgPSB0aGlzLnBsYWNlaG9sZGVyRmlsbFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm9wYWNpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3B0aW9ucy5vcGFjaXR5ID0gdGhpcy5vcGFjaXR5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdGlvbiA9IHRoaXMuY29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG15UXVldWVJdGVtID0ge1xuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9O1xuXG4gICAgICAgIGZ1bmN0aW9uIHJhaXNlQWRkSXRlbUZhaWxlZCggZXZlbnQgKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90aGlzLl9sb2FkUXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX2xvYWRRdWV1ZVtpXSA9PT0gbXlRdWV1ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2xvYWRRdWV1ZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF90aGlzLl9sb2FkUXVldWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFdvcmxkKG15UXVldWVJdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGFkZGluZyBhIGl0ZW0uXG4gICAgICAgICAgICAgKiBAZXZlbnQgYWRkLWl0ZW0tZmFpbGVkXG4gICAgICAgICAgICAgKiBAbWVtYmVyT2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtZXNzYWdlXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gc291cmNlXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3B0aW9ucyBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIGFkZFRpbGVkSW1hZ2UgbWV0aG9kLlxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBfdGhpcy5yYWlzZUV2ZW50KCAnYWRkLWl0ZW0tZmFpbGVkJywgZXZlbnQgKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmVycm9yKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlZnJlc2hXb3JsZCh0aGVJdGVtKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuY29sbGVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy53b3JsZC5hcnJhbmdlKHtcbiAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHk6IHRoZUl0ZW0ub3B0aW9ucy5jb2xsZWN0aW9uSW1tZWRpYXRlbHksXG4gICAgICAgICAgICAgICAgICAgIHJvd3M6IF90aGlzLmNvbGxlY3Rpb25Sb3dzLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBfdGhpcy5jb2xsZWN0aW9uQ29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBfdGhpcy5jb2xsZWN0aW9uTGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICB0aWxlU2l6ZTogX3RoaXMuY29sbGVjdGlvblRpbGVTaXplLFxuICAgICAgICAgICAgICAgICAgICB0aWxlTWFyZ2luOiBfdGhpcy5jb2xsZWN0aW9uVGlsZU1hcmdpblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIF90aGlzLndvcmxkLnNldEF1dG9SZWZpZ3VyZVNpemVzKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCQuaXNBcnJheShvcHRpb25zLnRpbGVTb3VyY2UpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJhaXNlQWRkSXRlbUZhaWxlZCh7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiW1ZpZXdlci5hZGRUaWxlZEltYWdlXSBTZXF1ZW5jZXMgY2FuIG5vdCBiZSBhZGRlZDsgYWRkIHRoZW0gb25lIGF0IGEgdGltZSBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG9wdGlvbnMudGlsZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2FkUXVldWUucHVzaChteVF1ZXVlSXRlbSk7XG5cbiAgICAgICAgZ2V0VGlsZVNvdXJjZUltcGxlbWVudGF0aW9uKCB0aGlzLCBvcHRpb25zLnRpbGVTb3VyY2UsIGZ1bmN0aW9uKCB0aWxlU291cmNlICkge1xuXG4gICAgICAgICAgICBteVF1ZXVlSXRlbS50aWxlU291cmNlID0gdGlsZVNvdXJjZTtcblxuICAgICAgICAgICAgLy8gYWRkIGV2ZXJ5Ym9keSBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlIHRoYXQncyByZWFkeSB0byBnb1xuICAgICAgICAgICAgdmFyIHF1ZXVlSXRlbSwgdGlsZWRJbWFnZSwgb3B0aW9uc0Nsb25lO1xuICAgICAgICAgICAgd2hpbGUgKF90aGlzLl9sb2FkUXVldWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcXVldWVJdGVtID0gX3RoaXMuX2xvYWRRdWV1ZVswXTtcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXVlSXRlbS50aWxlU291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzLl9sb2FkUXVldWUuc3BsaWNlKDAsIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXVlSXRlbS5vcHRpb25zLnJlcGxhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0luZGV4ID0gX3RoaXMud29ybGQuZ2V0SW5kZXhPZkl0ZW0ocXVldWVJdGVtLm9wdGlvbnMucmVwbGFjZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlSXRlbS5vcHRpb25zLmluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMud29ybGQucmVtb3ZlSXRlbShxdWV1ZUl0ZW0ub3B0aW9ucy5yZXBsYWNlSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGlsZWRJbWFnZSA9IG5ldyAkLlRpbGVkSW1hZ2Uoe1xuICAgICAgICAgICAgICAgICAgICB2aWV3ZXI6IF90aGlzLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHF1ZXVlSXRlbS50aWxlU291cmNlLFxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogX3RoaXMudmlld3BvcnQsXG4gICAgICAgICAgICAgICAgICAgIGRyYXdlcjogX3RoaXMuZHJhd2VyLFxuICAgICAgICAgICAgICAgICAgICB0aWxlQ2FjaGU6IF90aGlzLnRpbGVDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VMb2FkZXI6IF90aGlzLmltYWdlTG9hZGVyLFxuICAgICAgICAgICAgICAgICAgICB4OiBxdWV1ZUl0ZW0ub3B0aW9ucy54LFxuICAgICAgICAgICAgICAgICAgICB5OiBxdWV1ZUl0ZW0ub3B0aW9ucy55LFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogcXVldWVJdGVtLm9wdGlvbnMud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogcXVldWVJdGVtLm9wdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBmaXRCb3VuZHM6IHF1ZXVlSXRlbS5vcHRpb25zLmZpdEJvdW5kcyxcbiAgICAgICAgICAgICAgICAgICAgZml0Qm91bmRzUGxhY2VtZW50OiBxdWV1ZUl0ZW0ub3B0aW9ucy5maXRCb3VuZHNQbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNsaXA6IHF1ZXVlSXRlbS5vcHRpb25zLmNsaXAsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyRmlsbFN0eWxlOiBxdWV1ZUl0ZW0ub3B0aW9ucy5wbGFjZWhvbGRlckZpbGxTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogcXVldWVJdGVtLm9wdGlvbnMub3BhY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9zaXRlT3BlcmF0aW9uOiBxdWV1ZUl0ZW0ub3B0aW9ucy5jb21wb3NpdGVPcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHNwcmluZ1N0aWZmbmVzczogX3RoaXMuc3ByaW5nU3RpZmZuZXNzLFxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25UaW1lOiBfdGhpcy5hbmltYXRpb25UaW1lLFxuICAgICAgICAgICAgICAgICAgICBtaW5ab29tSW1hZ2VSYXRpbzogX3RoaXMubWluWm9vbUltYWdlUmF0aW8sXG4gICAgICAgICAgICAgICAgICAgIHdyYXBIb3Jpem9udGFsOiBfdGhpcy53cmFwSG9yaXpvbnRhbCxcbiAgICAgICAgICAgICAgICAgICAgd3JhcFZlcnRpY2FsOiBfdGhpcy53cmFwVmVydGljYWwsXG4gICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogX3RoaXMuaW1tZWRpYXRlUmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICBibGVuZFRpbWU6IF90aGlzLmJsZW5kVGltZSxcbiAgICAgICAgICAgICAgICAgICAgYWx3YXlzQmxlbmQ6IF90aGlzLmFsd2F5c0JsZW5kLFxuICAgICAgICAgICAgICAgICAgICBtaW5QaXhlbFJhdGlvOiBfdGhpcy5taW5QaXhlbFJhdGlvLFxuICAgICAgICAgICAgICAgICAgICBzbW9vdGhUaWxlRWRnZXNNaW5ab29tOiBfdGhpcy5zbW9vdGhUaWxlRWRnZXNNaW5ab29tLFxuICAgICAgICAgICAgICAgICAgICBpT1NEZXZpY2U6IF90aGlzLmlPU0RldmljZSxcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW5Qb2xpY3k6IF90aGlzLmNyb3NzT3JpZ2luUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICBkZWJ1Z01vZGU6IF90aGlzLmRlYnVnTW9kZVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLmNvbGxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLndvcmxkLnNldEF1dG9SZWZpZ3VyZVNpemVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMud29ybGQuYWRkSXRlbSggdGlsZWRJbWFnZSwge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogcXVldWVJdGVtLm9wdGlvbnMuaW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fbG9hZFF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMgcmVzdG9yZXMgdGhlIGF1dG9SZWZpZ3VyZVNpemVzIGZsYWcgdG8gdHJ1ZS5cbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFdvcmxkKHF1ZXVlSXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLndvcmxkLmdldEl0ZW1Db3VudCgpID09PSAxICYmICFfdGhpcy5wcmVzZXJ2ZVZpZXdwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnZpZXdwb3J0LmdvSG9tZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMubmF2aWdhdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNDbG9uZSA9ICQuZXh0ZW5kKHt9LCBxdWV1ZUl0ZW0ub3B0aW9ucywge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZTogZmFsc2UsIC8vIG5hdmlnYXRvciBhbHJlYWR5IHJlbW92ZWQgdGhlIGxheWVyLCBub3RoaW5nIHRvIHJlcGxhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVGlsZWRJbWFnZTogdGlsZWRJbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVTb3VyY2U6IHF1ZXVlSXRlbS50aWxlU291cmNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm5hdmlnYXRvci5hZGRUaWxlZEltYWdlKG9wdGlvbnNDbG9uZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXVlSXRlbS5vcHRpb25zLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcXVldWVJdGVtLm9wdGlvbnMuc3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiB0aWxlZEltYWdlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZnVuY3Rpb24oIGV2ZW50ICkge1xuICAgICAgICAgICAgZXZlbnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgICAgICByYWlzZUFkZEl0ZW1GYWlsZWQoZXZlbnQpO1xuICAgICAgICB9ICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFkZCBhIHNpbXBsZSBpbWFnZSB0byB0aGUgdmlld2VyLlxuICAgICAqIFRoZSBvcHRpb25zIGFyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjYWRkVGlsZWRJbWFnZX1cbiAgICAgKiBleGNlcHQgZm9yIG9wdGlvbnMudGlsZVNvdXJjZSB3aGljaCBpcyByZXBsYWNlZCBieSBvcHRpb25zLnVybC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjYWRkVGlsZWRJbWFnZX1cbiAgICAgKiBmb3IgYWxsIHRoZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMudXJsIC0gVGhlIFVSTCBvZiB0aGUgaW1hZ2UgdG8gYWRkLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLldvcmxkLmV2ZW50OmFkZC1pdGVtXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50OmFkZC1pdGVtLWZhaWxlZFxuICAgICAqL1xuICAgIGFkZFNpbXBsZUltYWdlOiBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQob3B0aW9ucywgXCJbVmlld2VyLmFkZFNpbXBsZUltYWdlXSBvcHRpb25zIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KG9wdGlvbnMudXJsLCBcIltWaWV3ZXIuYWRkU2ltcGxlSW1hZ2VdIG9wdGlvbnMudXJsIGlzIHJlcXVpcmVkXCIpO1xuXG4gICAgICAgIHZhciBvcHRzID0gJC5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAgIHRpbGVTb3VyY2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICAgIHVybDogIG9wdGlvbnMudXJsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkZWxldGUgb3B0cy51cmw7XG4gICAgICAgIHRoaXMuYWRkVGlsZWRJbWFnZShvcHRzKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGFkZExheWVyOiBmdW5jdGlvbiggb3B0aW9ucyApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoIFwiW1ZpZXdlci5hZGRMYXllcl0gdGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgVmlld2VyLmFkZFRpbGVkSW1hZ2UoKSBpbnN0ZWFkLlwiICk7XG5cbiAgICAgICAgdmFyIG9wdGlvbnNDbG9uZSA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoXCJhZGQtbGF5ZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBkcmF3ZXI6IGV2ZW50Lml0ZW1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yYWlzZUV2ZW50KFwiYWRkLWxheWVyLWZhaWxlZFwiLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWRkVGlsZWRJbWFnZShvcHRpb25zQ2xvbmUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGdldExheWVyQXRMZXZlbDogZnVuY3Rpb24oIGxldmVsICkge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoIFwiW1ZpZXdlci5nZXRMYXllckF0TGV2ZWxdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdXNlIFdvcmxkLmdldEl0ZW1BdCgpIGluc3RlYWQuXCIgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ybGQuZ2V0SXRlbUF0KGxldmVsKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGdldExldmVsT2ZMYXllcjogZnVuY3Rpb24oIGRyYXdlciApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltWaWV3ZXIuZ2V0TGV2ZWxPZkxheWVyXSB0aGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSBXb3JsZC5nZXRJbmRleE9mSXRlbSgpIGluc3RlYWQuXCIgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ybGQuZ2V0SW5kZXhPZkl0ZW0oZHJhd2VyKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGdldExheWVyc0NvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltWaWV3ZXIuZ2V0TGF5ZXJzQ291bnRdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdXNlIFdvcmxkLmdldEl0ZW1Db3VudCgpIGluc3RlYWQuXCIgKTtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ybGQuZ2V0SXRlbUNvdW50KCk7XG4gICAgfSxcblxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICBzZXRMYXllckxldmVsOiBmdW5jdGlvbiggZHJhd2VyLCBsZXZlbCApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltWaWV3ZXIuc2V0TGF5ZXJMZXZlbF0gdGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgV29ybGQuc2V0SXRlbUluZGV4KCkgaW5zdGVhZC5cIiApO1xuICAgICAgICByZXR1cm4gdGhpcy53b3JsZC5zZXRJdGVtSW5kZXgoZHJhd2VyLCBsZXZlbCk7XG4gICAgfSxcblxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICByZW1vdmVMYXllcjogZnVuY3Rpb24oIGRyYXdlciApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltWaWV3ZXIucmVtb3ZlTGF5ZXJdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdXNlIFdvcmxkLnJlbW92ZUl0ZW0oKSBpbnN0ZWFkLlwiICk7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmxkLnJlbW92ZUl0ZW0oZHJhd2VyKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRm9yY2UgdGhlIHZpZXdlciB0byByZWRyYXcgaXRzIGNvbnRlbnRzLlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gQ2hhaW5hYmxlLlxuICAgICAqL1xuICAgIGZvcmNlUmVkcmF3OiBmdW5jdGlvbigpIHtcbiAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uZm9yY2VSZWRyYXcgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKi9cbiAgICBiaW5kU2VxdWVuY2VDb250cm9sczogZnVuY3Rpb24oKXtcblxuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBJbWFnZSBTZXF1ZW5jZSBDb250cm9sc1xuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICB2YXIgb25Gb2N1c0hhbmRsZXIgICAgICAgICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBvbkZvY3VzICksXG4gICAgICAgICAgICBvbkJsdXJIYW5kbGVyICAgICAgICAgICA9ICQuZGVsZWdhdGUoIHRoaXMsIG9uQmx1ciApLFxuICAgICAgICAgICAgb25OZXh0SGFuZGxlciAgICAgICAgICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBvbk5leHQgKSxcbiAgICAgICAgICAgIG9uUHJldmlvdXNIYW5kbGVyICAgICAgID0gJC5kZWxlZ2F0ZSggdGhpcywgb25QcmV2aW91cyApLFxuICAgICAgICAgICAgbmF2SW1hZ2VzICAgICAgICAgICAgICAgPSB0aGlzLm5hdkltYWdlcyxcbiAgICAgICAgICAgIHVzZUdyb3VwICAgICAgICAgICAgICAgID0gdHJ1ZSA7XG5cbiAgICAgICAgaWYoIHRoaXMuc2hvd1NlcXVlbmNlQ29udHJvbCApe1xuXG4gICAgICAgICAgICBpZiggdGhpcy5wcmV2aW91c0J1dHRvbiB8fCB0aGlzLm5leHRCdXR0b24gKXtcbiAgICAgICAgICAgICAgICAvL2lmIHdlIGFyZSBiaW5kaW5nIHRvIGN1c3RvbSBidXR0b25zIHRoZW4gbGF5b3V0IGFuZFxuICAgICAgICAgICAgICAgIC8vZ3JvdXBpbmcgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYWdlIGF1dGhvclxuICAgICAgICAgICAgICAgIHVzZUdyb3VwID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNCdXR0b24gPSBuZXcgJC5CdXR0b24oe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICAgIHRoaXMucHJldmlvdXNCdXR0b24gPyAkLmdldEVsZW1lbnQoIHRoaXMucHJldmlvdXNCdXR0b24gKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiB0aGlzLmNsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6ICAgICQuZ2V0U3RyaW5nKCBcIlRvb2x0aXBzLlByZXZpb3VzUGFnZVwiICksXG4gICAgICAgICAgICAgICAgc3JjUmVzdDogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5wcmV2aW91cy5SRVNUICksXG4gICAgICAgICAgICAgICAgc3JjR3JvdXA6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5wcmV2aW91cy5HUk9VUCApLFxuICAgICAgICAgICAgICAgIHNyY0hvdmVyOiAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMucHJldmlvdXMuSE9WRVIgKSxcbiAgICAgICAgICAgICAgICBzcmNEb3duOiAgICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLnByZXZpb3VzLkRPV04gKSxcbiAgICAgICAgICAgICAgICBvblJlbGVhc2U6ICBvblByZXZpb3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICBvbkZvY3VzOiAgICBvbkZvY3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICBvbkJsdXI6ICAgICBvbkJsdXJIYW5kbGVyXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5uZXh0QnV0dG9uID0gbmV3ICQuQnV0dG9uKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiAgICB0aGlzLm5leHRCdXR0b24gPyAkLmdldEVsZW1lbnQoIHRoaXMubmV4dEJ1dHRvbiApIDogbnVsbCxcbiAgICAgICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgIGNsaWNrRGlzdFRocmVzaG9sZDogdGhpcy5jbGlja0Rpc3RUaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogICAgJC5nZXRTdHJpbmcoIFwiVG9vbHRpcHMuTmV4dFBhZ2VcIiApLFxuICAgICAgICAgICAgICAgIHNyY1Jlc3Q6ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMubmV4dC5SRVNUICksXG4gICAgICAgICAgICAgICAgc3JjR3JvdXA6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5uZXh0LkdST1VQICksXG4gICAgICAgICAgICAgICAgc3JjSG92ZXI6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5uZXh0LkhPVkVSICksXG4gICAgICAgICAgICAgICAgc3JjRG93bjogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5uZXh0LkRPV04gKSxcbiAgICAgICAgICAgICAgICBvblJlbGVhc2U6ICBvbk5leHRIYW5kbGVyLFxuICAgICAgICAgICAgICAgIG9uRm9jdXM6ICAgIG9uRm9jdXNIYW5kbGVyLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogICAgIG9uQmx1ckhhbmRsZXJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiggIXRoaXMubmF2UHJldk5leHRXcmFwICl7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0J1dHRvbi5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy50aWxlU291cmNlcyB8fCAhdGhpcy50aWxlU291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRCdXR0b24uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiggdXNlR3JvdXAgKXtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luZyA9IG5ldyAkLkJ1dHRvbkdyb3VwKHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0J1dHRvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luZ0NvbnRyb2wgPSB0aGlzLnBhZ2luZy5lbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMudG9vbGJhciApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXIuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5nQ29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHthbmNob3I6ICQuQ29udHJvbEFuY2hvci5CT1RUT01fUklHSFR9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5nQ29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHthbmNob3I6IHRoaXMuc2VxdWVuY2VDb250cm9sQW5jaG9yIHx8ICQuQ29udHJvbEFuY2hvci5UT1BfTEVGVH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKi9cbiAgICBiaW5kU3RhbmRhcmRDb250cm9sczogZnVuY3Rpb24oKXtcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgLy8gTmF2aWdhdGlvbiBDb250cm9sc1xuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICB2YXIgYmVnaW5ab29taW5nSW5IYW5kbGVyICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBiZWdpblpvb21pbmdJbiApLFxuICAgICAgICAgICAgZW5kWm9vbWluZ0hhbmRsZXIgICAgICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBlbmRab29taW5nICksXG4gICAgICAgICAgICBkb1NpbmdsZVpvb21JbkhhbmRsZXIgICA9ICQuZGVsZWdhdGUoIHRoaXMsIGRvU2luZ2xlWm9vbUluICksXG4gICAgICAgICAgICBiZWdpblpvb21pbmdPdXRIYW5kbGVyICA9ICQuZGVsZWdhdGUoIHRoaXMsIGJlZ2luWm9vbWluZ091dCApLFxuICAgICAgICAgICAgZG9TaW5nbGVab29tT3V0SGFuZGxlciAgPSAkLmRlbGVnYXRlKCB0aGlzLCBkb1NpbmdsZVpvb21PdXQgKSxcbiAgICAgICAgICAgIG9uSG9tZUhhbmRsZXIgICAgICAgICAgID0gJC5kZWxlZ2F0ZSggdGhpcywgb25Ib21lICksXG4gICAgICAgICAgICBvbkZ1bGxTY3JlZW5IYW5kbGVyICAgICA9ICQuZGVsZWdhdGUoIHRoaXMsIG9uRnVsbFNjcmVlbiApLFxuICAgICAgICAgICAgb25Sb3RhdGVMZWZ0SGFuZGxlciAgICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBvblJvdGF0ZUxlZnQgKSxcbiAgICAgICAgICAgIG9uUm90YXRlUmlnaHRIYW5kbGVyICAgID0gJC5kZWxlZ2F0ZSggdGhpcywgb25Sb3RhdGVSaWdodCApLFxuICAgICAgICAgICAgb25Gb2N1c0hhbmRsZXIgICAgICAgICAgPSAkLmRlbGVnYXRlKCB0aGlzLCBvbkZvY3VzICksXG4gICAgICAgICAgICBvbkJsdXJIYW5kbGVyICAgICAgICAgICA9ICQuZGVsZWdhdGUoIHRoaXMsIG9uQmx1ciApLFxuICAgICAgICAgICAgbmF2SW1hZ2VzICAgICAgICAgICAgICAgPSB0aGlzLm5hdkltYWdlcyxcbiAgICAgICAgICAgIGJ1dHRvbnMgICAgICAgICAgICAgICAgID0gW10sXG4gICAgICAgICAgICB1c2VHcm91cCAgICAgICAgICAgICAgICA9IHRydWUgO1xuXG5cbiAgICAgICAgaWYgKCB0aGlzLnNob3dOYXZpZ2F0aW9uQ29udHJvbCApIHtcblxuICAgICAgICAgICAgaWYoIHRoaXMuem9vbUluQnV0dG9uIHx8IHRoaXMuem9vbU91dEJ1dHRvbiB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaG9tZUJ1dHRvbiB8fCB0aGlzLmZ1bGxQYWdlQnV0dG9uIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGVMZWZ0QnV0dG9uIHx8IHRoaXMucm90YXRlUmlnaHRCdXR0b24gKSB7XG4gICAgICAgICAgICAgICAgLy9pZiB3ZSBhcmUgYmluZGluZyB0byBjdXN0b20gYnV0dG9ucyB0aGVuIGxheW91dCBhbmRcbiAgICAgICAgICAgICAgICAvL2dyb3VwaW5nIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgcGFnZSBhdXRob3JcbiAgICAgICAgICAgICAgICB1c2VHcm91cCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIHRoaXMuc2hvd1pvb21Db250cm9sICkge1xuICAgICAgICAgICAgICAgIGJ1dHRvbnMucHVzaCggdGhpcy56b29tSW5CdXR0b24gPSBuZXcgJC5CdXR0b24oe1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAgICB0aGlzLnpvb21JbkJ1dHRvbiA/ICQuZ2V0RWxlbWVudCggdGhpcy56b29tSW5CdXR0b24gKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZVRocmVzaG9sZDogdGhpcy5jbGlja1RpbWVUaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrRGlzdFRocmVzaG9sZDogdGhpcy5jbGlja0Rpc3RUaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICAgICQuZ2V0U3RyaW5nKCBcIlRvb2x0aXBzLlpvb21JblwiICksXG4gICAgICAgICAgICAgICAgICAgIHNyY1Jlc3Q6ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMuem9vbUluLlJFU1QgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjR3JvdXA6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy56b29tSW4uR1JPVVAgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjSG92ZXI6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy56b29tSW4uSE9WRVIgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjRG93bjogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy56b29tSW4uRE9XTiApLFxuICAgICAgICAgICAgICAgICAgICBvblByZXNzOiAgICBiZWdpblpvb21pbmdJbkhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZTogIGVuZFpvb21pbmdIYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAgICBkb1NpbmdsZVpvb21JbkhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRW50ZXI6ICAgIGJlZ2luWm9vbWluZ0luSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25FeGl0OiAgICAgZW5kWm9vbWluZ0hhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRm9jdXM6ICAgIG9uRm9jdXNIYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkJsdXI6ICAgICBvbkJsdXJIYW5kbGVyXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKCB0aGlzLnpvb21PdXRCdXR0b24gPSBuZXcgJC5CdXR0b24oe1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAgICB0aGlzLnpvb21PdXRCdXR0b24gPyAkLmdldEVsZW1lbnQoIHRoaXMuem9vbU91dEJ1dHRvbiApIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiB0aGlzLmNsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tEaXN0VGhyZXNob2xkOiB0aGlzLmNsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogICAgJC5nZXRTdHJpbmcoIFwiVG9vbHRpcHMuWm9vbU91dFwiICksXG4gICAgICAgICAgICAgICAgICAgIHNyY1Jlc3Q6ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMuem9vbU91dC5SRVNUICksXG4gICAgICAgICAgICAgICAgICAgIHNyY0dyb3VwOiAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMuem9vbU91dC5HUk9VUCApLFxuICAgICAgICAgICAgICAgICAgICBzcmNIb3ZlcjogICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLnpvb21PdXQuSE9WRVIgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjRG93bjogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy56b29tT3V0LkRPV04gKSxcbiAgICAgICAgICAgICAgICAgICAgb25QcmVzczogICAgYmVnaW5ab29taW5nT3V0SGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25SZWxlYXNlOiAgZW5kWm9vbWluZ0hhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICAgIGRvU2luZ2xlWm9vbU91dEhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRW50ZXI6ICAgIGJlZ2luWm9vbWluZ091dEhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uRXhpdDogICAgIGVuZFpvb21pbmdIYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzOiAgICBvbkZvY3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAgICAgb25CbHVySGFuZGxlclxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0aGlzLnNob3dIb21lQ29udHJvbCApIHtcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goIHRoaXMuaG9tZUJ1dHRvbiA9IG5ldyAkLkJ1dHRvbih7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICAgIHRoaXMuaG9tZUJ1dHRvbiA/ICQuZ2V0RWxlbWVudCggdGhpcy5ob21lQnV0dG9uICkgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAgICAkLmdldFN0cmluZyggXCJUb29sdGlwcy5Ib21lXCIgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjUmVzdDogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5ob21lLlJFU1QgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjR3JvdXA6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5ob21lLkdST1VQICksXG4gICAgICAgICAgICAgICAgICAgIHNyY0hvdmVyOiAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMuaG9tZS5IT1ZFUiApLFxuICAgICAgICAgICAgICAgICAgICBzcmNEb3duOiAgICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLmhvbWUuRE9XTiApLFxuICAgICAgICAgICAgICAgICAgICBvblJlbGVhc2U6ICBvbkhvbWVIYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzOiAgICBvbkZvY3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAgICAgb25CbHVySGFuZGxlclxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0aGlzLnNob3dGdWxsUGFnZUNvbnRyb2wgKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKCB0aGlzLmZ1bGxQYWdlQnV0dG9uID0gbmV3ICQuQnV0dG9uKHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogICAgdGhpcy5mdWxsUGFnZUJ1dHRvbiA/ICQuZ2V0RWxlbWVudCggdGhpcy5mdWxsUGFnZUJ1dHRvbiApIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiB0aGlzLmNsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tEaXN0VGhyZXNob2xkOiB0aGlzLmNsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogICAgJC5nZXRTdHJpbmcoIFwiVG9vbHRpcHMuRnVsbFBhZ2VcIiApLFxuICAgICAgICAgICAgICAgICAgICBzcmNSZXN0OiAgICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLmZ1bGxwYWdlLlJFU1QgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjR3JvdXA6ICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5mdWxscGFnZS5HUk9VUCApLFxuICAgICAgICAgICAgICAgICAgICBzcmNIb3ZlcjogICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLmZ1bGxwYWdlLkhPVkVSICksXG4gICAgICAgICAgICAgICAgICAgIHNyY0Rvd246ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMuZnVsbHBhZ2UuRE9XTiApLFxuICAgICAgICAgICAgICAgICAgICBvblJlbGVhc2U6ICBvbkZ1bGxTY3JlZW5IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzOiAgICBvbkZvY3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAgICAgb25CbHVySGFuZGxlclxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0aGlzLnNob3dSb3RhdGlvbkNvbnRyb2wgKSB7XG4gICAgICAgICAgICAgICAgYnV0dG9ucy5wdXNoKCB0aGlzLnJvdGF0ZUxlZnRCdXR0b24gPSBuZXcgJC5CdXR0b24oe1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAgICB0aGlzLnJvdGF0ZUxlZnRCdXR0b24gPyAkLmdldEVsZW1lbnQoIHRoaXMucm90YXRlTGVmdEJ1dHRvbiApIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiB0aGlzLmNsaWNrVGltZVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tEaXN0VGhyZXNob2xkOiB0aGlzLmNsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogICAgJC5nZXRTdHJpbmcoIFwiVG9vbHRpcHMuUm90YXRlTGVmdFwiICksXG4gICAgICAgICAgICAgICAgICAgIHNyY1Jlc3Q6ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMucm90YXRlbGVmdC5SRVNUICksXG4gICAgICAgICAgICAgICAgICAgIHNyY0dyb3VwOiAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMucm90YXRlbGVmdC5HUk9VUCApLFxuICAgICAgICAgICAgICAgICAgICBzcmNIb3ZlcjogICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLnJvdGF0ZWxlZnQuSE9WRVIgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjRG93bjogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5yb3RhdGVsZWZ0LkRPV04gKSxcbiAgICAgICAgICAgICAgICAgICAgb25SZWxlYXNlOiAgb25Sb3RhdGVMZWZ0SGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25Gb2N1czogICAgb25Gb2N1c0hhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgIG9uQmx1cjogICAgIG9uQmx1ckhhbmRsZXJcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goIHRoaXMucm90YXRlUmlnaHRCdXR0b24gPSBuZXcgJC5CdXR0b24oe1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAgICB0aGlzLnJvdGF0ZVJpZ2h0QnV0dG9uID8gJC5nZXRFbGVtZW50KCB0aGlzLnJvdGF0ZVJpZ2h0QnV0dG9uICkgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAgICAkLmdldFN0cmluZyggXCJUb29sdGlwcy5Sb3RhdGVSaWdodFwiICksXG4gICAgICAgICAgICAgICAgICAgIHNyY1Jlc3Q6ICAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMucm90YXRlcmlnaHQuUkVTVCApLFxuICAgICAgICAgICAgICAgICAgICBzcmNHcm91cDogICByZXNvbHZlVXJsKCB0aGlzLnByZWZpeFVybCwgbmF2SW1hZ2VzLnJvdGF0ZXJpZ2h0LkdST1VQICksXG4gICAgICAgICAgICAgICAgICAgIHNyY0hvdmVyOiAgIHJlc29sdmVVcmwoIHRoaXMucHJlZml4VXJsLCBuYXZJbWFnZXMucm90YXRlcmlnaHQuSE9WRVIgKSxcbiAgICAgICAgICAgICAgICAgICAgc3JjRG93bjogICAgcmVzb2x2ZVVybCggdGhpcy5wcmVmaXhVcmwsIG5hdkltYWdlcy5yb3RhdGVyaWdodC5ET1dOICksXG4gICAgICAgICAgICAgICAgICAgIG9uUmVsZWFzZTogIG9uUm90YXRlUmlnaHRIYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzOiAgICBvbkZvY3VzSGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyOiAgICAgb25CbHVySGFuZGxlclxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIHVzZUdyb3VwICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IG5ldyAkLkJ1dHRvbkdyb3VwKHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm5hdkNvbnRyb2wgID0gdGhpcy5idXR0b25zLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRIYW5kbGVyKCAnb3BlbicsICQuZGVsZWdhdGUoIHRoaXMsIGxpZ2h0VXAgKSApO1xuXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMudG9vbGJhciApe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXIuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHthbmNob3I6ICQuQ29udHJvbEFuY2hvci5UT1BfTEVGVH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdkNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICB7YW5jaG9yOiB0aGlzLm5hdmlnYXRpb25Db250cm9sQW5jaG9yIHx8ICQuQ29udHJvbEFuY2hvci5UT1BfTEVGVH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYWN0aXZlIHBhZ2Ugb2YgYSBzZXF1ZW5jZVxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge051bWJlcn1cbiAgICAgKi9cbiAgICBjdXJyZW50UGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXF1ZW5jZUluZGV4O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpwYWdlXG4gICAgICovXG4gICAgZ29Ub1BhZ2U6IGZ1bmN0aW9uKCBwYWdlICl7XG4gICAgICAgIGlmKCB0aGlzLnRpbGVTb3VyY2VzICYmIHBhZ2UgPj0gMCAmJiBwYWdlIDwgdGhpcy50aWxlU291cmNlcy5sZW5ndGggKXtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIHBhZ2UgaXMgY2hhbmdlZCBvbiBhIHZpZXdlciBjb25maWd1cmVkIHdpdGggbXVsdGlwbGUgaW1hZ2Ugc291cmNlcyAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNnb1RvUGFnZX0pLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCBwYWdlXG4gICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwYWdlIC0gVGhlIHBhZ2UgaW5kZXguXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMucmFpc2VFdmVudCggJ3BhZ2UnLCB7IHBhZ2U6IHBhZ2UgfSApO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZUluZGV4ID0gcGFnZTtcblxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VxdWVuY2VCdXR0b25zKCBwYWdlICk7XG5cbiAgICAgICAgICAgIHRoaXMub3BlbiggdGhpcy50aWxlU291cmNlc1sgcGFnZSBdICk7XG5cbiAgICAgICAgICAgIGlmKCB0aGlzLnJlZmVyZW5jZVN0cmlwICl7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VTdHJpcC5zZXRGb2N1cyggcGFnZSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgLyoqXG4gICAgICogQWRkcyBhbiBodG1sIGVsZW1lbnQgYXMgYW4gb3ZlcmxheSB0byB0aGUgY3VycmVudCB2aWV3cG9ydC4gIFVzZWZ1bCBmb3JcbiAgICAgKiBoaWdobGlnaHRpbmcgd29yZHMgb3IgYXJlYXMgb2YgaW50ZXJlc3Qgb24gYW4gaW1hZ2Ugb3Igb3RoZXIgem9vbWFibGVcbiAgICAgKiBpbnRlcmZhY2UuIFRoZSBvdmVybGF5cyBhZGRlZCB2aWEgdGhpcyBtZXRob2QgYXJlIHJlbW92ZWQgd2hlbiB0aGUgdmlld3BvcnRcbiAgICAgKiBpcyBjbG9zZWQgd2hpY2ggaW5jbHVkZSB3aGVuIGNoYW5naW5nIHBhZ2UuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd8T2JqZWN0fSBlbGVtZW50IC0gQSByZWZlcmVuY2UgdG8gYW4gZWxlbWVudCBvciBhbiBpZCBmb3JcbiAgICAgKiAgICAgIHRoZSBlbGVtZW50IHdoaWNoIHdpbGwgYmUgb3ZlcmxheWVkLiBPciBhbiBPYmplY3Qgc3BlY2lmeWluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJsYXkuXG4gICAgICogICAgICBJZiB1c2luZyBhbiBvYmplY3QsIHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5PdmVybGF5fSBmb3IgYSBsaXN0IG9mXG4gICAgICogICAgICBhbGwgYXZhaWxhYmxlIG9wdGlvbnMuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fE9wZW5TZWFkcmFnb24uUmVjdH0gbG9jYXRpb24gLSBUaGUgcG9pbnQgb3JcbiAgICAgKiAgICAgIHJlY3RhbmdsZSB3aGljaCB3aWxsIGJlIG92ZXJsYXllZC4gVGhpcyBpcyBhIHZpZXdwb3J0IHJlbGF0aXZlIGxvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IHBsYWNlbWVudCAtIFRoZSBwb3NpdGlvbiBvZiB0aGVcbiAgICAgKiAgICAgIHZpZXdwb3J0IHdoaWNoIHRoZSBsb2NhdGlvbiBjb29yZGluYXRlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgcmVsYXRpdmVcbiAgICAgKiAgICAgIHRvLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uRHJhdyAtIElmIHN1cHBsaWVkIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheVxuICAgICAqICAgICAgbmVlZHMgdG8gYmUgZHJhd24uIEl0IGl0IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGJhY2sgdG8gZG8gYW55IGRyYXdpbmcvcG9zaXRpb25pbmcuXG4gICAgICogICAgICBJdCBpcyBwYXNzZWQgcG9zaXRpb24sIHNpemUgYW5kIGVsZW1lbnQuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6YWRkLW92ZXJsYXlcbiAgICAgKi9cbiAgICBhZGRPdmVybGF5OiBmdW5jdGlvbiggZWxlbWVudCwgbG9jYXRpb24sIHBsYWNlbWVudCwgb25EcmF3ICkge1xuICAgICAgICB2YXIgb3B0aW9ucztcbiAgICAgICAgaWYoICQuaXNQbGFpbk9iamVjdCggZWxlbWVudCApICl7XG4gICAgICAgICAgICBvcHRpb25zID0gZWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICAgICAgICAgICAgb25EcmF3OiBvbkRyYXdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBvcHRpb25zLmVsZW1lbnQgKTtcblxuICAgICAgICBpZiAoIGdldE92ZXJsYXlJbmRleCggdGhpcy5jdXJyZW50T3ZlcmxheXMsIGVsZW1lbnQgKSA+PSAwICkge1xuICAgICAgICAgICAgLy8gdGhleSdyZSB0cnlpbmcgdG8gYWRkIGEgZHVwbGljYXRlIG92ZXJsYXlcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG92ZXJsYXkgPSBnZXRPdmVybGF5T2JqZWN0KCB0aGlzLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5jdXJyZW50T3ZlcmxheXMucHVzaChvdmVybGF5KTtcbiAgICAgICAgb3ZlcmxheS5kcmF3SFRNTCggdGhpcy5vdmVybGF5c0NvbnRhaW5lciwgdGhpcy52aWV3cG9ydCApO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiBhbiBvdmVybGF5IGlzIGFkZGVkIHRvIHRoZSB2aWV3ZXIgKHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjYWRkT3ZlcmxheX0pLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgYWRkLW92ZXJsYXlcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge0VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgb3ZlcmxheSBlbGVtZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR8T3BlblNlYWRyYWdvbi5SZWN0fSBsb2NhdGlvblxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBwbGFjZW1lbnRcbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAnYWRkLW92ZXJsYXknLCB7XG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbnMubG9jYXRpb24sXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG9wdGlvbnMucGxhY2VtZW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgb3ZlcmxheSByZXByZXNlbnRlZCBieSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG9yXG4gICAgICogZWxlbWVudCBpZCBtb3ZpbmcgaXQgdG8gdGhlIG5ldyBsb2NhdGlvbiwgcmVsYXRpdmUgdG8gdGhlIG5ldyBwbGFjZW1lbnQuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnQgLSBBIHJlZmVyZW5jZSB0byBhbiBlbGVtZW50IG9yIGFuIGlkIGZvclxuICAgICAqICAgICAgdGhlIGVsZW1lbnQgd2hpY2ggaXMgb3ZlcmxheWVkLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludHxPcGVuU2VhZHJhZ29uLlJlY3R9IGxvY2F0aW9uIC0gVGhlIHBvaW50IG9yXG4gICAgICogICAgICByZWN0YW5nbGUgd2hpY2ggd2lsbCBiZSBvdmVybGF5ZWQuIFRoaXMgaXMgYSB2aWV3cG9ydCByZWxhdGl2ZSBsb2NhdGlvbi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBwbGFjZW1lbnQgLSBUaGUgcG9zaXRpb24gb2YgdGhlXG4gICAgICogICAgICB2aWV3cG9ydCB3aGljaCB0aGUgbG9jYXRpb24gY29vcmRpbmF0ZXMgd2lsbCBiZSB0cmVhdGVkIGFzIHJlbGF0aXZlXG4gICAgICogICAgICB0by5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDp1cGRhdGUtb3ZlcmxheVxuICAgICAqL1xuICAgIHVwZGF0ZU92ZXJsYXk6IGZ1bmN0aW9uKCBlbGVtZW50LCBsb2NhdGlvbiwgcGxhY2VtZW50ICkge1xuICAgICAgICB2YXIgaTtcblxuICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgIGkgPSBnZXRPdmVybGF5SW5kZXgoIHRoaXMuY3VycmVudE92ZXJsYXlzLCBlbGVtZW50ICk7XG5cbiAgICAgICAgaWYgKCBpID49IDAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPdmVybGF5c1sgaSBdLnVwZGF0ZSggbG9jYXRpb24sIHBsYWNlbWVudCApO1xuICAgICAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uZm9yY2VSZWRyYXcgPSB0cnVlO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiBhbiBvdmVybGF5J3MgbG9jYXRpb24gb3IgcGxhY2VtZW50IGNoYW5nZXNcbiAgICAgICAgICAgICAqIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI3VwZGF0ZU92ZXJsYXl9KS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXZlbnQgdXBkYXRlLW92ZXJsYXlcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlXG4gICAgICAgICAgICAgKiBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7RWxlbWVudH0gZWxlbWVudFxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fE9wZW5TZWFkcmFnb24uUmVjdH0gbG9jYXRpb25cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IHBsYWNlbWVudFxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnJhaXNlRXZlbnQoICd1cGRhdGUtb3ZlcmxheScsIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYW4gb3ZlcmxheSBpZGVudGlmaWVkIGJ5IHRoZSByZWZlcmVuY2UgZWxlbWVudCBvciBlbGVtZW50IGlkXG4gICAgICogYW5kIHNjaGVkdWxlcyBhbiB1cGRhdGUuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnQgLSBBIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvciBhblxuICAgICAqICAgICAgZWxlbWVudCBpZCB3aGljaCByZXByZXNlbnQgdGhlIG92ZWxheSBjb250ZW50IHRvIGJlIHJlbW92ZWQuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6cmVtb3ZlLW92ZXJsYXlcbiAgICAgKi9cbiAgICByZW1vdmVPdmVybGF5OiBmdW5jdGlvbiggZWxlbWVudCApIHtcbiAgICAgICAgdmFyIGk7XG5cbiAgICAgICAgZWxlbWVudCA9ICQuZ2V0RWxlbWVudCggZWxlbWVudCApO1xuICAgICAgICBpID0gZ2V0T3ZlcmxheUluZGV4KCB0aGlzLmN1cnJlbnRPdmVybGF5cywgZWxlbWVudCApO1xuXG4gICAgICAgIGlmICggaSA+PSAwICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50T3ZlcmxheXNbIGkgXS5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPdmVybGF5cy5zcGxpY2UoIGksIDEgKTtcbiAgICAgICAgICAgIFRISVNbIHRoaXMuaGFzaCBdLmZvcmNlUmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gYW4gb3ZlcmxheSBpcyByZW1vdmVkIGZyb20gdGhlIHZpZXdlclxuICAgICAgICAgICAgICogKHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjcmVtb3ZlT3ZlcmxheX0pLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCByZW1vdmUtb3ZlcmxheVxuICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgICAgICAgICAqIFZpZXdlciB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtFbGVtZW50fSBlbGVtZW50IC0gVGhlIG92ZXJsYXkgZWxlbWVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAncmVtb3ZlLW92ZXJsYXknLCB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGN1cnJlbnRseSBjb25maWd1cmVkIE92ZXJsYXlzIGZyb20gdGhpcyBWaWV3ZXIgYW5kIHNjaGVkdWxlc1xuICAgICAqIGFuIHVwZGF0ZS5cbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6Y2xlYXItb3ZlcmxheVxuICAgICAqL1xuICAgIGNsZWFyT3ZlcmxheXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICB3aGlsZSAoIHRoaXMuY3VycmVudE92ZXJsYXlzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPdmVybGF5cy5wb3AoKS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uZm9yY2VSZWRyYXcgPSB0cnVlO1xuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gYWxsIG92ZXJsYXlzIGFyZSByZW1vdmVkIGZyb20gdGhlIHZpZXdlciAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLkRyYXdlciNjbGVhck92ZXJsYXlzfSkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCBjbGVhci1vdmVybGF5XG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAnY2xlYXItb3ZlcmxheScsIHt9ICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAgLyoqXG4gICAgICogRmluZHMgYW4gb3ZlcmxheSBpZGVudGlmaWVkIGJ5IHRoZSByZWZlcmVuY2UgZWxlbWVudCBvciBlbGVtZW50IGlkXG4gICAgICogYW5kIHJldHVybnMgaXQgYXMgYW4gb2JqZWN0LCByZXR1cm4gbnVsbCBpZiBub3QgZm91bmQuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBwYXJhbSB7RWxlbWVudHxTdHJpbmd9IGVsZW1lbnQgLSBBIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvciBhblxuICAgICAqICAgICAgZWxlbWVudCBpZCB3aGljaCByZXByZXNlbnRzIHRoZSBvdmVybGF5IGNvbnRlbnQuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5PdmVybGF5fSB0aGUgbWF0Y2hpbmcgb3ZlcmxheSBvciBudWxsIGlmIG5vbmUgZm91bmQuXG4gICAgICovXG4gICAgZ2V0T3ZlcmxheUJ5SWQ6IGZ1bmN0aW9uKCBlbGVtZW50ICkge1xuICAgICAgICB2YXIgaTtcblxuICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBlbGVtZW50ICk7XG4gICAgICAgIGkgPSBnZXRPdmVybGF5SW5kZXgoIHRoaXMuY3VycmVudE92ZXJsYXlzLCBlbGVtZW50ICk7XG5cbiAgICAgICAgaWYgKGk+PTApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRPdmVybGF5c1tpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHNlcXVlbmNlIGJ1dHRvbnMuXG4gICAgICogQGZ1bmN0aW9uIE9wZW5TZWFkcmFnb24uVmlld2VyLnByb3RvdHlwZS5fdXBkYXRlU2VxdWVuY2VCdXR0b25zXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gU2VxdWVuY2UgVmFsdWVcbiAgICAgKi9cbiAgICBfdXBkYXRlU2VxdWVuY2VCdXR0b25zOiBmdW5jdGlvbiggcGFnZSApIHtcblxuICAgICAgICAgICAgaWYgKCB0aGlzLm5leHRCdXR0b24gKSB7XG4gICAgICAgICAgICAgICAgaWYoIXRoaXMudGlsZVNvdXJjZXMgfHwgdGhpcy50aWxlU291cmNlcy5sZW5ndGggLSAxID09PSBwYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRGlzYWJsZSBuZXh0IGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZiAoICF0aGlzLm5hdlByZXZOZXh0V3JhcCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dEJ1dHRvbi5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRCdXR0b24uZW5hYmxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzQnV0dG9uICkge1xuICAgICAgICAgICAgICAgIGlmICggcGFnZSA+IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vRW5hYmxlIHByZXZpb3VzIGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQnV0dG9uLmVuYWJsZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggIXRoaXMubmF2UHJldk5leHRXcmFwICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0J1dHRvbi5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGlzcGxheSBhIG1lc3NhZ2UgaW4gdGhlIHZpZXdwb3J0XG4gICAgICogQGZ1bmN0aW9uIE9wZW5TZWFkcmFnb24uVmlld2VyLnByb3RvdHlwZS5fc2hvd01lc3NhZ2VcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0IG1lc3NhZ2VcbiAgICAgKi9cbiAgICBfc2hvd01lc3NhZ2U6IGZ1bmN0aW9uICggbWVzc2FnZSApIHtcbiAgICAgICAgdGhpcy5faGlkZU1lc3NhZ2UoKTtcblxuICAgICAgICB2YXIgZGl2ID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcbiAgICAgICAgZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSggbWVzc2FnZSApICk7XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlRGl2ID0gJC5tYWtlQ2VudGVyZWROb2RlKCBkaXYgKTtcblxuICAgICAgICAkLmFkZENsYXNzKHRoaXMubWVzc2FnZURpdiwgXCJvcGVuc2VhZHJhZ29uLW1lc3NhZ2VcIik7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoIHRoaXMubWVzc2FnZURpdiApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBIaWRlIGFueSBjdXJyZW50bHkgZGlzcGxheWVkIHZpZXdwb3J0IG1lc3NhZ2VcbiAgICAgKiBAZnVuY3Rpb24gT3BlblNlYWRyYWdvbi5WaWV3ZXIucHJvdG90eXBlLl9oaWRlTWVzc2FnZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgX2hpZGVNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkaXYgPSB0aGlzLm1lc3NhZ2VEaXY7XG4gICAgICAgIGlmIChkaXYpIHtcbiAgICAgICAgICAgIGRpdi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRpdik7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5tZXNzYWdlRGl2O1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhpcyB2aWV3ZXIncyBnZXN0dXJlIHNldHRpbmdzIGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBkZXZpY2UgdHlwZS5cbiAgICAgKiBAbWV0aG9kXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgLSBUaGUgcG9pbnRlciBkZXZpY2UgdHlwZSB0byBnZXQgdGhlIGdlc3R1cmUgc2V0dGluZ3MgZm9yIChcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLikuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5HZXN0dXJlU2V0dGluZ3N9XG4gICAgICovXG4gICAgZ2VzdHVyZVNldHRpbmdzQnlEZXZpY2VUeXBlOiBmdW5jdGlvbiAoIHR5cGUgKSB7XG4gICAgICAgIHN3aXRjaCAoIHR5cGUgKSB7XG4gICAgICAgICAgICBjYXNlICdtb3VzZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VzdHVyZVNldHRpbmdzTW91c2U7XG4gICAgICAgICAgICBjYXNlICd0b3VjaCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VzdHVyZVNldHRpbmdzVG91Y2g7XG4gICAgICAgICAgICBjYXNlICdwZW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdlc3R1cmVTZXR0aW5nc1BlbjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VzdHVyZVNldHRpbmdzVW5rbm93bjtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2RyYXdPdmVybGF5czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5jdXJyZW50T3ZlcmxheXMubGVuZ3RoO1xuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50T3ZlcmxheXNbIGkgXS5kcmF3SFRNTCggdGhpcy5vdmVybGF5c0NvbnRhaW5lciwgdGhpcy52aWV3cG9ydCApO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENhbmNlbCB0aGUgXCJpbiBmbGlnaHRcIiBpbWFnZXMuXG4gICAgICovXG4gICAgX2NhbmNlbFBlbmRpbmdJbWFnZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9sb2FkUXVldWUgPSBbXTtcbiAgICB9XG59KTtcblxuXG4vKipcbiAqIF9nZXRTYWZlRWxlbVNpemUgaXMgbGlrZSBnZXRFbGVtZW50U2l6ZSgpLCBidXQgcmVmdXNlcyB0byByZXR1cm4gMCBmb3IgeCBvciB5LFxuICogd2hpY2ggd2FzIGNhdXNpbmcgc29tZSBjYWxsaW5nIG9wZXJhdGlvbnMgdG8gcmV0dXJuIE5hTi5cbiAqIEByZXR1cm5zIHtQb2ludH1cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIF9nZXRTYWZlRWxlbVNpemUgKG9FbGVtZW50KSB7XG4gICAgb0VsZW1lbnQgPSAkLmdldEVsZW1lbnQoIG9FbGVtZW50ICk7XG5cbiAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgIChvRWxlbWVudC5jbGllbnRXaWR0aCA9PT0gMCA/IDEgOiBvRWxlbWVudC5jbGllbnRXaWR0aCksXG4gICAgICAgIChvRWxlbWVudC5jbGllbnRIZWlnaHQgPT09IDAgPyAxIDogb0VsZW1lbnQuY2xpZW50SGVpZ2h0KVxuICAgICk7XG59XG5cbi8qKlxuICogQGZ1bmN0aW9uXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBnZXRUaWxlU291cmNlSW1wbGVtZW50YXRpb24oIHZpZXdlciwgdGlsZVNvdXJjZSwgc3VjY2Vzc0NhbGxiYWNrLFxuICAgIGZhaWxDYWxsYmFjayApIHtcbiAgICB2YXIgX3RoaXMgPSB2aWV3ZXI7XG5cbiAgICAvL2FsbG93IHBsYWluIHhtbCBzdHJpbmdzIG9yIGpzb24gc3RyaW5ncyB0byBiZSBwYXJzZWQgaGVyZVxuICAgIGlmICggJC50eXBlKCB0aWxlU291cmNlICkgPT0gJ3N0cmluZycgKSB7XG4gICAgICAgIGlmICggdGlsZVNvdXJjZS5tYXRjaCggL1xccyo8LiovICkgKSB7XG4gICAgICAgICAgICB0aWxlU291cmNlID0gJC5wYXJzZVhtbCggdGlsZVNvdXJjZSApO1xuICAgICAgICB9IGVsc2UgaWYgKCB0aWxlU291cmNlLm1hdGNoKCAvXFxzKltcXHtcXFtdLiovICkgKSB7XG4gICAgICAgICAgICB0aWxlU291cmNlID0gJC5wYXJzZUpTT04odGlsZVNvdXJjZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3YWl0VW50aWxSZWFkeSh0aWxlU291cmNlLCBvcmlnaW5hbFRpbGVTb3VyY2UpIHtcbiAgICAgICAgaWYgKHRpbGVTb3VyY2UucmVhZHkpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh0aWxlU291cmNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRpbGVTb3VyY2UuYWRkSGFuZGxlcigncmVhZHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHRpbGVTb3VyY2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aWxlU291cmNlLmFkZEhhbmRsZXIoJ29wZW4tZmFpbGVkJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgZmFpbENhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXZlbnQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbFRpbGVTb3VyY2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICggJC50eXBlKCB0aWxlU291cmNlICkgPT0gJ3N0cmluZycgKSB7XG4gICAgICAgICAgICAvL0lmIGl0cyBzdGlsbCBhIHN0cmluZyBpdCBtZWFucyBpdCBtdXN0IGJlIGEgdXJsIGF0IHRoaXMgcG9pbnRcbiAgICAgICAgICAgIHRpbGVTb3VyY2UgPSBuZXcgJC5UaWxlU291cmNlKHtcbiAgICAgICAgICAgICAgICB1cmw6IHRpbGVTb3VyY2UsXG4gICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW5Qb2xpY3k6IHZpZXdlci5jcm9zc09yaWdpblBvbGljeSxcbiAgICAgICAgICAgICAgICBhamF4V2l0aENyZWRlbnRpYWxzOiB2aWV3ZXIuYWpheFdpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICB1c2VDYW52YXM6IHZpZXdlci51c2VDYW52YXMsXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGV2ZW50ICkge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soIGV2ZW50LnRpbGVTb3VyY2UgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRpbGVTb3VyY2UuYWRkSGFuZGxlciggJ29wZW4tZmFpbGVkJywgZnVuY3Rpb24oIGV2ZW50ICkge1xuICAgICAgICAgICAgICAgIGZhaWxDYWxsYmFjayggZXZlbnQgKTtcbiAgICAgICAgICAgIH0gKTtcblxuICAgICAgICB9IGVsc2UgaWYgKCQuaXNQbGFpbk9iamVjdCh0aWxlU291cmNlKSB8fCB0aWxlU291cmNlLm5vZGVUeXBlKSB7XG4gICAgICAgICAgICBpZiAoIXRpbGVTb3VyY2UuY3Jvc3NPcmlnaW5Qb2xpY3kgJiYgdmlld2VyLmNyb3NzT3JpZ2luUG9saWN5KSB7XG4gICAgICAgICAgICAgICAgdGlsZVNvdXJjZS5jcm9zc09yaWdpblBvbGljeSA9IHZpZXdlci5jcm9zc09yaWdpblBvbGljeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aWxlU291cmNlLmFqYXhXaXRoQ3JlZGVudGlhbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRpbGVTb3VyY2UuYWpheFdpdGhDcmVkZW50aWFscyA9IHZpZXdlci5hamF4V2l0aENyZWRlbnRpYWxzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpbGVTb3VyY2UudXNlQ2FudmFzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aWxlU291cmNlLnVzZUNhbnZhcyA9IHZpZXdlci51c2VDYW52YXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggJC5pc0Z1bmN0aW9uKCB0aWxlU291cmNlLmdldFRpbGVVcmwgKSApIHtcbiAgICAgICAgICAgICAgICAvL0N1c3RvbSB0aWxlIHNvdXJjZVxuICAgICAgICAgICAgICAgIHZhciBjdXN0b21UaWxlU291cmNlID0gbmV3ICQuVGlsZVNvdXJjZSggdGlsZVNvdXJjZSApO1xuICAgICAgICAgICAgICAgIGN1c3RvbVRpbGVTb3VyY2UuZ2V0VGlsZVVybCA9IHRpbGVTb3VyY2UuZ2V0VGlsZVVybDtcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soIGN1c3RvbVRpbGVTb3VyY2UgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy9pbmxpbmUgY29uZmlndXJhdGlvblxuICAgICAgICAgICAgICAgIHZhciAkVGlsZVNvdXJjZSA9ICQuVGlsZVNvdXJjZS5kZXRlcm1pbmVUeXBlKCBfdGhpcywgdGlsZVNvdXJjZSApO1xuICAgICAgICAgICAgICAgIGlmICggISRUaWxlU291cmNlICkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsQ2FsbGJhY2soIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiVW5hYmxlIHRvIGxvYWQgVGlsZVNvdXJjZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB0aWxlU291cmNlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gJFRpbGVTb3VyY2UucHJvdG90eXBlLmNvbmZpZ3VyZS5hcHBseSggX3RoaXMsIFsgdGlsZVNvdXJjZSBdICk7XG4gICAgICAgICAgICAgICAgd2FpdFVudGlsUmVhZHkobmV3ICRUaWxlU291cmNlKG9wdGlvbnMpLCB0aWxlU291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vY2FuIGFzc3VtZSBpdCdzIGFscmVhZHkgYSB0aWxlIHNvdXJjZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgd2FpdFVudGlsUmVhZHkodGlsZVNvdXJjZSwgdGlsZVNvdXJjZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0T3ZlcmxheU9iamVjdCggdmlld2VyLCBvdmVybGF5ICkge1xuICAgIGlmICggb3ZlcmxheSBpbnN0YW5jZW9mICQuT3ZlcmxheSApIHtcbiAgICAgICAgcmV0dXJuIG92ZXJsYXk7XG4gICAgfVxuXG4gICAgdmFyIGVsZW1lbnQgPSBudWxsO1xuICAgIGlmICggb3ZlcmxheS5lbGVtZW50ICkge1xuICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBvdmVybGF5LmVsZW1lbnQgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaWQgPSBvdmVybGF5LmlkID9cbiAgICAgICAgICAgIG92ZXJsYXkuaWQgOlxuICAgICAgICAgICAgXCJvcGVuc2VhZHJhZ29uLW92ZXJsYXktXCIgKyBNYXRoLmZsb29yKCBNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAgKTtcblxuICAgICAgICBlbGVtZW50ID0gJC5nZXRFbGVtZW50KCBvdmVybGF5LmlkICk7XG4gICAgICAgIGlmICggIWVsZW1lbnQgKSB7XG4gICAgICAgICAgICBlbGVtZW50ICAgICAgICAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImFcIiApO1xuICAgICAgICAgICAgZWxlbWVudC5ocmVmICAgID0gXCIjL292ZXJsYXkvXCIgKyBpZDtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50LmlkID0gaWQ7XG4gICAgICAgICQuYWRkQ2xhc3MoIGVsZW1lbnQsIG92ZXJsYXkuY2xhc3NOYW1lID9cbiAgICAgICAgICAgIG92ZXJsYXkuY2xhc3NOYW1lIDpcbiAgICAgICAgICAgIFwib3BlbnNlYWRyYWdvbi1vdmVybGF5XCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgbG9jYXRpb24gPSBvdmVybGF5LmxvY2F0aW9uO1xuICAgIHZhciB3aWR0aCA9IG92ZXJsYXkud2lkdGg7XG4gICAgdmFyIGhlaWdodCA9IG92ZXJsYXkuaGVpZ2h0O1xuICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgdmFyIHggPSBvdmVybGF5Lng7XG4gICAgICAgIHZhciB5ID0gb3ZlcmxheS55O1xuICAgICAgICBpZiAob3ZlcmxheS5weCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgcmVjdCA9IHZpZXdlci52aWV3cG9ydC5pbWFnZVRvVmlld3BvcnRSZWN0YW5nbGUobmV3ICQuUmVjdChcbiAgICAgICAgICAgICAgICBvdmVybGF5LnB4LFxuICAgICAgICAgICAgICAgIG92ZXJsYXkucHksXG4gICAgICAgICAgICAgICAgd2lkdGggfHwgMCxcbiAgICAgICAgICAgICAgICBoZWlnaHQgfHwgMCkpO1xuICAgICAgICAgICAgeCA9IHJlY3QueDtcbiAgICAgICAgICAgIHkgPSByZWN0Lnk7XG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoICE9PSB1bmRlZmluZWQgPyByZWN0LndpZHRoIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICE9PSB1bmRlZmluZWQgPyByZWN0LmhlaWdodCA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBsb2NhdGlvbiA9IG5ldyAkLlBvaW50KHgsIHkpO1xuICAgIH1cblxuICAgIHZhciBwbGFjZW1lbnQgPSBvdmVybGF5LnBsYWNlbWVudDtcbiAgICBpZiAocGxhY2VtZW50ICYmICQudHlwZShwbGFjZW1lbnQpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHBsYWNlbWVudCA9ICQuUGxhY2VtZW50W292ZXJsYXkucGxhY2VtZW50LnRvVXBwZXJDYXNlKCldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgJC5PdmVybGF5KHtcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgICAgb25EcmF3OiBvdmVybGF5Lm9uRHJhdyxcbiAgICAgICAgY2hlY2tSZXNpemU6IG92ZXJsYXkuY2hlY2tSZXNpemUsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHJvdGF0aW9uTW9kZTogb3ZlcmxheS5yb3RhdGlvbk1vZGVcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBEZXRlcm1pbmVzIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gb3ZlcmxheSBpbiB0aGUgZ2l2ZW4gb3ZlcmxheXMgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGdldE92ZXJsYXlJbmRleCggb3ZlcmxheXMsIGVsZW1lbnQgKSB7XG4gICAgdmFyIGk7XG4gICAgZm9yICggaSA9IG92ZXJsYXlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICBpZiAoIG92ZXJsYXlzWyBpIF0uZWxlbWVudCA9PT0gZWxlbWVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTY2hlZHVsZXJzIHByb3ZpZGUgdGhlIGdlbmVyYWwgZW5naW5lIGZvciBhbmltYXRpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmZ1bmN0aW9uIHNjaGVkdWxlVXBkYXRlKCB2aWV3ZXIsIHVwZGF0ZUZ1bmMgKXtcbiAgICByZXR1cm4gJC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIGZ1bmN0aW9uKCl7XG4gICAgICAgIHVwZGF0ZUZ1bmMoIHZpZXdlciApO1xuICAgIH0gKTtcbn1cblxuXG4vL3Byb3ZpZGVzIGEgc2VxdWVuY2UgaW4gdGhlIGZhZGUgYW5pbWF0aW9uXG5mdW5jdGlvbiBzY2hlZHVsZUNvbnRyb2xzRmFkZSggdmlld2VyICkge1xuICAgICQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBmdW5jdGlvbigpe1xuICAgICAgICB1cGRhdGVDb250cm9sc0ZhZGUoIHZpZXdlciApO1xuICAgIH0pO1xufVxuXG5cbi8vaW5pdGlhdGVzIGFuIGFuaW1hdGlvbiB0byBoaWRlIHRoZSBjb250cm9sc1xuZnVuY3Rpb24gYmVnaW5Db250cm9sc0F1dG9IaWRlKCB2aWV3ZXIgKSB7XG4gICAgaWYgKCAhdmlld2VyLmF1dG9IaWRlQ29udHJvbHMgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlld2VyLmNvbnRyb2xzU2hvdWxkRmFkZSA9IHRydWU7XG4gICAgdmlld2VyLmNvbnRyb2xzRmFkZUJlZ2luVGltZSA9XG4gICAgICAgICQubm93KCkgK1xuICAgICAgICB2aWV3ZXIuY29udHJvbHNGYWRlRGVsYXk7XG5cbiAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKXtcbiAgICAgICAgc2NoZWR1bGVDb250cm9sc0ZhZGUoIHZpZXdlciApO1xuICAgIH0sIHZpZXdlci5jb250cm9sc0ZhZGVEZWxheSApO1xufVxuXG5cbi8vZGV0ZXJtaW5lcyBpZiBmYWRlIGFuaW1hdGlvbiBpcyBkb25lIG9yIGNvbnRpbnVlcyB0aGUgYW5pbWF0aW9uXG5mdW5jdGlvbiB1cGRhdGVDb250cm9sc0ZhZGUoIHZpZXdlciApIHtcbiAgICB2YXIgY3VycmVudFRpbWUsXG4gICAgICAgIGRlbHRhVGltZSxcbiAgICAgICAgb3BhY2l0eSxcbiAgICAgICAgaTtcbiAgICBpZiAoIHZpZXdlci5jb250cm9sc1Nob3VsZEZhZGUgKSB7XG4gICAgICAgIGN1cnJlbnRUaW1lID0gJC5ub3coKTtcbiAgICAgICAgZGVsdGFUaW1lID0gY3VycmVudFRpbWUgLSB2aWV3ZXIuY29udHJvbHNGYWRlQmVnaW5UaW1lO1xuICAgICAgICBvcGFjaXR5ID0gMS4wIC0gZGVsdGFUaW1lIC8gdmlld2VyLmNvbnRyb2xzRmFkZUxlbmd0aDtcblxuICAgICAgICBvcGFjaXR5ID0gTWF0aC5taW4oIDEuMCwgb3BhY2l0eSApO1xuICAgICAgICBvcGFjaXR5ID0gTWF0aC5tYXgoIDAuMCwgb3BhY2l0eSApO1xuXG4gICAgICAgIGZvciAoIGkgPSB2aWV3ZXIuY29udHJvbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh2aWV3ZXIuY29udHJvbHNbIGkgXS5hdXRvRmFkZSkge1xuICAgICAgICAgICAgICAgIHZpZXdlci5jb250cm9sc1sgaSBdLnNldE9wYWNpdHkoIG9wYWNpdHkgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggb3BhY2l0eSA+IDAgKSB7XG4gICAgICAgICAgICAvLyBmYWRlIGFnYWluXG4gICAgICAgICAgICBzY2hlZHVsZUNvbnRyb2xzRmFkZSggdmlld2VyICk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLy9zdG9wIHRoZSBmYWRlIGFuaW1hdGlvbiBvbiB0aGUgY29udHJvbHMgYW5kIHNob3cgdGhlbVxuZnVuY3Rpb24gYWJvcnRDb250cm9sc0F1dG9IaWRlKCB2aWV3ZXIgKSB7XG4gICAgdmFyIGk7XG4gICAgdmlld2VyLmNvbnRyb2xzU2hvdWxkRmFkZSA9IGZhbHNlO1xuICAgIGZvciAoIGkgPSB2aWV3ZXIuY29udHJvbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgIHZpZXdlci5jb250cm9sc1sgaSBdLnNldE9wYWNpdHkoIDEuMCApO1xuICAgIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdmlldyBldmVudCBoYW5kbGVycy5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmZ1bmN0aW9uIG9uRm9jdXMoKXtcbiAgICBhYm9ydENvbnRyb2xzQXV0b0hpZGUoIHRoaXMgKTtcbn1cblxuZnVuY3Rpb24gb25CbHVyKCl7XG4gICAgYmVnaW5Db250cm9sc0F1dG9IaWRlKCB0aGlzICk7XG5cbn1cblxuZnVuY3Rpb24gb25DYW52YXNLZXlEb3duKCBldmVudCApIHtcbiAgICBpZiAoICFldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvbiAmJiAhZXZlbnQuY3RybCAmJiAhZXZlbnQuYWx0ICYmICFldmVudC5tZXRhICkge1xuICAgICAgICBzd2l0Y2goIGV2ZW50LmtleUNvZGUgKXtcbiAgICAgICAgICAgIGNhc2UgMzg6Ly91cCBhcnJvd1xuICAgICAgICAgICAgICAgIGlmICggZXZlbnQuc2hpZnQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KDEuMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5wYW5CeSh0aGlzLnZpZXdwb3J0LmRlbHRhUG9pbnRzRnJvbVBpeGVscyhuZXcgJC5Qb2ludCgwLCAtNDApKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgNDA6Ly9kb3duIGFycm93XG4gICAgICAgICAgICAgICAgaWYgKCBldmVudC5zaGlmdCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC56b29tQnkoMC45KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LnBhbkJ5KHRoaXMudmlld3BvcnQuZGVsdGFQb2ludHNGcm9tUGl4ZWxzKG5ldyAkLlBvaW50KDAsIDQwKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LmFwcGx5Q29uc3RyYWludHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDM3Oi8vbGVmdCBhcnJvd1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQucGFuQnkodGhpcy52aWV3cG9ydC5kZWx0YVBvaW50c0Zyb21QaXhlbHMobmV3ICQuUG9pbnQoLTQwLCAwKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgMzk6Ly9yaWdodCBhcnJvd1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQucGFuQnkodGhpcy52aWV3cG9ydC5kZWx0YVBvaW50c0Zyb21QaXhlbHMobmV3ICQuUG9pbnQoNDAsIDApKSk7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCAnbmF2aWdhdG9yIGtleWNvZGUgJXMnLCBldmVudC5rZXlDb2RlICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG9uQ2FudmFzS2V5UHJlc3MoIGV2ZW50ICkge1xuICAgIGlmICggIWV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uICYmICFldmVudC5jdHJsICYmICFldmVudC5hbHQgJiYgIWV2ZW50Lm1ldGEgKSB7XG4gICAgICAgIHN3aXRjaCggZXZlbnQua2V5Q29kZSApe1xuICAgICAgICAgICAgY2FzZSA0MzovLz18K1xuICAgICAgICAgICAgY2FzZSA2MTovLz18K1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KDEuMSk7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSA0NTovLy18X1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KDAuOSk7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSA0ODovLzB8KVxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuZ29Ib21lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAxMTk6Ly93XG4gICAgICAgICAgICBjYXNlIDg3Oi8vV1xuICAgICAgICAgICAgICAgIGlmICggZXZlbnQuc2hpZnQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KDEuMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5wYW5CeSh0aGlzLnZpZXdwb3J0LmRlbHRhUG9pbnRzRnJvbVBpeGVscyhuZXcgJC5Qb2ludCgwLCAtNDApKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgMTE1Oi8vc1xuICAgICAgICAgICAgY2FzZSA4MzovL1NcbiAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LnNoaWZ0ICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Lnpvb21CeSgwLjkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQucGFuQnkodGhpcy52aWV3cG9ydC5kZWx0YVBvaW50c0Zyb21QaXhlbHMobmV3ICQuUG9pbnQoMCwgNDApKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgOTc6Ly9hXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5wYW5CeSh0aGlzLnZpZXdwb3J0LmRlbHRhUG9pbnRzRnJvbVBpeGVscyhuZXcgJC5Qb2ludCgtNDAsIDApKSk7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAxMDA6Ly9kXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5wYW5CeSh0aGlzLnZpZXdwb3J0LmRlbHRhUG9pbnRzRnJvbVBpeGVscyhuZXcgJC5Qb2ludCg0MCwgMCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LmFwcGx5Q29uc3RyYWludHMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coICduYXZpZ2F0b3Iga2V5Y29kZSAlcycsIGV2ZW50LmtleUNvZGUgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gb25DYW52YXNDbGljayggZXZlbnQgKSB7XG4gICAgdmFyIGdlc3R1cmVTZXR0aW5ncztcblxuICAgIHZhciBoYXZlS2V5Ym9hcmRGb2N1cyA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gdGhpcy5jYW52YXM7XG5cbiAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGtleWJvYXJkIGZvY3VzLCByZXF1ZXN0IGl0LlxuICAgIGlmICggIWhhdmVLZXlib2FyZEZvY3VzICkge1xuICAgICAgICB0aGlzLmNhbnZhcy5mb2N1cygpO1xuICAgIH1cblxuICAgIGlmICggIWV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uICYmIHRoaXMudmlld3BvcnQgJiYgZXZlbnQucXVpY2sgKSB7XG4gICAgICAgIGdlc3R1cmVTZXR0aW5ncyA9IHRoaXMuZ2VzdHVyZVNldHRpbmdzQnlEZXZpY2VUeXBlKCBldmVudC5wb2ludGVyVHlwZSApO1xuICAgICAgICBpZiAoIGdlc3R1cmVTZXR0aW5ncy5jbGlja1RvWm9vbSApIHtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KFxuICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0ID8gMS4wIC8gdGhpcy56b29tUGVyQ2xpY2sgOiB0aGlzLnpvb21QZXJDbGljayxcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LnBvaW50RnJvbVBpeGVsKCBldmVudC5wb3NpdGlvbiwgdHJ1ZSApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmFpc2VkIHdoZW4gYSBtb3VzZSBwcmVzcy9yZWxlYXNlIG9yIHRvdWNoL3JlbW92ZSBvY2N1cnMgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNjYW52YXN9IGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgY2FudmFzLWNsaWNrXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBxdWljayAtIFRydWUgb25seSBpZiB0aGUgY2xpY2tEaXN0VGhyZXNob2xkIGFuZCBjbGlja1RpbWVUaHJlc2hvbGQgYXJlIGJvdGggcGFzc2VkLiBVc2VmdWwgZm9yIGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIGNsaWNrcyBhbmQgZHJhZ3MuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBzaGlmdCAtIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIHRoaXMucmFpc2VFdmVudCggJ2NhbnZhcy1jbGljaycsIHtcbiAgICAgICAgdHJhY2tlcjogZXZlbnQuZXZlbnRTb3VyY2UsXG4gICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgcXVpY2s6IGV2ZW50LnF1aWNrLFxuICAgICAgICBzaGlmdDogZXZlbnQuc2hpZnQsXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gb25DYW52YXNEYmxDbGljayggZXZlbnQgKSB7XG4gICAgdmFyIGdlc3R1cmVTZXR0aW5ncztcblxuICAgIGlmICggIWV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uICYmIHRoaXMudmlld3BvcnQgKSB7XG4gICAgICAgIGdlc3R1cmVTZXR0aW5ncyA9IHRoaXMuZ2VzdHVyZVNldHRpbmdzQnlEZXZpY2VUeXBlKCBldmVudC5wb2ludGVyVHlwZSApO1xuICAgICAgICBpZiAoIGdlc3R1cmVTZXR0aW5ncy5kYmxDbGlja1RvWm9vbSApIHtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KFxuICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0ID8gMS4wIC8gdGhpcy56b29tUGVyQ2xpY2sgOiB0aGlzLnpvb21QZXJDbGljayxcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LnBvaW50RnJvbVBpeGVsKCBldmVudC5wb3NpdGlvbiwgdHJ1ZSApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmFpc2VkIHdoZW4gYSBkb3VibGUgbW91c2UgcHJlc3MvcmVsZWFzZSBvciB0b3VjaC9yZW1vdmUgb2NjdXJzIG9uIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2FudmFzfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNhbnZhcy1kb3VibGUtY2xpY2tcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyIC0gQSByZWZlcmVuY2UgdG8gdGhlIE1vdXNlVHJhY2tlciB3aGljaCBvcmlnaW5hdGVkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IHNoaWZ0IC0gVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCAnY2FudmFzLWRvdWJsZS1jbGljaycsIHtcbiAgICAgICAgdHJhY2tlcjogZXZlbnQuZXZlbnRTb3VyY2UsXG4gICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgc2hpZnQ6IGV2ZW50LnNoaWZ0LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2FudmFzRHJhZyggZXZlbnQgKSB7XG4gICAgdmFyIGdlc3R1cmVTZXR0aW5ncztcblxuICAgIGlmICggIWV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uICYmIHRoaXMudmlld3BvcnQgKSB7XG4gICAgICAgIGdlc3R1cmVTZXR0aW5ncyA9IHRoaXMuZ2VzdHVyZVNldHRpbmdzQnlEZXZpY2VUeXBlKCBldmVudC5wb2ludGVyVHlwZSApO1xuICAgICAgICBpZiggIXRoaXMucGFuSG9yaXpvbnRhbCApe1xuICAgICAgICAgICAgZXZlbnQuZGVsdGEueCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYoICF0aGlzLnBhblZlcnRpY2FsICl7XG4gICAgICAgICAgICBldmVudC5kZWx0YS55ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpZXdwb3J0LnBhbkJ5KCB0aGlzLnZpZXdwb3J0LmRlbHRhUG9pbnRzRnJvbVBpeGVscyggZXZlbnQuZGVsdGEubmVnYXRlKCkgKSwgZ2VzdHVyZVNldHRpbmdzLmZsaWNrRW5hYmxlZCApO1xuICAgICAgICBpZiggdGhpcy5jb25zdHJhaW5EdXJpbmdQYW4gKXtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJhaXNlZCB3aGVuIGEgbW91c2Ugb3IgdG91Y2ggZHJhZyBvcGVyYXRpb24gb2NjdXJzIG9uIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2FudmFzfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNhbnZhcy1kcmFnXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBkZWx0YSAtIFRoZSB4LHkgY29tcG9uZW50cyBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0YXJ0IGRyYWcgYW5kIGVuZCBkcmFnLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzcGVlZCAtIEN1cnJlbnQgY29tcHV0ZWQgc3BlZWQsIGluIHBpeGVscyBwZXIgc2Vjb25kLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBkaXJlY3Rpb24gLSBDdXJyZW50IGNvbXB1dGVkIGRpcmVjdGlvbiwgZXhwcmVzc2VkIGFzIGFuIGFuZ2xlIGNvdW50ZXJjbG9ja3dpc2UgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aXZlIFggYXhpcyAoLXBpIHRvIHBpLCBpbiByYWRpYW5zKS4gT25seSB2YWxpZCBpZiBzcGVlZCA+IDAuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBzaGlmdCAtIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIHRoaXMucmFpc2VFdmVudCggJ2NhbnZhcy1kcmFnJywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnBvc2l0aW9uLFxuICAgICAgICBkZWx0YTogZXZlbnQuZGVsdGEsXG4gICAgICAgIHNwZWVkOiBldmVudC5zcGVlZCxcbiAgICAgICAgZGlyZWN0aW9uOiBldmVudC5kaXJlY3Rpb24sXG4gICAgICAgIHNoaWZ0OiBldmVudC5zaGlmdCxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNhbnZhc0RyYWdFbmQoIGV2ZW50ICkge1xuICAgIGlmICghZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb24gJiYgdGhpcy52aWV3cG9ydCkge1xuICAgICAgICB2YXIgZ2VzdHVyZVNldHRpbmdzID0gdGhpcy5nZXN0dXJlU2V0dGluZ3NCeURldmljZVR5cGUoZXZlbnQucG9pbnRlclR5cGUpO1xuICAgICAgICBpZiAoZ2VzdHVyZVNldHRpbmdzLmZsaWNrRW5hYmxlZCAmJlxuICAgICAgICAgICAgZXZlbnQuc3BlZWQgPj0gZ2VzdHVyZVNldHRpbmdzLmZsaWNrTWluU3BlZWQpIHtcbiAgICAgICAgICAgIHZhciBhbXBsaXR1ZGVYID0gMDtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhbkhvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZGVYID0gZ2VzdHVyZVNldHRpbmdzLmZsaWNrTW9tZW50dW0gKiBldmVudC5zcGVlZCAqXG4gICAgICAgICAgICAgICAgICAgIE1hdGguY29zKGV2ZW50LmRpcmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYW1wbGl0dWRlWSA9IDA7XG4gICAgICAgICAgICBpZiAodGhpcy5wYW5WZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgIGFtcGxpdHVkZVkgPSBnZXN0dXJlU2V0dGluZ3MuZmxpY2tNb21lbnR1bSAqIGV2ZW50LnNwZWVkICpcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5zaW4oZXZlbnQuZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLnZpZXdwb3J0LnBpeGVsRnJvbVBvaW50KFxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuZ2V0Q2VudGVyKHRydWUpKTtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLnZpZXdwb3J0LnBvaW50RnJvbVBpeGVsKFxuICAgICAgICAgICAgICAgIG5ldyAkLlBvaW50KGNlbnRlci54IC0gYW1wbGl0dWRlWCwgY2VudGVyLnkgLSBhbXBsaXR1ZGVZKSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0LnBhblRvKHRhcmdldCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSYWlzZWQgd2hlbiBhIG1vdXNlIG9yIHRvdWNoIGRyYWcgb3BlcmF0aW9uIGVuZHMgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNjYW52YXN9IGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgY2FudmFzLWRyYWctZW5kXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHNwZWVkIC0gU3BlZWQgYXQgdGhlIGVuZCBvZiBhIGRyYWcgZ2VzdHVyZSwgaW4gcGl4ZWxzIHBlciBzZWNvbmQuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGRpcmVjdGlvbiAtIERpcmVjdGlvbiBhdCB0aGUgZW5kIG9mIGEgZHJhZyBnZXN0dXJlLCBleHByZXNzZWQgYXMgYW4gYW5nbGUgY291bnRlcmNsb2Nrd2lzZSByZWxhdGl2ZSB0byB0aGUgcG9zaXRpdmUgWCBheGlzICgtcGkgdG8gcGksIGluIHJhZGlhbnMpLiBPbmx5IHZhbGlkIGlmIHNwZWVkID4gMC5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IHNoaWZ0IC0gVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCdjYW52YXMtZHJhZy1lbmQnLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBwb3NpdGlvbjogZXZlbnQucG9zaXRpb24sXG4gICAgICAgIHNwZWVkOiBldmVudC5zcGVlZCxcbiAgICAgICAgZGlyZWN0aW9uOiBldmVudC5kaXJlY3Rpb24sXG4gICAgICAgIHNoaWZ0OiBldmVudC5zaGlmdCxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNhbnZhc0VudGVyKCBldmVudCApIHtcbiAgICAvKipcbiAgICAgKiBSYWlzZWQgd2hlbiBhIHBvaW50ZXIgZW50ZXJzIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2FudmFzfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNhbnZhcy1lbnRlclxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IHRyYWNrZXIgLSBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIHdoaWNoIG9yaWdpbmF0ZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gcG9pbnRlclR5cGUgLSBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGJ1dHRvbnMgLSBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZC4gQSBjb21iaW5hdGlvbiBvZiBiaXQgZmxhZ3MgMDogbm9uZSwgMTogcHJpbWFyeSAob3IgdG91Y2ggY29udGFjdCksIDI6IHNlY29uZGFyeSwgNDogYXV4IChvZnRlbiBtaWRkbGUpLCA4OiBYMSAob2Z0ZW4gYmFjayksIDE2OiBYMiAob2Z0ZW4gZm9yd2FyZCksIDMyOiBwZW4gZXJhc2VyLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwb2ludGVycyAtIE51bWJlciBvZiBwb2ludGVycyAoYWxsIHR5cGVzKSBhY3RpdmUgaW4gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGluc2lkZUVsZW1lbnRQcmVzc2VkIC0gVHJ1ZSBpZiB0aGUgbGVmdCBtb3VzZSBidXR0b24gaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQgYW5kIHdhcyBpbml0aWF0ZWQgaW5zaWRlIHRoZSB0cmFja2VkIGVsZW1lbnQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGJ1dHRvbkRvd25BbnkgLSBXYXMgdGhlIGJ1dHRvbiBkb3duIGFueXdoZXJlIGluIHRoZSBzY3JlZW4gZHVyaW5nIHRoZSBldmVudC4gPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+RGVwcmVjYXRlZC4gVXNlIGJ1dHRvbnMgaW5zdGVhZC48L3NwYW4+XG4gICAgICogQHByb3BlcnR5IHtPYmplY3R9IG9yaWdpbmFsRXZlbnQgLSBUaGUgb3JpZ2luYWwgRE9NIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgKi9cbiAgICB0aGlzLnJhaXNlRXZlbnQoICdjYW52YXMtZW50ZXInLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBwb2ludGVyVHlwZTogZXZlbnQucG9pbnRlclR5cGUsXG4gICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgYnV0dG9uczogZXZlbnQuYnV0dG9ucyxcbiAgICAgICAgcG9pbnRlcnM6IGV2ZW50LnBvaW50ZXJzLFxuICAgICAgICBpbnNpZGVFbGVtZW50UHJlc3NlZDogZXZlbnQuaW5zaWRlRWxlbWVudFByZXNzZWQsXG4gICAgICAgIGJ1dHRvbkRvd25Bbnk6IGV2ZW50LmJ1dHRvbkRvd25BbnksXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnRcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gb25DYW52YXNFeGl0KCBldmVudCApIHtcbiAgICAvKipcbiAgICAgKiBSYWlzZWQgd2hlbiBhIHBvaW50ZXIgbGVhdmVzIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2FudmFzfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNhbnZhcy1leGl0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwb2ludGVyVHlwZSAtIFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gYnV0dG9ucyAtIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLiBBIGNvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHBvaW50ZXJzIC0gTnVtYmVyIG9mIHBvaW50ZXJzIChhbGwgdHlwZXMpIGFjdGl2ZSBpbiB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW5zaWRlRWxlbWVudFByZXNzZWQgLSBUcnVlIGlmIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpcyBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZCBhbmQgd2FzIGluaXRpYXRlZCBpbnNpZGUgdGhlIHRyYWNrZWQgZWxlbWVudCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gYnV0dG9uRG93bkFueSAtIFdhcyB0aGUgYnV0dG9uIGRvd24gYW55d2hlcmUgaW4gdGhlIHNjcmVlbiBkdXJpbmcgdGhlIGV2ZW50LiA8c3BhbiBzdHlsZT1cImNvbG9yOnJlZDtcIj5EZXByZWNhdGVkLiBVc2UgYnV0dG9ucyBpbnN0ZWFkLjwvc3Bhbj5cbiAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIHRoaXMucmFpc2VFdmVudCggJ2NhbnZhcy1leGl0Jywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9pbnRlclR5cGU6IGV2ZW50LnBvaW50ZXJUeXBlLFxuICAgICAgICBwb3NpdGlvbjogZXZlbnQucG9zaXRpb24sXG4gICAgICAgIGJ1dHRvbnM6IGV2ZW50LmJ1dHRvbnMsXG4gICAgICAgIHBvaW50ZXJzOiBldmVudC5wb2ludGVycyxcbiAgICAgICAgaW5zaWRlRWxlbWVudFByZXNzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkLFxuICAgICAgICBidXR0b25Eb3duQW55OiBldmVudC5idXR0b25Eb3duQW55LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2FudmFzUHJlc3MoIGV2ZW50ICkge1xuICAgIC8qKlxuICAgICAqIFJhaXNlZCB3aGVuIHRoZSBwcmltYXJ5IG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkIG9yIHRvdWNoIHN0YXJ0cyBvbiB0aGUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI2NhbnZhc30gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBldmVudCBjYW52YXMtcHJlc3NcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyIC0gQSByZWZlcmVuY2UgdG8gdGhlIE1vdXNlVHJhY2tlciB3aGljaCBvcmlnaW5hdGVkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtTdHJpbmd9IHBvaW50ZXJUeXBlIC0gXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW5zaWRlRWxlbWVudFByZXNzZWQgLSBUcnVlIGlmIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpcyBjdXJyZW50bHkgYmVpbmcgcHJlc3NlZCBhbmQgd2FzIGluaXRpYXRlZCBpbnNpZGUgdGhlIHRyYWNrZWQgZWxlbWVudCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW5zaWRlRWxlbWVudFJlbGVhc2VkIC0gVHJ1ZSBpZiB0aGUgY3Vyc29yIHN0aWxsIGluc2lkZSB0aGUgdHJhY2tlZCBlbGVtZW50IHdoZW4gdGhlIGJ1dHRvbiB3YXMgcmVsZWFzZWQuXG4gICAgICogQHByb3BlcnR5IHtPYmplY3R9IG9yaWdpbmFsRXZlbnQgLSBUaGUgb3JpZ2luYWwgRE9NIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgKi9cbiAgICB0aGlzLnJhaXNlRXZlbnQoICdjYW52YXMtcHJlc3MnLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBwb2ludGVyVHlwZTogZXZlbnQucG9pbnRlclR5cGUsXG4gICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgaW5zaWRlRWxlbWVudFByZXNzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkLFxuICAgICAgICBpbnNpZGVFbGVtZW50UmVsZWFzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRSZWxlYXNlZCxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNhbnZhc1JlbGVhc2UoIGV2ZW50ICkge1xuICAgIC8qKlxuICAgICAqIFJhaXNlZCB3aGVuIHRoZSBwcmltYXJ5IG1vdXNlIGJ1dHRvbiBpcyByZWxlYXNlZCBvciB0b3VjaCBlbmRzIG9uIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY2FudmFzfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNhbnZhcy1yZWxlYXNlXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwb2ludGVyVHlwZSAtIFwibW91c2VcIiwgXCJ0b3VjaFwiLCBcInBlblwiLCBldGMuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGluc2lkZUVsZW1lbnRQcmVzc2VkIC0gVHJ1ZSBpZiB0aGUgbGVmdCBtb3VzZSBidXR0b24gaXMgY3VycmVudGx5IGJlaW5nIHByZXNzZWQgYW5kIHdhcyBpbml0aWF0ZWQgaW5zaWRlIHRoZSB0cmFja2VkIGVsZW1lbnQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGluc2lkZUVsZW1lbnRSZWxlYXNlZCAtIFRydWUgaWYgdGhlIGN1cnNvciBzdGlsbCBpbnNpZGUgdGhlIHRyYWNrZWQgZWxlbWVudCB3aGVuIHRoZSBidXR0b24gd2FzIHJlbGVhc2VkLlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCAnY2FudmFzLXJlbGVhc2UnLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBwb2ludGVyVHlwZTogZXZlbnQucG9pbnRlclR5cGUsXG4gICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgaW5zaWRlRWxlbWVudFByZXNzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkLFxuICAgICAgICBpbnNpZGVFbGVtZW50UmVsZWFzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRSZWxlYXNlZCxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNhbnZhc05vblByaW1hcnlQcmVzcyggZXZlbnQgKSB7XG4gICAgLyoqXG4gICAgICogUmFpc2VkIHdoZW4gYW55IG5vbi1wcmltYXJ5IHBvaW50ZXIgYnV0dG9uIGlzIHByZXNzZWQgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNjYW52YXN9IGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgY2FudmFzLW5vbnByaW1hcnktcHJlc3NcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyIC0gQSByZWZlcmVuY2UgdG8gdGhlIE1vdXNlVHJhY2tlciB3aGljaCBvcmlnaW5hdGVkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gcG9pbnRlclR5cGUgLSBcIm1vdXNlXCIsIFwidG91Y2hcIiwgXCJwZW5cIiwgZXRjLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBidXR0b24gLSBCdXR0b24gd2hpY2ggY2F1c2VkIHRoZSBldmVudC5cbiAgICAgKiAgICAgIC0xOiBub25lLCAwOiBwcmltYXJ5L2xlZnQsIDE6IGF1eC9taWRkbGUsIDI6IHNlY29uZGFyeS9yaWdodCwgMzogWDEvYmFjaywgNDogWDIvZm9yd2FyZCwgNTogcGVuIGVyYXNlci5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gYnV0dG9ucyAtIEN1cnJlbnQgYnV0dG9ucyBwcmVzc2VkLlxuICAgICAqICAgICAgQ29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIHRoaXMucmFpc2VFdmVudCggJ2NhbnZhcy1ub25wcmltYXJ5LXByZXNzJywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnBvc2l0aW9uLFxuICAgICAgICBwb2ludGVyVHlwZTogZXZlbnQucG9pbnRlclR5cGUsXG4gICAgICAgIGJ1dHRvbjogZXZlbnQuYnV0dG9uLFxuICAgICAgICBidXR0b25zOiBldmVudC5idXR0b25zLFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2FudmFzTm9uUHJpbWFyeVJlbGVhc2UoIGV2ZW50ICkge1xuICAgIC8qKlxuICAgICAqIFJhaXNlZCB3aGVuIGFueSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiBpcyByZWxlYXNlZCBvbiB0aGUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI2NhbnZhc30gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBldmVudCBjYW52YXMtbm9ucHJpbWFyeS1yZWxlYXNlXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtTdHJpbmd9IHBvaW50ZXJUeXBlIC0gXCJtb3VzZVwiLCBcInRvdWNoXCIsIFwicGVuXCIsIGV0Yy5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gYnV0dG9uIC0gQnV0dG9uIHdoaWNoIGNhdXNlZCB0aGUgZXZlbnQuXG4gICAgICogICAgICAtMTogbm9uZSwgMDogcHJpbWFyeS9sZWZ0LCAxOiBhdXgvbWlkZGxlLCAyOiBzZWNvbmRhcnkvcmlnaHQsIDM6IFgxL2JhY2ssIDQ6IFgyL2ZvcndhcmQsIDU6IHBlbiBlcmFzZXIuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGJ1dHRvbnMgLSBDdXJyZW50IGJ1dHRvbnMgcHJlc3NlZC5cbiAgICAgKiAgICAgIENvbWJpbmF0aW9uIG9mIGJpdCBmbGFncyAwOiBub25lLCAxOiBwcmltYXJ5IChvciB0b3VjaCBjb250YWN0KSwgMjogc2Vjb25kYXJ5LCA0OiBhdXggKG9mdGVuIG1pZGRsZSksIDg6IFgxIChvZnRlbiBiYWNrKSwgMTY6IFgyIChvZnRlbiBmb3J3YXJkKSwgMzI6IHBlbiBlcmFzZXIuXG4gICAgICogQHByb3BlcnR5IHtPYmplY3R9IG9yaWdpbmFsRXZlbnQgLSBUaGUgb3JpZ2luYWwgRE9NIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgKi9cbiAgICB0aGlzLnJhaXNlRXZlbnQoICdjYW52YXMtbm9ucHJpbWFyeS1yZWxlYXNlJywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnBvc2l0aW9uLFxuICAgICAgICBwb2ludGVyVHlwZTogZXZlbnQucG9pbnRlclR5cGUsXG4gICAgICAgIGJ1dHRvbjogZXZlbnQuYnV0dG9uLFxuICAgICAgICBidXR0b25zOiBldmVudC5idXR0b25zLFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uQ2FudmFzUGluY2goIGV2ZW50ICkge1xuICAgIHZhciBnZXN0dXJlU2V0dGluZ3MsXG4gICAgICAgIGNlbnRlclB0LFxuICAgICAgICBsYXN0Q2VudGVyUHQsXG4gICAgICAgIHBhbkJ5UHQ7XG5cbiAgICBpZiAoICFldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvbiAmJiB0aGlzLnZpZXdwb3J0ICkge1xuICAgICAgICBnZXN0dXJlU2V0dGluZ3MgPSB0aGlzLmdlc3R1cmVTZXR0aW5nc0J5RGV2aWNlVHlwZSggZXZlbnQucG9pbnRlclR5cGUgKTtcbiAgICAgICAgaWYgKCBnZXN0dXJlU2V0dGluZ3MucGluY2hUb1pvb20gKSB7XG4gICAgICAgICAgICBjZW50ZXJQdCA9IHRoaXMudmlld3BvcnQucG9pbnRGcm9tUGl4ZWwoIGV2ZW50LmNlbnRlciwgdHJ1ZSApO1xuICAgICAgICAgICAgbGFzdENlbnRlclB0ID0gdGhpcy52aWV3cG9ydC5wb2ludEZyb21QaXhlbCggZXZlbnQubGFzdENlbnRlciwgdHJ1ZSApO1xuICAgICAgICAgICAgcGFuQnlQdCA9IGxhc3RDZW50ZXJQdC5taW51cyggY2VudGVyUHQgKTtcbiAgICAgICAgICAgIGlmKCAhdGhpcy5wYW5Ib3Jpem9udGFsICkge1xuICAgICAgICAgICAgICAgIHBhbkJ5UHQueCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiggIXRoaXMucGFuVmVydGljYWwgKSB7XG4gICAgICAgICAgICAgICAgcGFuQnlQdC55ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KCBldmVudC5kaXN0YW5jZSAvIGV2ZW50Lmxhc3REaXN0YW5jZSwgY2VudGVyUHQsIHRydWUgKTtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQucGFuQnkoIHBhbkJ5UHQsIHRydWUgKTtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICggZ2VzdHVyZVNldHRpbmdzLnBpbmNoUm90YXRlICkge1xuICAgICAgICAgICAgLy8gUGluY2ggcm90YXRlXG4gICAgICAgICAgICB2YXIgYW5nbGUxID0gTWF0aC5hdGFuMihldmVudC5nZXN0dXJlUG9pbnRzWzBdLmN1cnJlbnRQb3MueSAtIGV2ZW50Lmdlc3R1cmVQb2ludHNbMV0uY3VycmVudFBvcy55LFxuICAgICAgICAgICAgICAgIGV2ZW50Lmdlc3R1cmVQb2ludHNbMF0uY3VycmVudFBvcy54IC0gZXZlbnQuZ2VzdHVyZVBvaW50c1sxXS5jdXJyZW50UG9zLngpO1xuICAgICAgICAgICAgdmFyIGFuZ2xlMiA9IE1hdGguYXRhbjIoZXZlbnQuZ2VzdHVyZVBvaW50c1swXS5sYXN0UG9zLnkgLSBldmVudC5nZXN0dXJlUG9pbnRzWzFdLmxhc3RQb3MueSxcbiAgICAgICAgICAgICAgICBldmVudC5nZXN0dXJlUG9pbnRzWzBdLmxhc3RQb3MueCAtIGV2ZW50Lmdlc3R1cmVQb2ludHNbMV0ubGFzdFBvcy54KTtcbiAgICAgICAgICAgIHRoaXMudmlld3BvcnQuc2V0Um90YXRpb24odGhpcy52aWV3cG9ydC5nZXRSb3RhdGlvbigpICsgKChhbmdsZTEgLSBhbmdsZTIpICogKDE4MCAvIE1hdGguUEkpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmFpc2VkIHdoZW4gYSBwaW5jaCBldmVudCBvY2N1cnMgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNjYW52YXN9IGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgY2FudmFzLXBpbmNoXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7QXJyYXkuPE9wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyLkdlc3R1cmVQb2ludD59IGdlc3R1cmVQb2ludHMgLSBHZXN0dXJlIHBvaW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGdlc3R1cmUuIFZlbG9jaXR5IGRhdGEgY2FuIGJlIGZvdW5kIGhlcmUuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBsYXN0Q2VudGVyIC0gVGhlIHByZXZpb3VzIGNlbnRlciBwb2ludCBvZiB0aGUgdHdvIHBpbmNoIGNvbnRhY3QgcG9pbnRzIHJlbGF0aXZlIHRvIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBjZW50ZXIgLSBUaGUgY2VudGVyIHBvaW50IG9mIHRoZSB0d28gcGluY2ggY29udGFjdCBwb2ludHMgcmVsYXRpdmUgdG8gdGhlIHRyYWNrZWQgZWxlbWVudC5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gbGFzdERpc3RhbmNlIC0gVGhlIHByZXZpb3VzIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3byBwaW5jaCBjb250YWN0IHBvaW50cyBpbiBDU1MgcGl4ZWxzLlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBkaXN0YW5jZSAtIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0d28gcGluY2ggY29udGFjdCBwb2ludHMgaW4gQ1NTIHBpeGVscy5cbiAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IHNoaWZ0IC0gVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCdjYW52YXMtcGluY2gnLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBnZXN0dXJlUG9pbnRzOiBldmVudC5nZXN0dXJlUG9pbnRzLFxuICAgICAgICBsYXN0Q2VudGVyOiBldmVudC5sYXN0Q2VudGVyLFxuICAgICAgICBjZW50ZXI6IGV2ZW50LmNlbnRlcixcbiAgICAgICAgbGFzdERpc3RhbmNlOiBldmVudC5sYXN0RGlzdGFuY2UsXG4gICAgICAgIGRpc3RhbmNlOiBldmVudC5kaXN0YW5jZSxcbiAgICAgICAgc2hpZnQ6IGV2ZW50LnNoaWZ0LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG4gICAgLy9jYW5jZWxzIGV2ZW50XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbkNhbnZhc1Njcm9sbCggZXZlbnQgKSB7XG4gICAgdmFyIGdlc3R1cmVTZXR0aW5ncyxcbiAgICAgICAgZmFjdG9yLFxuICAgICAgICB0aGlzU2Nyb2xsVGltZSxcbiAgICAgICAgZGVsdGFTY3JvbGxUaW1lO1xuXG4gICAgLyogQ2VydGFpbiBzY3JvbGwgZGV2aWNlcyBmaXJlIHRoZSBzY3JvbGwgZXZlbnQgd2F5IHRvbyBmYXN0IHNvIHdlIGFyZSBpbmplY3RpbmcgYSBzaW1wbGUgYWRqdXN0bWVudCB0byBrZWVwIHRoaW5nc1xuICAgICAqIHBhcnRpYWxseSBub3JtYWxpemVkLiBJZiB3ZSBoYXZlIGFscmVhZHkgZmlyZWQgYW4gZXZlbnQgd2l0aGluIHRoZSBsYXN0ICdtaW5TY3JvbGxEZWx0YScgbWlsbGlzZWNvbmRzIHdlIHNraXBcbiAgICAgKiB0aGlzIG9uZSBhbmQgd2FpdCBmb3IgdGhlIG5leHQgZXZlbnQuICovXG4gICAgdGhpc1Njcm9sbFRpbWUgPSAkLm5vdygpO1xuICAgIGRlbHRhU2Nyb2xsVGltZSA9IHRoaXNTY3JvbGxUaW1lIC0gdGhpcy5fbGFzdFNjcm9sbFRpbWU7XG4gICAgaWYgKGRlbHRhU2Nyb2xsVGltZSA+IHRoaXMubWluU2Nyb2xsRGVsdGFUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RTY3JvbGxUaW1lID0gdGhpc1Njcm9sbFRpbWU7XG5cbiAgICAgICAgaWYgKCAhZXZlbnQucHJldmVudERlZmF1bHRBY3Rpb24gJiYgdGhpcy52aWV3cG9ydCApIHtcbiAgICAgICAgICAgIGdlc3R1cmVTZXR0aW5ncyA9IHRoaXMuZ2VzdHVyZVNldHRpbmdzQnlEZXZpY2VUeXBlKCBldmVudC5wb2ludGVyVHlwZSApO1xuICAgICAgICAgICAgaWYgKCBnZXN0dXJlU2V0dGluZ3Muc2Nyb2xsVG9ab29tICkge1xuICAgICAgICAgICAgICAgIGZhY3RvciA9IE1hdGgucG93KCB0aGlzLnpvb21QZXJTY3JvbGwsIGV2ZW50LnNjcm9sbCApO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KFxuICAgICAgICAgICAgICAgICAgICBmYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQucG9pbnRGcm9tUGl4ZWwoIGV2ZW50LnBvc2l0aW9uLCB0cnVlIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiBhIHNjcm9sbCBldmVudCBvY2N1cnMgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNjYW52YXN9IGVsZW1lbnQgKG1vdXNlIHdoZWVsKS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV2ZW50IGNhbnZhcy1zY3JvbGxcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlciAtIEEgcmVmZXJlbmNlIHRvIHRoZSBNb3VzZVRyYWNrZXIgd2hpY2ggb3JpZ2luYXRlZCB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge051bWJlcn0gc2Nyb2xsIC0gVGhlIHNjcm9sbCBkZWx0YSBmb3IgdGhlIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IHNoaWZ0IC0gVHJ1ZSBpZiB0aGUgc2hpZnQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGlzIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ2NhbnZhcy1zY3JvbGwnLCB7XG4gICAgICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5wb3NpdGlvbixcbiAgICAgICAgICAgIHNjcm9sbDogZXZlbnQuc2Nyb2xsLFxuICAgICAgICAgICAgc2hpZnQ6IGV2ZW50LnNoaWZ0LFxuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGdlc3R1cmVTZXR0aW5ncyAmJiBnZXN0dXJlU2V0dGluZ3Muc2Nyb2xsVG9ab29tKSB7XG4gICAgICAgICAgICAvL2NhbmNlbHMgZXZlbnRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZ2VzdHVyZVNldHRpbmdzID0gdGhpcy5nZXN0dXJlU2V0dGluZ3NCeURldmljZVR5cGUoIGV2ZW50LnBvaW50ZXJUeXBlICk7XG4gICAgICAgIGlmIChnZXN0dXJlU2V0dGluZ3MgJiYgZ2VzdHVyZVNldHRpbmdzLnNjcm9sbFRvWm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIFdlIGFyZSBzd2FsbG93aW5nIHRoaXMgZXZlbnRcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gb25Db250YWluZXJFbnRlciggZXZlbnQgKSB7XG4gICAgVEhJU1sgdGhpcy5oYXNoIF0ubW91c2VJbnNpZGUgPSB0cnVlO1xuICAgIGFib3J0Q29udHJvbHNBdXRvSGlkZSggdGhpcyApO1xuICAgIC8qKlxuICAgICAqIFJhaXNlZCB3aGVuIHRoZSBjdXJzb3IgZW50ZXJzIHRoZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjY29udGFpbmVyfSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV2ZW50IGNvbnRhaW5lci1lbnRlclxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IHRyYWNrZXIgLSBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIHdoaWNoIG9yaWdpbmF0ZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBidXR0b25zIC0gQ3VycmVudCBidXR0b25zIHByZXNzZWQuIEEgY29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gcG9pbnRlcnMgLSBOdW1iZXIgb2YgcG9pbnRlcnMgKGFsbCB0eXBlcykgYWN0aXZlIGluIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBpbnNpZGVFbGVtZW50UHJlc3NlZCAtIFRydWUgaWYgdGhlIGxlZnQgbW91c2UgYnV0dG9uIGlzIGN1cnJlbnRseSBiZWluZyBwcmVzc2VkIGFuZCB3YXMgaW5pdGlhdGVkIGluc2lkZSB0aGUgdHJhY2tlZCBlbGVtZW50LCBvdGhlcndpc2UgZmFsc2UuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBidXR0b25Eb3duQW55IC0gV2FzIHRoZSBidXR0b24gZG93biBhbnl3aGVyZSBpbiB0aGUgc2NyZWVuIGR1cmluZyB0aGUgZXZlbnQuIDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkO1wiPkRlcHJlY2F0ZWQuIFVzZSBidXR0b25zIGluc3RlYWQuPC9zcGFuPlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCAnY29udGFpbmVyLWVudGVyJywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnBvc2l0aW9uLFxuICAgICAgICBidXR0b25zOiBldmVudC5idXR0b25zLFxuICAgICAgICBwb2ludGVyczogZXZlbnQucG9pbnRlcnMsXG4gICAgICAgIGluc2lkZUVsZW1lbnRQcmVzc2VkOiBldmVudC5pbnNpZGVFbGVtZW50UHJlc3NlZCxcbiAgICAgICAgYnV0dG9uRG93bkFueTogZXZlbnQuYnV0dG9uRG93bkFueSxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBvbkNvbnRhaW5lckV4aXQoIGV2ZW50ICkge1xuICAgIGlmICggZXZlbnQucG9pbnRlcnMgPCAxICkge1xuICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS5tb3VzZUluc2lkZSA9IGZhbHNlO1xuICAgICAgICBpZiAoICFUSElTWyB0aGlzLmhhc2ggXS5hbmltYXRpbmcgKSB7XG4gICAgICAgICAgICBiZWdpbkNvbnRyb2xzQXV0b0hpZGUoIHRoaXMgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSYWlzZWQgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcyB0aGUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI2NvbnRhaW5lcn0gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBldmVudCBjb250YWluZXItZXhpdFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IHRyYWNrZXIgLSBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIHdoaWNoIG9yaWdpbmF0ZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBidXR0b25zIC0gQ3VycmVudCBidXR0b25zIHByZXNzZWQuIEEgY29tYmluYXRpb24gb2YgYml0IGZsYWdzIDA6IG5vbmUsIDE6IHByaW1hcnkgKG9yIHRvdWNoIGNvbnRhY3QpLCAyOiBzZWNvbmRhcnksIDQ6IGF1eCAob2Z0ZW4gbWlkZGxlKSwgODogWDEgKG9mdGVuIGJhY2spLCAxNjogWDIgKG9mdGVuIGZvcndhcmQpLCAzMjogcGVuIGVyYXNlci5cbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gcG9pbnRlcnMgLSBOdW1iZXIgb2YgcG9pbnRlcnMgKGFsbCB0eXBlcykgYWN0aXZlIGluIHRoZSB0cmFja2VkIGVsZW1lbnQuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBpbnNpZGVFbGVtZW50UHJlc3NlZCAtIFRydWUgaWYgdGhlIGxlZnQgbW91c2UgYnV0dG9uIGlzIGN1cnJlbnRseSBiZWluZyBwcmVzc2VkIGFuZCB3YXMgaW5pdGlhdGVkIGluc2lkZSB0aGUgdHJhY2tlZCBlbGVtZW50LCBvdGhlcndpc2UgZmFsc2UuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBidXR0b25Eb3duQW55IC0gV2FzIHRoZSBidXR0b24gZG93biBhbnl3aGVyZSBpbiB0aGUgc2NyZWVuIGR1cmluZyB0aGUgZXZlbnQuIDxzcGFuIHN0eWxlPVwiY29sb3I6cmVkO1wiPkRlcHJlY2F0ZWQuIFVzZSBidXR0b25zIGluc3RlYWQuPC9zcGFuPlxuICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5yYWlzZUV2ZW50KCAnY29udGFpbmVyLWV4aXQnLCB7XG4gICAgICAgIHRyYWNrZXI6IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICBwb3NpdGlvbjogZXZlbnQucG9zaXRpb24sXG4gICAgICAgIGJ1dHRvbnM6IGV2ZW50LmJ1dHRvbnMsXG4gICAgICAgIHBvaW50ZXJzOiBldmVudC5wb2ludGVycyxcbiAgICAgICAgaW5zaWRlRWxlbWVudFByZXNzZWQ6IGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkLFxuICAgICAgICBidXR0b25Eb3duQW55OiBldmVudC5idXR0b25Eb3duQW55LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFnZSB1cGRhdGUgcm91dGluZXMgKCBha2EgVmlld3MgLSBmb3IgZnV0dXJlIHJlZmVyZW5jZSApXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmZ1bmN0aW9uIHVwZGF0ZU11bHRpKCB2aWV3ZXIgKSB7XG4gICAgdXBkYXRlT25jZSggdmlld2VyICk7XG5cbiAgICAvLyBSZXF1ZXN0IHRoZSBuZXh0IGZyYW1lLCB1bmxlc3Mgd2UndmUgYmVlbiBjbG9zZWRcbiAgICBpZiAoIHZpZXdlci5pc09wZW4oKSApIHtcbiAgICAgICAgdmlld2VyLl91cGRhdGVSZXF1ZXN0SWQgPSBzY2hlZHVsZVVwZGF0ZSggdmlld2VyLCB1cGRhdGVNdWx0aSApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZpZXdlci5fdXBkYXRlUmVxdWVzdElkID0gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPbmNlKCB2aWV3ZXIgKSB7XG5cbiAgICAvL3ZpZXdlci5wcm9maWxlci5iZWdpblVwZGF0ZSgpO1xuXG4gICAgaWYgKHZpZXdlci5fb3BlbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZpZXdlci5hdXRvUmVzaXplKSB7XG4gICAgICAgIHZhciBjb250YWluZXJTaXplID0gX2dldFNhZmVFbGVtU2l6ZSh2aWV3ZXIuY29udGFpbmVyKTtcbiAgICAgICAgdmFyIHByZXZDb250YWluZXJTaXplID0gVEhJU1t2aWV3ZXIuaGFzaF0ucHJldkNvbnRhaW5lclNpemU7XG4gICAgICAgIGlmICghY29udGFpbmVyU2l6ZS5lcXVhbHMocHJldkNvbnRhaW5lclNpemUpKSB7XG4gICAgICAgICAgICB2YXIgdmlld3BvcnQgPSB2aWV3ZXIudmlld3BvcnQ7XG4gICAgICAgICAgICBpZiAodmlld2VyLnByZXNlcnZlSW1hZ2VTaXplT25SZXNpemUpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzaXplUmF0aW8gPSBwcmV2Q29udGFpbmVyU2l6ZS54IC8gY29udGFpbmVyU2l6ZS54O1xuICAgICAgICAgICAgICAgIHZhciB6b29tID0gdmlld3BvcnQuZ2V0Wm9vbSgpICogcmVzaXplUmF0aW87XG4gICAgICAgICAgICAgICAgdmFyIGNlbnRlciA9IHZpZXdwb3J0LmdldENlbnRlcigpO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnJlc2l6ZShjb250YWluZXJTaXplLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdmlld3BvcnQuem9vbVRvKHpvb20sIG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnBhblRvKGNlbnRlciwgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIG1haW50YWluIGltYWdlIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgdmFyIG9sZEJvdW5kcyA9IHZpZXdwb3J0LmdldEJvdW5kcygpO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnJlc2l6ZShjb250YWluZXJTaXplLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB2aWV3cG9ydC5maXRCb3VuZHNXaXRoQ29uc3RyYWludHMob2xkQm91bmRzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRISVNbdmlld2VyLmhhc2hdLnByZXZDb250YWluZXJTaXplID0gY29udGFpbmVyU2l6ZTtcbiAgICAgICAgICAgIFRISVNbdmlld2VyLmhhc2hdLmZvcmNlUmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciB2aWV3cG9ydENoYW5nZSA9IHZpZXdlci52aWV3cG9ydC51cGRhdGUoKTtcbiAgICB2YXIgYW5pbWF0ZWQgPSB2aWV3ZXIud29ybGQudXBkYXRlKCkgfHwgdmlld3BvcnRDaGFuZ2U7XG5cbiAgICBpZiAodmlld3BvcnRDaGFuZ2UpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJhaXNlZCB3aGVuIGFueSBzcHJpbmcgYW5pbWF0aW9uIHVwZGF0ZSBvY2N1cnMgKHpvb20sIHBhbiwgZXRjLiksXG4gICAgICAgICAqIGJlZm9yZSB0aGUgdmlld2VyIGhhcyBkcmF3biB0aGUgbmV3IGxvY2F0aW9uLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgdmlld3BvcnQtY2hhbmdlXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHZpZXdlci5yYWlzZUV2ZW50KCd2aWV3cG9ydC1jaGFuZ2UnKTtcbiAgICB9XG5cbiAgICBpZiggdmlld2VyLnJlZmVyZW5jZVN0cmlwICl7XG4gICAgICAgIGFuaW1hdGVkID0gdmlld2VyLnJlZmVyZW5jZVN0cmlwLnVwZGF0ZSggdmlld2VyLnZpZXdwb3J0ICkgfHwgYW5pbWF0ZWQ7XG4gICAgfVxuXG4gICAgaWYgKCAhVEhJU1sgdmlld2VyLmhhc2ggXS5hbmltYXRpbmcgJiYgYW5pbWF0ZWQgKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiBhbnkgc3ByaW5nIGFuaW1hdGlvbiBzdGFydHMgKHpvb20sIHBhbiwgZXRjLikuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCBhbmltYXRpb24tc3RhcnRcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdmlld2VyLnJhaXNlRXZlbnQoIFwiYW5pbWF0aW9uLXN0YXJ0XCIgKTtcbiAgICAgICAgYWJvcnRDb250cm9sc0F1dG9IaWRlKCB2aWV3ZXIgKTtcbiAgICB9XG5cbiAgICBpZiAoIGFuaW1hdGVkIHx8IFRISVNbIHZpZXdlci5oYXNoIF0uZm9yY2VSZWRyYXcgfHwgdmlld2VyLndvcmxkLm5lZWRzRHJhdygpICkge1xuICAgICAgICBkcmF3V29ybGQoIHZpZXdlciApO1xuICAgICAgICB2aWV3ZXIuX2RyYXdPdmVybGF5cygpO1xuICAgICAgICBpZiggdmlld2VyLm5hdmlnYXRvciApe1xuICAgICAgICAgICAgdmlld2VyLm5hdmlnYXRvci51cGRhdGUoIHZpZXdlci52aWV3cG9ydCApO1xuICAgICAgICB9XG5cbiAgICAgICAgVEhJU1sgdmlld2VyLmhhc2ggXS5mb3JjZVJlZHJhdyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChhbmltYXRlZCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiBhbnkgc3ByaW5nIGFuaW1hdGlvbiB1cGRhdGUgb2NjdXJzICh6b29tLCBwYW4sIGV0Yy4pLFxuICAgICAgICAgICAgICogYWZ0ZXIgdGhlIHZpZXdlciBoYXMgZHJhd24gdGhlIG5ldyBsb2NhdGlvbi5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXZlbnQgYW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpZXdlci5yYWlzZUV2ZW50KCBcImFuaW1hdGlvblwiICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIFRISVNbIHZpZXdlci5oYXNoIF0uYW5pbWF0aW5nICYmICFhbmltYXRlZCApIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJhaXNlZCB3aGVuIGFueSBzcHJpbmcgYW5pbWF0aW9uIGVuZHMgKHpvb20sIHBhbiwgZXRjLikuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCBhbmltYXRpb24tZmluaXNoXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHZpZXdlci5yYWlzZUV2ZW50KCBcImFuaW1hdGlvbi1maW5pc2hcIiApO1xuXG4gICAgICAgIGlmICggIVRISVNbIHZpZXdlci5oYXNoIF0ubW91c2VJbnNpZGUgKSB7XG4gICAgICAgICAgICBiZWdpbkNvbnRyb2xzQXV0b0hpZGUoIHZpZXdlciApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgVEhJU1sgdmlld2VyLmhhc2ggXS5hbmltYXRpbmcgPSBhbmltYXRlZDtcblxuICAgIC8vdmlld2VyLnByb2ZpbGVyLmVuZFVwZGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBkcmF3V29ybGQoIHZpZXdlciApIHtcbiAgICB2aWV3ZXIuaW1hZ2VMb2FkZXIuY2xlYXIoKTtcbiAgICB2aWV3ZXIuZHJhd2VyLmNsZWFyKCk7XG4gICAgdmlld2VyLndvcmxkLmRyYXcoKTtcblxuICAgIC8qKlxuICAgICAqIDxlbT4tIE5lZWRzIGRvY3VtZW50YXRpb24gLTwvZW0+XG4gICAgICpcbiAgICAgKiBAZXZlbnQgdXBkYXRlLXZpZXdwb3J0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICovXG4gICAgdmlld2VyLnJhaXNlRXZlbnQoICd1cGRhdGUtdmlld3BvcnQnLCB7fSApO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOYXZpZ2F0aW9uIENvbnRyb2xzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiByZXNvbHZlVXJsKCBwcmVmaXgsIHVybCApIHtcbiAgICByZXR1cm4gcHJlZml4ID8gcHJlZml4ICsgdXJsIDogdXJsO1xufVxuXG5cblxuZnVuY3Rpb24gYmVnaW5ab29taW5nSW4oKSB7XG4gICAgVEhJU1sgdGhpcy5oYXNoIF0ubGFzdFpvb21UaW1lID0gJC5ub3coKTtcbiAgICBUSElTWyB0aGlzLmhhc2ggXS56b29tRmFjdG9yID0gdGhpcy56b29tUGVyU2Vjb25kO1xuICAgIFRISVNbIHRoaXMuaGFzaCBdLnpvb21pbmcgPSB0cnVlO1xuICAgIHNjaGVkdWxlWm9vbSggdGhpcyApO1xufVxuXG5cbmZ1bmN0aW9uIGJlZ2luWm9vbWluZ091dCgpIHtcbiAgICBUSElTWyB0aGlzLmhhc2ggXS5sYXN0Wm9vbVRpbWUgPSAkLm5vdygpO1xuICAgIFRISVNbIHRoaXMuaGFzaCBdLnpvb21GYWN0b3IgPSAxLjAgLyB0aGlzLnpvb21QZXJTZWNvbmQ7XG4gICAgVEhJU1sgdGhpcy5oYXNoIF0uem9vbWluZyA9IHRydWU7XG4gICAgc2NoZWR1bGVab29tKCB0aGlzICk7XG59XG5cblxuZnVuY3Rpb24gZW5kWm9vbWluZygpIHtcbiAgICBUSElTWyB0aGlzLmhhc2ggXS56b29taW5nID0gZmFsc2U7XG59XG5cblxuZnVuY3Rpb24gc2NoZWR1bGVab29tKCB2aWV3ZXIgKSB7XG4gICAgJC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoICQuZGVsZWdhdGUoIHZpZXdlciwgZG9ab29tICkgKTtcbn1cblxuXG5mdW5jdGlvbiBkb1pvb20oKSB7XG4gICAgdmFyIGN1cnJlbnRUaW1lLFxuICAgICAgICBkZWx0YVRpbWUsXG4gICAgICAgIGFkanVzdGVkRmFjdG9yO1xuXG4gICAgaWYgKCBUSElTWyB0aGlzLmhhc2ggXS56b29taW5nICYmIHRoaXMudmlld3BvcnQpIHtcbiAgICAgICAgY3VycmVudFRpbWUgICAgID0gJC5ub3coKTtcbiAgICAgICAgZGVsdGFUaW1lICAgICAgID0gY3VycmVudFRpbWUgLSBUSElTWyB0aGlzLmhhc2ggXS5sYXN0Wm9vbVRpbWU7XG4gICAgICAgIGFkanVzdGVkRmFjdG9yICA9IE1hdGgucG93KCBUSElTWyB0aGlzLmhhc2ggXS56b29tRmFjdG9yLCBkZWx0YVRpbWUgLyAxMDAwICk7XG5cbiAgICAgICAgdGhpcy52aWV3cG9ydC56b29tQnkoIGFkanVzdGVkRmFjdG9yICk7XG4gICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS5sYXN0Wm9vbVRpbWUgPSBjdXJyZW50VGltZTtcbiAgICAgICAgc2NoZWR1bGVab29tKCB0aGlzICk7XG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGRvU2luZ2xlWm9vbUluKCkge1xuICAgIGlmICggdGhpcy52aWV3cG9ydCApIHtcbiAgICAgICAgVEhJU1sgdGhpcy5oYXNoIF0uem9vbWluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpZXdwb3J0Lnpvb21CeShcbiAgICAgICAgICAgIHRoaXMuem9vbVBlckNsaWNrIC8gMS4wXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudmlld3BvcnQuYXBwbHlDb25zdHJhaW50cygpO1xuICAgIH1cbn1cblxuXG5mdW5jdGlvbiBkb1NpbmdsZVpvb21PdXQoKSB7XG4gICAgaWYgKCB0aGlzLnZpZXdwb3J0ICkge1xuICAgICAgICBUSElTWyB0aGlzLmhhc2ggXS56b29taW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmlld3BvcnQuem9vbUJ5KFxuICAgICAgICAgICAgMS4wIC8gdGhpcy56b29tUGVyQ2xpY2tcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGxpZ2h0VXAoKSB7XG4gICAgdGhpcy5idXR0b25zLmVtdWxhdGVFbnRlcigpO1xuICAgIHRoaXMuYnV0dG9ucy5lbXVsYXRlRXhpdCgpO1xufVxuXG5cbmZ1bmN0aW9uIG9uSG9tZSgpIHtcbiAgICBpZiAoIHRoaXMudmlld3BvcnQgKSB7XG4gICAgICAgIHRoaXMudmlld3BvcnQuZ29Ib21lKCk7XG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIG9uRnVsbFNjcmVlbigpIHtcbiAgICBpZiAoIHRoaXMuaXNGdWxsUGFnZSgpICYmICEkLmlzRnVsbFNjcmVlbigpICkge1xuICAgICAgICAvLyBJcyBmdWxsUGFnZSBidXQgbm90IGZ1bGxTY3JlZW5cbiAgICAgICAgdGhpcy5zZXRGdWxsUGFnZSggZmFsc2UgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldEZ1bGxTY3JlZW4oICF0aGlzLmlzRnVsbFBhZ2UoKSApO1xuICAgIH1cbiAgICAvLyBjb3JyZWN0IGZvciBubyBtb3VzZW91dCBldmVudCBvbiBjaGFuZ2VcbiAgICBpZiAoIHRoaXMuYnV0dG9ucyApIHtcbiAgICAgICAgdGhpcy5idXR0b25zLmVtdWxhdGVFeGl0KCk7XG4gICAgfVxuICAgIHRoaXMuZnVsbFBhZ2VCdXR0b24uZWxlbWVudC5mb2N1cygpO1xuICAgIGlmICggdGhpcy52aWV3cG9ydCApIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIE5vdGU6IFRoZSBjdXJyZW50IHJvdGF0aW9uIGZlYXR1cmUgaXMgbGltaXRlZCB0byA5MCBkZWdyZWUgdHVybnMuXG4gKi9cbmZ1bmN0aW9uIG9uUm90YXRlTGVmdCgpIHtcbiAgICBpZiAoIHRoaXMudmlld3BvcnQgKSB7XG4gICAgICAgIHZhciBjdXJyUm90YXRpb24gPSB0aGlzLnZpZXdwb3J0LmdldFJvdGF0aW9uKCk7XG4gICAgICAgIGlmIChjdXJyUm90YXRpb24gPT09IDApIHtcbiAgICAgICAgICAgIGN1cnJSb3RhdGlvbiA9IDI3MDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJSb3RhdGlvbiAtPSA5MDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpZXdwb3J0LnNldFJvdGF0aW9uKGN1cnJSb3RhdGlvbik7XG4gICAgfVxufVxuXG4vKipcbiAqIE5vdGU6IFRoZSBjdXJyZW50IHJvdGF0aW9uIGZlYXR1cmUgaXMgbGltaXRlZCB0byA5MCBkZWdyZWUgdHVybnMuXG4gKi9cbmZ1bmN0aW9uIG9uUm90YXRlUmlnaHQoKSB7XG4gICAgaWYgKCB0aGlzLnZpZXdwb3J0ICkge1xuICAgICAgICB2YXIgY3VyclJvdGF0aW9uID0gdGhpcy52aWV3cG9ydC5nZXRSb3RhdGlvbigpO1xuICAgICAgICBpZiAoY3VyclJvdGF0aW9uID09PSAyNzApIHtcbiAgICAgICAgICAgIGN1cnJSb3RhdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjdXJyUm90YXRpb24gKz0gOTA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWV3cG9ydC5zZXRSb3RhdGlvbihjdXJyUm90YXRpb24pO1xuICAgIH1cbn1cblxuXG5mdW5jdGlvbiBvblByZXZpb3VzKCl7XG4gICAgdmFyIHByZXZpb3VzID0gdGhpcy5fc2VxdWVuY2VJbmRleCAtIDE7XG4gICAgaWYodGhpcy5uYXZQcmV2TmV4dFdyYXAgJiYgcHJldmlvdXMgPCAwKXtcbiAgICAgICAgcHJldmlvdXMgKz0gdGhpcy50aWxlU291cmNlcy5sZW5ndGg7XG4gICAgfVxuICAgIHRoaXMuZ29Ub1BhZ2UoIHByZXZpb3VzICk7XG59XG5cblxuZnVuY3Rpb24gb25OZXh0KCl7XG4gICAgdmFyIG5leHQgPSB0aGlzLl9zZXF1ZW5jZUluZGV4ICsgMTtcbiAgICBpZih0aGlzLm5hdlByZXZOZXh0V3JhcCAmJiBuZXh0ID49IHRoaXMudGlsZVNvdXJjZXMubGVuZ3RoKXtcbiAgICAgICAgbmV4dCA9IDA7XG4gICAgfVxuICAgIHRoaXMuZ29Ub1BhZ2UoIG5leHQgKTtcbn1cblxuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIE5hdmlnYXRvclxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4oZnVuY3Rpb24oICQgKXtcblxuLyoqXG4gKiBAY2xhc3MgTmF2aWdhdG9yXG4gKiBAY2xhc3NkZXNjIFRoZSBOYXZpZ2F0b3IgcHJvdmlkZXMgYSBzbWFsbCB2aWV3IG9mIHRoZSBjdXJyZW50IGltYWdlIGFzIGZpeGVkXG4gKiB3aGlsZSByZXByZXNlbnRpbmcgdGhlIHZpZXdwb3J0IGFzIGEgbW92aW5nIGJveCBzZXJ2aW5nIGFzIGEgZnJhbWVcbiAqIG9mIHJlZmVyZW5jZSBpbiB0aGUgbGFyZ2VyIHZpZXdwb3J0IGFzIHRvIHdoaWNoIHBvcnRpb24gb2YgdGhlIGltYWdlXG4gKiBpcyBjdXJyZW50bHkgYmVpbmcgZXhhbWluZWQuICBUaGUgbmF2aWdhdG9yJ3Mgdmlld3BvcnQgY2FuIGJlIGludGVyYWN0ZWRcbiAqIHdpdGggdXNpbmcgdGhlIGtleWJvYXJkIG9yIHRoZSBtb3VzZS5cbiAqXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGV4dGVuZHMgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAqIEBleHRlbmRzIE9wZW5TZWFkcmFnb24uRXZlbnRTb3VyY2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKi9cbiQuTmF2aWdhdG9yID0gZnVuY3Rpb24oIG9wdGlvbnMgKXtcblxuICAgIHZhciB2aWV3ZXIgICAgICA9IG9wdGlvbnMudmlld2VyLFxuICAgICAgICBfdGhpcyA9IHRoaXMsXG4gICAgICAgIHZpZXdlclNpemUsXG4gICAgICAgIG5hdmlnYXRvclNpemU7XG5cbiAgICAvL1dlIG1heSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50IGFuZCBpZCBpZiB0aGV5IGRpZCBub3RcbiAgICAvL3Byb3ZpZGUgdGhlIGlkIGZvciB0aGUgZXhpc3RpbmcgZWxlbWVudFxuICAgIGlmKCAhb3B0aW9ucy5pZCApe1xuICAgICAgICBvcHRpb25zLmlkICAgICAgICAgICAgICA9ICduYXZpZ2F0b3ItJyArICQubm93KCk7XG4gICAgICAgIHRoaXMuZWxlbWVudCAgICAgICAgICAgID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcbiAgICAgICAgb3B0aW9ucy5jb250cm9sT3B0aW9ucyAgPSB7XG4gICAgICAgICAgICBhbmNob3I6ICAgICAgICAgICAkLkNvbnRyb2xBbmNob3IuVE9QX1JJR0hULFxuICAgICAgICAgICAgYXR0YWNoVG9WaWV3ZXI6ICAgdHJ1ZSxcbiAgICAgICAgICAgIGF1dG9GYWRlOiAgICAgICAgIG9wdGlvbnMuYXV0b0ZhZGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiggb3B0aW9ucy5wb3NpdGlvbiApe1xuICAgICAgICAgICAgaWYoICdCT1RUT01fUklHSFQnID09IG9wdGlvbnMucG9zaXRpb24gKXtcbiAgICAgICAgICAgICAgIG9wdGlvbnMuY29udHJvbE9wdGlvbnMuYW5jaG9yID0gJC5Db250cm9sQW5jaG9yLkJPVFRPTV9SSUdIVDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiggJ0JPVFRPTV9MRUZUJyA9PSBvcHRpb25zLnBvc2l0aW9uICl7XG4gICAgICAgICAgICAgICBvcHRpb25zLmNvbnRyb2xPcHRpb25zLmFuY2hvciA9ICQuQ29udHJvbEFuY2hvci5CT1RUT01fTEVGVDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiggJ1RPUF9SSUdIVCcgPT0gb3B0aW9ucy5wb3NpdGlvbiApe1xuICAgICAgICAgICAgICAgb3B0aW9ucy5jb250cm9sT3B0aW9ucy5hbmNob3IgPSAkLkNvbnRyb2xBbmNob3IuVE9QX1JJR0hUO1xuICAgICAgICAgICAgfSBlbHNlIGlmKCAnVE9QX0xFRlQnID09IG9wdGlvbnMucG9zaXRpb24gKXtcbiAgICAgICAgICAgICAgIG9wdGlvbnMuY29udHJvbE9wdGlvbnMuYW5jaG9yID0gJC5Db250cm9sQW5jaG9yLlRPUF9MRUZUO1xuICAgICAgICAgICAgfSBlbHNlIGlmKCAnQUJTT0xVVEUnID09IG9wdGlvbnMucG9zaXRpb24gKXtcbiAgICAgICAgICAgICAgIG9wdGlvbnMuY29udHJvbE9wdGlvbnMuYW5jaG9yID0gJC5Db250cm9sQW5jaG9yLkFCU09MVVRFO1xuICAgICAgICAgICAgICAgb3B0aW9ucy5jb250cm9sT3B0aW9ucy50b3AgPSBvcHRpb25zLnRvcDtcbiAgICAgICAgICAgICAgIG9wdGlvbnMuY29udHJvbE9wdGlvbnMubGVmdCA9IG9wdGlvbnMubGVmdDtcbiAgICAgICAgICAgICAgIG9wdGlvbnMuY29udHJvbE9wdGlvbnMuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQ7XG4gICAgICAgICAgICAgICBvcHRpb25zLmNvbnRyb2xPcHRpb25zLndpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ICAgICAgICAgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggb3B0aW9ucy5pZCApO1xuICAgICAgICBvcHRpb25zLmNvbnRyb2xPcHRpb25zICA9IHtcbiAgICAgICAgICAgIGFuY2hvcjogICAgICAgICAgICQuQ29udHJvbEFuY2hvci5OT05FLFxuICAgICAgICAgICAgYXR0YWNoVG9WaWV3ZXI6ICAgZmFsc2UsXG4gICAgICAgICAgICBhdXRvRmFkZTogICAgICAgICBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnQuaWQgICAgICAgICA9IG9wdGlvbnMuaWQ7XG4gICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSAgKz0gJyBuYXZpZ2F0b3InO1xuXG4gICAgb3B0aW9ucyA9ICQuZXh0ZW5kKCB0cnVlLCB7XG4gICAgICAgIHNpemVSYXRpbzogICAgICQuREVGQVVMVF9TRVRUSU5HUy5uYXZpZ2F0b3JTaXplUmF0aW9cbiAgICB9LCBvcHRpb25zLCB7XG4gICAgICAgIGVsZW1lbnQ6ICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgdGFiSW5kZXg6ICAgICAgICAgICAgICAgLTEsIC8vIE5vIGtleWJvYXJkIG5hdmlnYXRpb24sIG9taXQgZnJvbSB0YWIgb3JkZXJcbiAgICAgICAgLy9UaGVzZSBuZWVkIHRvIGJlIG92ZXJyaWRkZW4gdG8gcHJldmVudCByZWN1cnNpb24gc2luY2VcbiAgICAgICAgLy90aGUgbmF2aWdhdG9yIGlzIGEgdmlld2VyIGFuZCBhIHZpZXdlciBoYXMgYSBuYXZpZ2F0b3JcbiAgICAgICAgc2hvd05hdmlnYXRvcjogICAgICAgICAgZmFsc2UsXG4gICAgICAgIG1vdXNlTmF2RW5hYmxlZDogICAgICAgIGZhbHNlLFxuICAgICAgICBzaG93TmF2aWdhdGlvbkNvbnRyb2w6ICBmYWxzZSxcbiAgICAgICAgc2hvd1NlcXVlbmNlQ29udHJvbDogICAgZmFsc2UsXG4gICAgICAgIGltbWVkaWF0ZVJlbmRlcjogICAgICAgIHRydWUsXG4gICAgICAgIGJsZW5kVGltZTogICAgICAgICAgICAgIDAsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6ICAgICAgICAgIDAsXG4gICAgICAgIGF1dG9SZXNpemU6ICAgICAgICAgICAgIG9wdGlvbnMuYXV0b1Jlc2l6ZSxcbiAgICAgICAgLy8gcHJldmVudCByZXNpemluZyB0aGUgbmF2aWdhdG9yIGZyb20gYWRkaW5nIHVud2FudGVkIHNwYWNlIGFyb3VuZCB0aGUgaW1hZ2VcbiAgICAgICAgbWluWm9vbUltYWdlUmF0aW86ICAgICAgMS4wXG4gICAgfSk7XG5cbiAgICBvcHRpb25zLm1pblBpeGVsUmF0aW8gPSB0aGlzLm1pblBpeGVsUmF0aW8gPSB2aWV3ZXIubWluUGl4ZWxSYXRpbztcblxuICAgICQuc2V0RWxlbWVudFRvdWNoQWN0aW9uTm9uZSggdGhpcy5lbGVtZW50ICk7XG5cbiAgICB0aGlzLmJvcmRlcldpZHRoID0gMjtcbiAgICAvL0F0IHNvbWUgYnJvd3NlciBtYWduaWZpY2F0aW9uIGxldmVscyB0aGUgZGlzcGxheSByZWdpb25zIGxpbmVzIHVwIGNvcnJlY3RseSwgYnV0IGF0IHNvbWUgdGhlcmUgYXBwZWFycyB0b1xuICAgIC8vYmUgYSBvbmUgcGl4ZWwgZ2FwLlxuICAgIHRoaXMuZnVkZ2UgPSBuZXcgJC5Qb2ludCgxLCAxKTtcbiAgICB0aGlzLnRvdGFsQm9yZGVyV2lkdGhzID0gbmV3ICQuUG9pbnQodGhpcy5ib3JkZXJXaWR0aCoyLCB0aGlzLmJvcmRlcldpZHRoKjIpLm1pbnVzKHRoaXMuZnVkZ2UpO1xuXG5cbiAgICBpZiAoIG9wdGlvbnMuY29udHJvbE9wdGlvbnMuYW5jaG9yICE9ICQuQ29udHJvbEFuY2hvci5OT05FICkge1xuICAgICAgICAoZnVuY3Rpb24oIHN0eWxlLCBib3JkZXJXaWR0aCApe1xuICAgICAgICAgICAgc3R5bGUubWFyZ2luICAgICAgICA9ICcwcHgnO1xuICAgICAgICAgICAgc3R5bGUuYm9yZGVyICAgICAgICA9IGJvcmRlcldpZHRoICsgJ3B4IHNvbGlkICM1NTUnO1xuICAgICAgICAgICAgc3R5bGUucGFkZGluZyAgICAgICA9ICcwcHgnO1xuICAgICAgICAgICAgc3R5bGUuYmFja2dyb3VuZCAgICA9ICcjMDAwJztcbiAgICAgICAgICAgIHN0eWxlLm9wYWNpdHkgICAgICAgPSAwLjg7XG4gICAgICAgICAgICBzdHlsZS5vdmVyZmxvdyAgICAgID0gJ2hpZGRlbic7XG4gICAgICAgIH0oIHRoaXMuZWxlbWVudC5zdHlsZSwgdGhpcy5ib3JkZXJXaWR0aCkpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheVJlZ2lvbiAgICAgICAgICAgPSAkLm1ha2VOZXV0cmFsRWxlbWVudCggXCJkaXZcIiApO1xuICAgIHRoaXMuZGlzcGxheVJlZ2lvbi5pZCAgICAgICAgPSB0aGlzLmVsZW1lbnQuaWQgKyAnLWRpc3BsYXlyZWdpb24nO1xuICAgIHRoaXMuZGlzcGxheVJlZ2lvbi5jbGFzc05hbWUgPSAnZGlzcGxheXJlZ2lvbic7XG5cbiAgICAoZnVuY3Rpb24oIHN0eWxlLCBib3JkZXJXaWR0aCApe1xuICAgICAgICBzdHlsZS5wb3NpdGlvbiAgICAgID0gJ3JlbGF0aXZlJztcbiAgICAgICAgc3R5bGUudG9wICAgICAgICAgICA9ICcwcHgnO1xuICAgICAgICBzdHlsZS5sZWZ0ICAgICAgICAgID0gJzBweCc7XG4gICAgICAgIHN0eWxlLmZvbnRTaXplICAgICAgPSAnMHB4JztcbiAgICAgICAgc3R5bGUub3ZlcmZsb3cgICAgICA9ICdoaWRkZW4nO1xuICAgICAgICBzdHlsZS5ib3JkZXIgICAgICAgID0gYm9yZGVyV2lkdGggKyAncHggc29saWQgIzkwMCc7XG4gICAgICAgIHN0eWxlLm1hcmdpbiAgICAgICAgPSAnMHB4JztcbiAgICAgICAgc3R5bGUucGFkZGluZyAgICAgICA9ICcwcHgnO1xuICAgICAgICAvL1RPRE86IElFIGRvZXNudCBsaWtlIHRoaXMgcHJvcGVydHkgYmVpbmcgc2V0XG4gICAgICAgIC8vdHJ5eyBzdHlsZS5vdXRsaW5lICA9ICcycHggYXV0byAjOTA5JzsgfWNhdGNoKGUpey8qaWdub3JlKi99XG5cbiAgICAgICAgc3R5bGUuYmFja2dyb3VuZCAgICA9ICd0cmFuc3BhcmVudCc7XG5cbiAgICAgICAgLy8gV2UgdXNlIHNxdWFyZSBicmFja2V0IG5vdGF0aW9uIG9uIHRoZSBzdGF0ZW1lbnQgYmVsb3csIGJlY2F1c2UgZmxvYXQgaXMgYSBrZXl3b3JkLlxuICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgdGhlIEdvb2dsZSBDbG9zdXJlIGNvbXBpbGVyLCBpZiBub3RoaW5nIGVsc2UuXG4gICAgICAgIC8qanNoaW50IHN1Yjp0cnVlICovXG4gICAgICAgIHN0eWxlWydmbG9hdCddICAgICAgPSAnbGVmdCc7IC8vV2Via2l0XG5cbiAgICAgICAgc3R5bGUuY3NzRmxvYXQgICAgICA9ICdsZWZ0JzsgLy9GaXJlZm94XG4gICAgICAgIHN0eWxlLnN0eWxlRmxvYXQgICAgPSAnbGVmdCc7IC8vSUVcbiAgICAgICAgc3R5bGUuekluZGV4ICAgICAgICA9IDk5OTk5OTk5OTtcbiAgICAgICAgc3R5bGUuY3Vyc29yICAgICAgICA9ICdkZWZhdWx0JztcbiAgICB9KCB0aGlzLmRpc3BsYXlSZWdpb24uc3R5bGUsIHRoaXMuYm9yZGVyV2lkdGggKSk7XG5cbiAgICB0aGlzLmRpc3BsYXlSZWdpb25Db250YWluZXIgPSAkLm1ha2VOZXV0cmFsRWxlbWVudChcImRpdlwiKTtcbiAgICB0aGlzLmRpc3BsYXlSZWdpb25Db250YWluZXIuaWQgPSB0aGlzLmVsZW1lbnQuaWQgKyAnLWRpc3BsYXlyZWdpb25jb250YWluZXInO1xuICAgIHRoaXMuZGlzcGxheVJlZ2lvbkNvbnRhaW5lci5jbGFzc05hbWUgPSBcImRpc3BsYXlyZWdpb25jb250YWluZXJcIjtcbiAgICB0aGlzLmRpc3BsYXlSZWdpb25Db250YWluZXIuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcbiAgICB0aGlzLmRpc3BsYXlSZWdpb25Db250YWluZXIuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XG5cbiAgICB2aWV3ZXIuYWRkQ29udHJvbChcbiAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICBvcHRpb25zLmNvbnRyb2xPcHRpb25zXG4gICAgKTtcblxuICAgIHRoaXMuX3Jlc2l6ZVdpdGhWaWV3ZXIgPSBvcHRpb25zLmNvbnRyb2xPcHRpb25zLmFuY2hvciAhPSAkLkNvbnRyb2xBbmNob3IuQUJTT0xVVEUgJiZcbiAgICAgICAgb3B0aW9ucy5jb250cm9sT3B0aW9ucy5hbmNob3IgIT0gJC5Db250cm9sQW5jaG9yLk5PTkU7XG5cbiAgICBpZiAoIHRoaXMuX3Jlc2l6ZVdpdGhWaWV3ZXIgKSB7XG4gICAgICAgIGlmICggb3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCApIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0eXBlb2YgKCBvcHRpb25zLmhlaWdodCApICA9PSBcIm51bWJlclwiID8gKCBvcHRpb25zLmhlaWdodCArICdweCcgKSA6IG9wdGlvbnMuaGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoICA9IHR5cGVvZiAoIG9wdGlvbnMud2lkdGggKSAgPT0gXCJudW1iZXJcIiA/ICggb3B0aW9ucy53aWR0aCArICdweCcgKSA6IG9wdGlvbnMud2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2aWV3ZXJTaXplID0gJC5nZXRFbGVtZW50U2l6ZSggdmlld2VyLmVsZW1lbnQgKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBNYXRoLnJvdW5kKCB2aWV3ZXJTaXplLnkgKiBvcHRpb25zLnNpemVSYXRpbyApICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCAgPSBNYXRoLnJvdW5kKCB2aWV3ZXJTaXplLnggKiBvcHRpb25zLnNpemVSYXRpbyApICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMub2xkVmlld2VyU2l6ZSA9IHZpZXdlclNpemU7XG4gICAgICAgIH1cbiAgICAgICAgbmF2aWdhdG9yU2l6ZSA9ICQuZ2V0RWxlbWVudFNpemUoIHRoaXMuZWxlbWVudCApO1xuICAgICAgICB0aGlzLmVsZW1lbnRBcmVhID0gbmF2aWdhdG9yU2l6ZS54ICogbmF2aWdhdG9yU2l6ZS55O1xuICAgIH1cblxuICAgIHRoaXMub2xkQ29udGFpbmVyU2l6ZSA9IG5ldyAkLlBvaW50KCAwLCAwICk7XG5cbiAgICAkLlZpZXdlci5hcHBseSggdGhpcywgWyBvcHRpb25zIF0gKTtcblxuICAgIHRoaXMuZGlzcGxheVJlZ2lvbkNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRpc3BsYXlSZWdpb24pO1xuICAgIHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0uYXBwZW5kQ2hpbGQodGhpcy5kaXNwbGF5UmVnaW9uQ29udGFpbmVyKTtcblxuICAgIGZ1bmN0aW9uIHJvdGF0ZShkZWdyZWVzKSB7XG4gICAgICAgIF9zZXRUcmFuc2Zvcm1Sb3RhdGUoX3RoaXMuZGlzcGxheVJlZ2lvbkNvbnRhaW5lciwgZGVncmVlcyk7XG4gICAgICAgIF9zZXRUcmFuc2Zvcm1Sb3RhdGUoX3RoaXMuZGlzcGxheVJlZ2lvbiwgLWRlZ3JlZXMpO1xuICAgICAgICBfdGhpcy52aWV3cG9ydC5zZXRSb3RhdGlvbihkZWdyZWVzKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubmF2aWdhdG9yUm90YXRlKSB7XG4gICAgICAgIHZhciBkZWdyZWVzID0gb3B0aW9ucy52aWV3ZXIudmlld3BvcnQgP1xuICAgICAgICAgICAgb3B0aW9ucy52aWV3ZXIudmlld3BvcnQuZ2V0Um90YXRpb24oKSA6XG4gICAgICAgICAgICBvcHRpb25zLnZpZXdlci5kZWdyZWVzIHx8IDA7XG4gICAgICAgIHJvdGF0ZShkZWdyZWVzKTtcbiAgICAgICAgb3B0aW9ucy52aWV3ZXIuYWRkSGFuZGxlcihcInJvdGF0ZVwiLCBmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgcm90YXRlKGFyZ3MuZGVncmVlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgYmFzZSBjbGFzcycgKFZpZXdlcidzKSBpbm5lclRyYWNrZXIgYW5kIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duXG4gICAgdGhpcy5pbm5lclRyYWNrZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuaW5uZXJUcmFja2VyID0gbmV3ICQuTW91c2VUcmFja2VyKHtcbiAgICAgICAgZWxlbWVudDogICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgIGRyYWdIYW5kbGVyOiAgICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNEcmFnICksXG4gICAgICAgIGNsaWNrSGFuZGxlcjogICAgJC5kZWxlZ2F0ZSggdGhpcywgb25DYW52YXNDbGljayApLFxuICAgICAgICByZWxlYXNlSGFuZGxlcjogICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzUmVsZWFzZSApLFxuICAgICAgICBzY3JvbGxIYW5kbGVyOiAgICQuZGVsZWdhdGUoIHRoaXMsIG9uQ2FudmFzU2Nyb2xsIClcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkSGFuZGxlcihcInJlc2V0LXNpemVcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChfdGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgICAgX3RoaXMudmlld3BvcnQuZ29Ib21lKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB2aWV3ZXIud29ybGQuYWRkSGFuZGxlcihcIml0ZW0taW5kZXgtY2hhbmdlXCIsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIHZhciBpdGVtID0gX3RoaXMud29ybGQuZ2V0SXRlbUF0KGV2ZW50LnByZXZpb3VzSW5kZXgpO1xuICAgICAgICBfdGhpcy53b3JsZC5zZXRJdGVtSW5kZXgoaXRlbSwgZXZlbnQubmV3SW5kZXgpO1xuICAgIH0pO1xuXG4gICAgdmlld2VyLndvcmxkLmFkZEhhbmRsZXIoXCJyZW1vdmUtaXRlbVwiLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICB2YXIgdGhlaXJJdGVtID0gZXZlbnQuaXRlbTtcbiAgICAgICAgdmFyIG15SXRlbSA9IF90aGlzLl9nZXRNYXRjaGluZ0l0ZW0odGhlaXJJdGVtKTtcbiAgICAgICAgaWYgKG15SXRlbSkge1xuICAgICAgICAgICAgX3RoaXMud29ybGQucmVtb3ZlSXRlbShteUl0ZW0pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZSh2aWV3ZXIudmlld3BvcnQpO1xufTtcblxuJC5leHRlbmQoICQuTmF2aWdhdG9yLnByb3RvdHlwZSwgJC5FdmVudFNvdXJjZS5wcm90b3R5cGUsICQuVmlld2VyLnByb3RvdHlwZSwgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLk5hdmlnYXRvci5wcm90b3R5cGUgKi97XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIG5vdGlmeSB0aGUgbmF2aWdhdG9yIHdoZW4gaXRzIHNpemUgaGFzIGNoYW5nZWQuXG4gICAgICogRXNwZWNpYWxseSB1c2VmdWwgd2hlbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5uYXZpZ2F0b3JBdXRvUmVzaXplIGlzIHNldCB0byBmYWxzZSBhbmQgdGhlIG5hdmlnYXRvciBpcyByZXNpemFibGUuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgdXBkYXRlU2l6ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIHRoaXMudmlld3BvcnQgKSB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyU2l6ZSA9IG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250YWluZXIuY2xpZW50V2lkdGggPT09IDAgPyAxIDogdGhpcy5jb250YWluZXIuY2xpZW50V2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5jb250YWluZXIuY2xpZW50SGVpZ2h0ID09PSAwID8gMSA6IHRoaXMuY29udGFpbmVyLmNsaWVudEhlaWdodClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoICFjb250YWluZXJTaXplLmVxdWFscyggdGhpcy5vbGRDb250YWluZXJTaXplICkgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5yZXNpemUoIGNvbnRhaW5lclNpemUsIHRydWUgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0LmdvSG9tZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9sZENvbnRhaW5lclNpemUgPSBjb250YWluZXJTaXplO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd2VyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy53b3JsZC5kcmF3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byB1cGRhdGUgdGhlIG5hdmlnYXRvciBtaW5pbWFwJ3Mgdmlld3BvcnQgcmVjdGFuZ2xlIHdoZW4gYSBjaGFuZ2UgaW4gdGhlIHZpZXdlcidzIHZpZXdwb3J0IG9jY3Vycy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IFRoZSB2aWV3cG9ydCB0aGlzIG5hdmlnYXRvciBpcyB0cmFja2luZy5cbiAgICAgKi9cbiAgICB1cGRhdGU6IGZ1bmN0aW9uKCB2aWV3cG9ydCApIHtcblxuICAgICAgICB2YXIgdmlld2VyU2l6ZSxcbiAgICAgICAgICAgIG5ld1dpZHRoLFxuICAgICAgICAgICAgbmV3SGVpZ2h0LFxuICAgICAgICAgICAgYm91bmRzLFxuICAgICAgICAgICAgdG9wbGVmdCxcbiAgICAgICAgICAgIGJvdHRvbXJpZ2h0O1xuXG4gICAgICAgIHZpZXdlclNpemUgPSAkLmdldEVsZW1lbnRTaXplKCB0aGlzLnZpZXdlci5lbGVtZW50ICk7XG4gICAgICAgIGlmICggdGhpcy5fcmVzaXplV2l0aFZpZXdlciAmJiB2aWV3ZXJTaXplLnggJiYgdmlld2VyU2l6ZS55ICYmICF2aWV3ZXJTaXplLmVxdWFscyggdGhpcy5vbGRWaWV3ZXJTaXplICkgKSB7XG4gICAgICAgICAgICB0aGlzLm9sZFZpZXdlclNpemUgPSB2aWV3ZXJTaXplO1xuXG4gICAgICAgICAgICBpZiAoIHRoaXMubWFpbnRhaW5TaXplUmF0aW8gfHwgIXRoaXMuZWxlbWVudEFyZWEpIHtcbiAgICAgICAgICAgICAgICBuZXdXaWR0aCAgPSB2aWV3ZXJTaXplLnggKiB0aGlzLnNpemVSYXRpbztcbiAgICAgICAgICAgICAgICBuZXdIZWlnaHQgPSB2aWV3ZXJTaXplLnkgKiB0aGlzLnNpemVSYXRpbztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3V2lkdGggPSBNYXRoLnNxcnQodGhpcy5lbGVtZW50QXJlYSAqICh2aWV3ZXJTaXplLnggLyB2aWV3ZXJTaXplLnkpKTtcbiAgICAgICAgICAgICAgICBuZXdIZWlnaHQgPSB0aGlzLmVsZW1lbnRBcmVhIC8gbmV3V2lkdGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCAgPSBNYXRoLnJvdW5kKCBuZXdXaWR0aCApICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBNYXRoLnJvdW5kKCBuZXdIZWlnaHQgKSArICdweCc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5lbGVtZW50QXJlYSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudEFyZWEgPSBuZXdXaWR0aCAqIG5ld0hlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51cGRhdGVTaXplKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmlld3BvcnQgJiYgdGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgICAgYm91bmRzICAgICAgPSB2aWV3cG9ydC5nZXRCb3VuZHNOb1JvdGF0ZSh0cnVlKTtcbiAgICAgICAgICAgIHRvcGxlZnQgICAgID0gdGhpcy52aWV3cG9ydC5waXhlbEZyb21Qb2ludE5vUm90YXRlKGJvdW5kcy5nZXRUb3BMZWZ0KCksIGZhbHNlKTtcbiAgICAgICAgICAgIGJvdHRvbXJpZ2h0ID0gdGhpcy52aWV3cG9ydC5waXhlbEZyb21Qb2ludE5vUm90YXRlKGJvdW5kcy5nZXRCb3R0b21SaWdodCgpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAubWludXMoIHRoaXMudG90YWxCb3JkZXJXaWR0aHMgKTtcblxuICAgICAgICAgICAgLy91cGRhdGUgc3R5bGUgZm9yIG5hdmlnYXRvci1ib3hcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHRoaXMuZGlzcGxheVJlZ2lvbi5zdHlsZTtcbiAgICAgICAgICAgIHN0eWxlLmRpc3BsYXkgPSB0aGlzLndvcmxkLmdldEl0ZW1Db3VudCgpID8gJ2Jsb2NrJyA6ICdub25lJztcblxuICAgICAgICAgICAgc3R5bGUudG9wICAgID0gTWF0aC5yb3VuZCggdG9wbGVmdC55ICkgKyAncHgnO1xuICAgICAgICAgICAgc3R5bGUubGVmdCAgID0gTWF0aC5yb3VuZCggdG9wbGVmdC54ICkgKyAncHgnO1xuXG4gICAgICAgICAgICB2YXIgd2lkdGggPSBNYXRoLmFicyggdG9wbGVmdC54IC0gYm90dG9tcmlnaHQueCApO1xuICAgICAgICAgICAgdmFyIGhlaWdodCA9IE1hdGguYWJzKCB0b3BsZWZ0LnkgLSBib3R0b21yaWdodC55ICk7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2lkdGggYW5kIGhlaWdodCBhcmUgbm9uLW5lZ2F0aXZlIHNvIElFIGRvZXNuJ3QgdGhyb3dcbiAgICAgICAgICAgIHN0eWxlLndpZHRoICA9IE1hdGgucm91bmQoIE1hdGgubWF4KCB3aWR0aCwgMCApICkgKyAncHgnO1xuICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ID0gTWF0aC5yb3VuZCggTWF0aC5tYXgoIGhlaWdodCwgMCApICkgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICB9LFxuXG4gICAgLy8gb3ZlcnJpZGVzIFZpZXdlci5hZGRUaWxlZEltYWdlXG4gICAgYWRkVGlsZWRJbWFnZTogZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBvcmlnaW5hbCA9IG9wdGlvbnMub3JpZ2luYWxUaWxlZEltYWdlO1xuICAgICAgICBkZWxldGUgb3B0aW9ucy5vcmlnaW5hbDtcblxuICAgICAgICB2YXIgb3B0aW9uc0Nsb25lID0gJC5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIG15SXRlbSA9IGV2ZW50Lml0ZW07XG4gICAgICAgICAgICAgICAgbXlJdGVtLl9vcmlnaW5hbEZvck5hdmlnYXRvciA9IG9yaWdpbmFsO1xuICAgICAgICAgICAgICAgIF90aGlzLl9tYXRjaEJvdW5kcyhteUl0ZW0sIG9yaWdpbmFsLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIG9yaWdpbmFsLmFkZEhhbmRsZXIoJ2JvdW5kcy1jaGFuZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX21hdGNoQm91bmRzKG15SXRlbSwgb3JpZ2luYWwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gJC5WaWV3ZXIucHJvdG90eXBlLmFkZFRpbGVkSW1hZ2UuYXBwbHkodGhpcywgW29wdGlvbnNDbG9uZV0pO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2dldE1hdGNoaW5nSXRlbTogZnVuY3Rpb24odGhlaXJJdGVtKSB7XG4gICAgICAgIHZhciBjb3VudCA9IHRoaXMud29ybGQuZ2V0SXRlbUNvdW50KCk7XG4gICAgICAgIHZhciBpdGVtO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGl0ZW0gPSB0aGlzLndvcmxkLmdldEl0ZW1BdChpKTtcbiAgICAgICAgICAgIGlmIChpdGVtLl9vcmlnaW5hbEZvck5hdmlnYXRvciA9PT0gdGhlaXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9tYXRjaEJvdW5kczogZnVuY3Rpb24obXlJdGVtLCB0aGVpckl0ZW0sIGltbWVkaWF0ZWx5KSB7XG4gICAgICAgIHZhciBib3VuZHMgPSB0aGVpckl0ZW0uZ2V0Qm91bmRzKCk7XG4gICAgICAgIG15SXRlbS5zZXRQb3NpdGlvbihib3VuZHMuZ2V0VG9wTGVmdCgpLCBpbW1lZGlhdGVseSk7XG4gICAgICAgIG15SXRlbS5zZXRXaWR0aChib3VuZHMud2lkdGgsIGltbWVkaWF0ZWx5KTtcbiAgICB9XG59KTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gb25DYW52YXNDbGljayggZXZlbnQgKSB7XG4gICAgaWYgKCBldmVudC5xdWljayAmJiB0aGlzLnZpZXdlci52aWV3cG9ydCApIHtcbiAgICAgICAgdGhpcy52aWV3ZXIudmlld3BvcnQucGFuVG8odGhpcy52aWV3cG9ydC5wb2ludEZyb21QaXhlbChldmVudC5wb3NpdGlvbikpO1xuICAgICAgICB0aGlzLnZpZXdlci52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBvbkNhbnZhc0RyYWcoIGV2ZW50ICkge1xuICAgIGlmICggdGhpcy52aWV3ZXIudmlld3BvcnQgKSB7XG4gICAgICAgIGlmKCAhdGhpcy5wYW5Ib3Jpem9udGFsICl7XG4gICAgICAgICAgICBldmVudC5kZWx0YS54ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiggIXRoaXMucGFuVmVydGljYWwgKXtcbiAgICAgICAgICAgIGV2ZW50LmRlbHRhLnkgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld2VyLnZpZXdwb3J0LnBhbkJ5KFxuICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5kZWx0YVBvaW50c0Zyb21QaXhlbHMoXG4gICAgICAgICAgICAgICAgZXZlbnQuZGVsdGFcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gb25DYW52YXNSZWxlYXNlKCBldmVudCApIHtcbiAgICBpZiAoIGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkICYmIHRoaXMudmlld2VyLnZpZXdwb3J0ICkge1xuICAgICAgICB0aGlzLnZpZXdlci52aWV3cG9ydC5hcHBseUNvbnN0cmFpbnRzKCk7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogQGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIG9uQ2FudmFzU2Nyb2xsKCBldmVudCApIHtcbiAgICAvKipcbiAgICAgKiBSYWlzZWQgd2hlbiBhIHNjcm9sbCBldmVudCBvY2N1cnMgb24gdGhlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlciNuYXZpZ2F0b3J9IGVsZW1lbnQgKG1vdXNlIHdoZWVsLCB0b3VjaCBwaW5jaCwgZXRjLikuXG4gICAgICpcbiAgICAgKiBAZXZlbnQgbmF2aWdhdG9yLXNjcm9sbFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGlzIGV2ZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Nb3VzZVRyYWNrZXJ9IHRyYWNrZXIgLSBBIHJlZmVyZW5jZSB0byB0aGUgTW91c2VUcmFja2VyIHdoaWNoIG9yaWdpbmF0ZWQgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCByZWxhdGl2ZSB0byB0aGUgdHJhY2tlZCBlbGVtZW50LlxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzY3JvbGwgLSBUaGUgc2Nyb2xsIGRlbHRhIGZvciB0aGUgZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHtCb29sZWFufSBzaGlmdCAtIFRydWUgaWYgdGhlIHNoaWZ0IGtleSB3YXMgcHJlc3NlZCBkdXJpbmcgdGhpcyBldmVudC5cbiAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIHRoaXMudmlld2VyLnJhaXNlRXZlbnQoICduYXZpZ2F0b3Itc2Nyb2xsJywge1xuICAgICAgICB0cmFja2VyOiBldmVudC5ldmVudFNvdXJjZSxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50LnBvc2l0aW9uLFxuICAgICAgICBzY3JvbGw6IGV2ZW50LnNjcm9sbCxcbiAgICAgICAgc2hpZnQ6IGV2ZW50LnNoaWZ0LFxuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50XG4gICAgfSk7XG5cbiAgICAvL2RvbnQgc2Nyb2xsIHRoZSBwYWdlIHVwIGFuZCBkb3duIGlmIHRoZSB1c2VyIGlzIHNjcm9sbGluZ1xuICAgIC8vaW4gdGhlIG5hdmlnYXRvclxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gICAgKiBAZnVuY3Rpb25cbiAgICAqIEBwcml2YXRlXG4gICAgKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudFxuICAgICogQHBhcmFtIHtOdW1iZXJ9IGRlZ3JlZXNcbiAgICAqL1xuZnVuY3Rpb24gX3NldFRyYW5zZm9ybVJvdGF0ZSAoZWxlbWVudCwgZGVncmVlcykge1xuICAgIGVsZW1lbnQuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gXCJyb3RhdGUoXCIgKyBkZWdyZWVzICsgXCJkZWcpXCI7XG4gICAgZWxlbWVudC5zdHlsZS5tb3pUcmFuc2Zvcm0gPSBcInJvdGF0ZShcIiArIGRlZ3JlZXMgKyBcImRlZylcIjtcbiAgICBlbGVtZW50LnN0eWxlLm1zVHJhbnNmb3JtID0gXCJyb3RhdGUoXCIgKyBkZWdyZWVzICsgXCJkZWcpXCI7XG4gICAgZWxlbWVudC5zdHlsZS5vVHJhbnNmb3JtID0gXCJyb3RhdGUoXCIgKyBkZWdyZWVzICsgXCJkZWcpXCI7XG4gICAgZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBcInJvdGF0ZShcIiArIGRlZ3JlZXMgKyBcImRlZylcIjtcbn1cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBnZXRTdHJpbmcvc2V0U3RyaW5nXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vL1RPRE86IEkgZ3Vlc3MgdGhpcyBpcyB3aGVyZSB0aGUgaTE4biBuZWVkcyB0byBiZSByZWltcGxlbWVudGVkLiAgSSdsbCBsb29rXG4vLyAgICAgIGludG8gZXhpc3RpbmcgcGF0dGVybnMgZm9yIGkxOG4gaW4gamF2YXNjcmlwdCBidXQgaSB0aGluayB0aGF0IG1pbWlja2luZ1xuLy8gICAgICBweXRob25zIGdldHRleHQgbWlnaHQgYmUgYSByZWFzb25hYmxlIGFwcHJvYWNoLlxudmFyIEkxOE4gPSB7XG4gICAgRXJyb3JzOiB7XG4gICAgICAgIER6YzogICAgICAgICAgICBcIlNvcnJ5LCB3ZSBkb24ndCBzdXBwb3J0IERlZXAgWm9vbSBDb2xsZWN0aW9ucyFcIixcbiAgICAgICAgRHppOiAgICAgICAgICAgIFwiSG1tLCB0aGlzIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgRGVlcCBab29tIEltYWdlLlwiLFxuICAgICAgICBYbWw6ICAgICAgICAgICAgXCJIbW0sIHRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBEZWVwIFpvb20gSW1hZ2UuXCIsXG4gICAgICAgIEltYWdlRm9ybWF0OiAgICBcIlNvcnJ5LCB3ZSBkb24ndCBzdXBwb3J0IHswfS1iYXNlZCBEZWVwIFpvb20gSW1hZ2VzLlwiLFxuICAgICAgICBTZWN1cml0eTogICAgICAgXCJJdCBsb29rcyBsaWtlIGEgc2VjdXJpdHkgcmVzdHJpY3Rpb24gc3RvcHBlZCB1cyBmcm9tIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9hZGluZyB0aGlzIERlZXAgWm9vbSBJbWFnZS5cIixcbiAgICAgICAgU3RhdHVzOiAgICAgICAgIFwiVGhpcyBzcGFjZSB1bmludGVudGlvbmFsbHkgbGVmdCBibGFuayAoezB9IHsxfSkuXCIsXG4gICAgICAgIE9wZW5GYWlsZWQ6ICAgICBcIlVuYWJsZSB0byBvcGVuIHswfTogezF9XCJcbiAgICB9LFxuXG4gICAgVG9vbHRpcHM6IHtcbiAgICAgICAgRnVsbFBhZ2U6ICAgICAgIFwiVG9nZ2xlIGZ1bGwgcGFnZVwiLFxuICAgICAgICBIb21lOiAgICAgICAgICAgXCJHbyBob21lXCIsXG4gICAgICAgIFpvb21JbjogICAgICAgICBcIlpvb20gaW5cIixcbiAgICAgICAgWm9vbU91dDogICAgICAgIFwiWm9vbSBvdXRcIixcbiAgICAgICAgTmV4dFBhZ2U6ICAgICAgIFwiTmV4dCBwYWdlXCIsXG4gICAgICAgIFByZXZpb3VzUGFnZTogICBcIlByZXZpb3VzIHBhZ2VcIixcbiAgICAgICAgUm90YXRlTGVmdDogICAgIFwiUm90YXRlIGxlZnRcIixcbiAgICAgICAgUm90YXRlUmlnaHQ6ICAgIFwiUm90YXRlIHJpZ2h0XCJcbiAgICB9XG59O1xuXG4kLmV4dGVuZCggJCwgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uICove1xuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5XG4gICAgICovXG4gICAgZ2V0U3RyaW5nOiBmdW5jdGlvbiggcHJvcCApIHtcblxuICAgICAgICB2YXIgcHJvcHMgICA9IHByb3Auc3BsaXQoJy4nKSxcbiAgICAgICAgICAgIHN0cmluZyAgPSBudWxsLFxuICAgICAgICAgICAgYXJncyAgICA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IEkxOE4sXG4gICAgICAgICAgICBpO1xuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoLTE7IGkrKyApIHtcbiAgICAgICAgICAgIC8vIGluIGNhc2Ugbm90IGEgc3VicHJvcGVydHlcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lclsgcHJvcHNbIGkgXSBdIHx8IHt9O1xuICAgICAgICB9XG4gICAgICAgIHN0cmluZyA9IGNvbnRhaW5lclsgcHJvcHNbIGkgXSBdO1xuXG4gICAgICAgIGlmICggdHlwZW9mKCBzdHJpbmcgKSAhPSBcInN0cmluZ1wiICkge1xuICAgICAgICAgICAgJC5jb25zb2xlLmRlYnVnKCBcIlVudHJhbnNsYXRlZCBzb3VyY2Ugc3RyaW5nOlwiLCBwcm9wICk7XG4gICAgICAgICAgICBzdHJpbmcgPSBcIlwiOyAvLyBGSVhNRTogdGhpcyBicmVha3MgZ2V0dGV4dCgpLXN0eWxlIGNvbnZlbnRpb24sIHdoaWNoIHdvdWxkIHJldHVybiBzb3VyY2VcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFx7XFxkK1xcfS9nLCBmdW5jdGlvbihjYXB0dXJlKSB7XG4gICAgICAgICAgICB2YXIgaSA9IHBhcnNlSW50KCBjYXB0dXJlLm1hdGNoKCAvXFxkKy8gKSwgMTAgKSArIDE7XG4gICAgICAgICAgICByZXR1cm4gaSA8IGFyZ3MubGVuZ3RoID9cbiAgICAgICAgICAgICAgICBhcmdzWyBpIF0gOlxuICAgICAgICAgICAgICAgIFwiXCI7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAgICovXG4gICAgc2V0U3RyaW5nOiBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XG5cbiAgICAgICAgdmFyIHByb3BzICAgICA9IHByb3Auc3BsaXQoJy4nKSxcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IEkxOE4sXG4gICAgICAgICAgICBpO1xuXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoIC0gMTsgaSsrICkge1xuICAgICAgICAgICAgaWYgKCAhY29udGFpbmVyWyBwcm9wc1sgaSBdIF0gKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyWyBwcm9wc1sgaSBdIF0gPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lclsgcHJvcHNbIGkgXSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGFpbmVyWyBwcm9wc1sgaSBdIF0gPSB2YWx1ZTtcbiAgICB9XG5cbn0pO1xuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIFBvaW50XG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIEBjbGFzcyBQb2ludFxuICogQGNsYXNzZGVzYyBBIFBvaW50IGlzIHJlYWxseSB1c2VkIGFzIGEgMi1kaW1lbnNpb25hbCB2ZWN0b3IsIGVxdWFsbHkgdXNlZnVsIGZvclxuICogcmVwcmVzZW50aW5nIGEgcG9pbnQgb24gYSBwbGFuZSwgb3IgdGhlIGhlaWdodCBhbmQgd2lkdGggb2YgYSBwbGFuZVxuICogbm90IHJlcXVpcmluZyBhbnkgb3RoZXIgZnJhbWUgb2YgcmVmZXJlbmNlLlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAcGFyYW0ge051bWJlcn0gW3hdIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd4Jy4gRGVmYXVsdHMgdG8gdGhlIG9yaWdpbiBhdCAwLlxuICogQHBhcmFtIHtOdW1iZXJ9IFt5XSBUaGUgdmVjdG9yIGNvbXBvbmVudCAneScuIERlZmF1bHRzIHRvIHRoZSBvcmlnaW4gYXQgMC5cbiAqL1xuJC5Qb2ludCA9IGZ1bmN0aW9uKCB4LCB5ICkge1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd4Jy5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IHhcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Qb2ludCNcbiAgICAgKi9cbiAgICB0aGlzLnggPSB0eXBlb2YgKCB4ICkgPT0gXCJudW1iZXJcIiA/IHggOiAwO1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd5Jy5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IHlcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5Qb2ludCNcbiAgICAgKi9cbiAgICB0aGlzLnkgPSB0eXBlb2YgKCB5ICkgPT0gXCJudW1iZXJcIiA/IHkgOiAwO1xufTtcblxuLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLlBvaW50LnByb3RvdHlwZSAqL1xuJC5Qb2ludC5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IGEgZHVwbGljYXRlIG9mIHRoaXMgUG9pbnRcbiAgICAgKi9cbiAgICBjbG9uZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCh0aGlzLngsIHRoaXMueSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFkZCBhbm90aGVyIFBvaW50IHRvIHRoaXMgcG9pbnQgYW5kIHJldHVybiBhIG5ldyBQb2ludC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50IFRoZSBwb2ludCB0byBhZGQgdmVjdG9yIGNvbXBvbmVudHMuXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IEEgbmV3IHBvaW50IHJlcHJlc2VudGluZyB0aGUgc3VtIG9mIHRoZVxuICAgICAqICB2ZWN0b3IgY29tcG9uZW50c1xuICAgICAqL1xuICAgIHBsdXM6IGZ1bmN0aW9uKCBwb2ludCApIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgdGhpcy54ICsgcG9pbnQueCxcbiAgICAgICAgICAgIHRoaXMueSArIHBvaW50LnlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU3Vic3RyYWN0IGFub3RoZXIgUG9pbnQgdG8gdGhpcyBwb2ludCBhbmQgcmV0dXJuIGEgbmV3IFBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9pbnQgVGhlIHBvaW50IHRvIHN1YnN0cmFjdCB2ZWN0b3IgY29tcG9uZW50cy5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gQSBuZXcgcG9pbnQgcmVwcmVzZW50aW5nIHRoZSBzdWJzdHJhY3Rpb24gb2YgdGhlXG4gICAgICogIHZlY3RvciBjb21wb25lbnRzXG4gICAgICovXG4gICAgbWludXM6IGZ1bmN0aW9uKCBwb2ludCApIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgdGhpcy54IC0gcG9pbnQueCxcbiAgICAgICAgICAgIHRoaXMueSAtIHBvaW50LnlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdGhpcyBwb2ludCBieSBhIGZhY3RvciBhbmQgcmV0dXJuIGEgbmV3IFBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBmYWN0b3IgVGhlIGZhY3RvciB0byBtdWx0aXBseSB2ZWN0b3IgY29tcG9uZW50cy5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gQSBuZXcgcG9pbnQgcmVwcmVzZW50aW5nIHRoZSBtdWx0aXBsaWNhdGlvblxuICAgICAqICBvZiB0aGUgdmVjdG9yIGNvbXBvbmVudHMgYnkgdGhlIGZhY3RvclxuICAgICAqL1xuICAgIHRpbWVzOiBmdW5jdGlvbiggZmFjdG9yICkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICB0aGlzLnggKiBmYWN0b3IsXG4gICAgICAgICAgICB0aGlzLnkgKiBmYWN0b3JcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHRoaXMgcG9pbnQgYnkgYSBmYWN0b3IgYW5kIHJldHVybiBhIG5ldyBQb2ludC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gZmFjdG9yIFRoZSBmYWN0b3IgdG8gZGl2aWRlIHZlY3RvciBjb21wb25lbnRzLlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBBIG5ldyBwb2ludCByZXByZXNlbnRpbmcgdGhlIGRpdmlzaW9uIG9mIHRoZVxuICAgICAqICB2ZWN0b3IgY29tcG9uZW50cyBieSB0aGUgZmFjdG9yXG4gICAgICovXG4gICAgZGl2aWRlOiBmdW5jdGlvbiggZmFjdG9yICkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICB0aGlzLnggLyBmYWN0b3IsXG4gICAgICAgICAgICB0aGlzLnkgLyBmYWN0b3JcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZSB0aGUgb3Bwb3NpdGUgb2YgdGhpcyBwb2ludCBhbmQgcmV0dXJuIGEgbmV3IFBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBBIG5ldyBwb2ludCByZXByZXNlbnRpbmcgdGhlIG9wcG9zaXRlIG9mIHRoZVxuICAgICAqICB2ZWN0b3IgY29tcG9uZW50c1xuICAgICAqL1xuICAgIG5lZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCggLXRoaXMueCwgLXRoaXMueSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoaXMgcG9pbnQgYW5kIGFub3RoZXIgcG9pbnQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb2ludCBUaGUgcG9pbnQgdG8gY29tcHV0ZSB0aGUgZGlzdGFuY2Ugd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgMiBwb2ludHNcbiAgICAgKi9cbiAgICBkaXN0YW5jZVRvOiBmdW5jdGlvbiggcG9pbnQgKSB7XG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoXG4gICAgICAgICAgICBNYXRoLnBvdyggdGhpcy54IC0gcG9pbnQueCwgMiApICtcbiAgICAgICAgICAgIE1hdGgucG93KCB0aGlzLnkgLSBwb2ludC55LCAyIClcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQXBwbHkgYSBmdW5jdGlvbiB0byBlYWNoIGNvb3JkaW5hdGUgb2YgdGhpcyBwb2ludCBhbmQgcmV0dXJuIGEgbmV3IHBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggY29vcmRpbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gQSBuZXcgcG9pbnQgd2l0aCB0aGUgY29vcmRpbmF0ZXMgY29tcHV0ZWRcbiAgICAgKiBieSB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uXG4gICAgICovXG4gICAgYXBwbHk6IGZ1bmN0aW9uKCBmdW5jICkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoIGZ1bmMoIHRoaXMueCApLCBmdW5jKCB0aGlzLnkgKSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGlzIHBvaW50IGlzIGVxdWFsIHRvIGFub3RoZXIgb25lLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9pbnQgVGhlIHBvaW50IHRvIGNvbXBhcmUgdGhpcyBwb2ludCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufSB0cnVlIGlmIHRoZXkgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgZXF1YWxzOiBmdW5jdGlvbiggcG9pbnQgKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBwb2ludCBpbnN0YW5jZW9mICQuUG9pbnRcbiAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICB0aGlzLnggPT09IHBvaW50LnhcbiAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICB0aGlzLnkgPT09IHBvaW50LnlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUm90YXRlcyB0aGUgcG9pbnQgYXJvdW5kIHRoZSBzcGVjaWZpZWQgcGl2b3RcbiAgICAgKiBGcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDQ2NTkzMS9yb3RhdGUtcmVjdGFuZ2xlLWFyb3VuZC1hLXBvaW50XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGRlZ3Jlc3MgdG8gcm90YXRlIGFyb3VuZCB0aGUgcGl2b3QuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBbcGl2b3Q9KDAsMCldIFBvaW50IGFyb3VuZCB3aGljaCB0byByb3RhdGUuXG4gICAgICogRGVmYXVsdHMgdG8gdGhlIG9yaWdpbi5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0uIEEgbmV3IHBvaW50IHJlcHJlc2VudGluZyB0aGUgcG9pbnQgcm90YXRlZCBhcm91bmQgdGhlIHNwZWNpZmllZCBwaXZvdFxuICAgICAqL1xuICAgIHJvdGF0ZTogZnVuY3Rpb24gKGRlZ3JlZXMsIHBpdm90KSB7XG4gICAgICAgIHBpdm90ID0gcGl2b3QgfHwgbmV3ICQuUG9pbnQoMCwgMCk7XG4gICAgICAgIHZhciBjb3M7XG4gICAgICAgIHZhciBzaW47XG4gICAgICAgIC8vIEF2b2lkIGZsb2F0IGNvbXB1dGF0aW9ucyB3aGVuIHBvc3NpYmxlXG4gICAgICAgIGlmIChkZWdyZWVzICUgOTAgPT09IDApIHtcbiAgICAgICAgICAgIHZhciBkID0gZGVncmVlcyAlIDM2MDtcbiAgICAgICAgICAgIGlmIChkIDwgMCkge1xuICAgICAgICAgICAgICAgIGQgKz0gMzYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBjb3MgPSAxO1xuICAgICAgICAgICAgICAgICAgICBzaW4gPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgICBjb3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICBzaW4gPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE4MDpcbiAgICAgICAgICAgICAgICAgICAgY29zID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIHNpbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjcwOlxuICAgICAgICAgICAgICAgICAgICBjb3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICBzaW4gPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgYW5nbGUgPSBkZWdyZWVzICogTWF0aC5QSSAvIDE4MC4wO1xuICAgICAgICAgICAgY29zID0gTWF0aC5jb3MoYW5nbGUpO1xuICAgICAgICAgICAgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4ID0gY29zICogKHRoaXMueCAtIHBpdm90LngpIC0gc2luICogKHRoaXMueSAtIHBpdm90LnkpICsgcGl2b3QueDtcbiAgICAgICAgdmFyIHkgPSBzaW4gKiAodGhpcy54IC0gcGl2b3QueCkgKyBjb3MgKiAodGhpcy55IC0gcGl2b3QueSkgKyBwaXZvdC55O1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoeCwgeSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgdGhpcyBwb2ludCB0byBhIHN0cmluZyBpbiB0aGUgZm9ybWF0ICh4LHkpIHdoZXJlIHggYW5kIHkgYXJlXG4gICAgICogcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgcG9pbnQuXG4gICAgICovXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gXCIoXCIgKyAoTWF0aC5yb3VuZCh0aGlzLnggKiAxMDApIC8gMTAwKSArIFwiLFwiICsgKE1hdGgucm91bmQodGhpcy55ICogMTAwKSAvIDEwMCkgKyBcIilcIjtcbiAgICB9XG59O1xuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIFRpbGVTb3VyY2VcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cblxuLyoqXG4gKiBAY2xhc3MgVGlsZVNvdXJjZVxuICogQGNsYXNzZGVzYyBUaGUgVGlsZVNvdXJjZSBjb250YWlucyB0aGUgbW9zdCBiYXNpYyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlZCB0byBjcmVhdGUgYVxuICogc21vb3RoIHRyYW5zaXRpb24gYmV0d2VlbiBsYXllcnMgaW4gYW4gaW1hZ2UgcHlyYW1pZC4gSXQgaGFzIG9ubHkgYSBzaW5nbGUga2V5XG4gKiBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIHRvIGNvbXBsZXRlIGl0cyBrZXkgZnVuY3Rpb25hbGl0eTpcbiAqICdnZXRUaWxlVXJsJy4gIEl0IGFsc28gaGFzIHNldmVyYWwgb3B0aW9uYWwgaW50ZXJmYWNlcyB0aGF0IGNhbiBiZVxuICogaW1wbGVtZW50ZWQgaWYgYSBuZXcgVGlsZVNvdXJjZSB3aXNoZXMgdG8gc3VwcG9ydCBjb25maWd1cmF0aW9uIHZpYSBhIHNpbXBsZVxuICogb2JqZWN0IG9yIGFycmF5ICgnY29uZmlndXJlJykgYW5kIGlmIHRoZSB0aWxlIHNvdXJjZSBzdXBwb3J0cyBvciByZXF1aXJlc1xuICogY29uZmlndXJhdGlvbiB2aWEgcmV0cmlldmFsIG9mIGEgZG9jdW1lbnQgb24gdGhlIG5ldHdvcmsgYWxhIEFKQVggb3IgSlNPTlAsXG4gKiAoJ2dldEltYWdlSW5mbycpLlxuICogPGJyLz5cbiAqIEJ5IGRlZmF1bHQgdGhlIGltYWdlIHB5cmFtaWQgaXMgc3BsaXQgaW50byBOIGxheWVycyB3aGVyZSB0aGUgaW1hZ2UncyBsb25nZXN0XG4gKiBzaWRlIGluIE0gKGluIHBpeGVscyksIHdoZXJlIE4gaXMgdGhlIHNtYWxsZXN0IGludGVnZXIgd2hpY2ggc2F0aXNmaWVzXG4gKiAgICAgIDxzdHJvbmc+Ml4oTisxKSA+PSBNPC9zdHJvbmc+LlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLkV2ZW50U291cmNlXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogICAgICBZb3UgY2FuIGVpdGhlciBzcGVjaWZ5IGEgVVJMLCBvciBsaXRlcmFsbHkgZGVmaW5lIHRoZSBUaWxlU291cmNlIChieSBzcGVjaWZ5aW5nXG4gKiAgICAgIHdpZHRoLCBoZWlnaHQsIHRpbGVTaXplLCB0aWxlT3ZlcmxhcCwgbWluTGV2ZWwsIGFuZCBtYXhMZXZlbCkuIEZvciB0aGUgZm9ybWVyLFxuICogICAgICB0aGUgZXh0ZW5kaW5nIGNsYXNzIGlzIGV4cGVjdGVkIHRvIGltcGxlbWVudCAnZ2V0SW1hZ2VJbmZvJyBhbmQgJ2NvbmZpZ3VyZScuXG4gKiAgICAgIEZvciB0aGUgbGF0dGVyLCB0aGUgY29uc3RydWN0aW9uIGlzIGFzc3VtZWQgdG8gb2NjdXIgdGhyb3VnaFxuICogICAgICB0aGUgZXh0ZW5kaW5nIGNsYXNzZXMgaW1wbGVtZW50YXRpb24gb2YgJ2NvbmZpZ3VyZScuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMudXJsXVxuICogICAgICBUaGUgVVJMIGZvciB0aGUgZGF0YSBuZWNlc3NhcnkgZm9yIHRoaXMgVGlsZVNvdXJjZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLnN1Y2Nlc3NdXG4gKiAgICAgIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gc3VjY2Vzc2Z1bCBjcmVhdGlvbi5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWpheFdpdGhDcmVkZW50aWFsc11cbiAqICAgICAgSWYgdGhpcyBUaWxlU291cmNlIG5lZWRzIHRvIG1ha2UgYW4gQUpBWCBjYWxsLCB0aGlzIHNwZWNpZmllcyB3aGV0aGVyIHRvIHNldFxuICogICAgICB0aGUgWEhSJ3Mgd2l0aENyZWRlbnRpYWxzIChmb3IgYWNjZXNzaW5nIHNlY3VyZSBkYXRhKS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy53aWR0aF1cbiAqICAgICAgV2lkdGggb2YgdGhlIHNvdXJjZSBpbWFnZSBhdCBtYXggcmVzb2x1dGlvbiBpbiBwaXhlbHMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuaGVpZ2h0XVxuICogICAgICBIZWlnaHQgb2YgdGhlIHNvdXJjZSBpbWFnZSBhdCBtYXggcmVzb2x1dGlvbiBpbiBwaXhlbHMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMudGlsZVNpemVdXG4gKiAgICAgIFRoZSBzaXplIG9mIHRoZSB0aWxlcyB0byBhc3N1bWVkIHRvIG1ha2UgdXAgZWFjaCBweXJhbWlkIGxheWVyIGluIHBpeGVscy5cbiAqICAgICAgVGlsZSBzaXplIGRldGVybWluZXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBpbWFnZSBweXJhbWlkIG11c3QgYmVcbiAqICAgICAgZGl2aWRlZCBpbnRvIGEgbWF0cml4IG9mIHNtYWxsZXIgaW1hZ2VzLlxuICogICAgICBVc2Ugb3B0aW9ucy50aWxlV2lkdGggYW5kIG9wdGlvbnMudGlsZUhlaWdodCB0byBzdXBwb3J0IG5vbi1zcXVhcmUgdGlsZXMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMudGlsZVdpZHRoXVxuICogICAgICBUaGUgd2lkdGggb2YgdGhlIHRpbGVzIHRvIGFzc3VtZWQgdG8gbWFrZSB1cCBlYWNoIHB5cmFtaWQgbGF5ZXIgaW4gcGl4ZWxzLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnRpbGVIZWlnaHRdXG4gKiAgICAgIFRoZSBoZWlnaHQgb2YgdGhlIHRpbGVzIHRvIGFzc3VtZWQgdG8gbWFrZSB1cCBlYWNoIHB5cmFtaWQgbGF5ZXIgaW4gcGl4ZWxzLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnRpbGVPdmVybGFwXVxuICogICAgICBUaGUgbnVtYmVyIG9mIHBpeGVscyBlYWNoIHRpbGUgaXMgZXhwZWN0ZWQgdG8gb3ZlcmxhcCB0b3VjaGluZyB0aWxlcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5taW5MZXZlbF1cbiAqICAgICAgVGhlIG1pbmltdW0gbGV2ZWwgdG8gYXR0ZW1wdCB0byBsb2FkLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm1heExldmVsXVxuICogICAgICBUaGUgbWF4aW11bSBsZXZlbCB0byBhdHRlbXB0IHRvIGxvYWQuXG4gKi9cbiQuVGlsZVNvdXJjZSA9IGZ1bmN0aW9uKCB3aWR0aCwgaGVpZ2h0LCB0aWxlU2l6ZSwgdGlsZU92ZXJsYXAsIG1pbkxldmVsLCBtYXhMZXZlbCApIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGk7XG5cbiAgICBpZiggJC5pc1BsYWluT2JqZWN0KCB3aWR0aCApICl7XG4gICAgICAgIG9wdGlvbnMgPSB3aWR0aDtcbiAgICB9ZWxzZXtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiBhcmdzWzBdLFxuICAgICAgICAgICAgaGVpZ2h0OiBhcmdzWzFdLFxuICAgICAgICAgICAgdGlsZVNpemU6IGFyZ3NbMl0sXG4gICAgICAgICAgICB0aWxlT3ZlcmxhcDogYXJnc1szXSxcbiAgICAgICAgICAgIG1pbkxldmVsOiBhcmdzWzRdLFxuICAgICAgICAgICAgbWF4TGV2ZWw6IGFyZ3NbNV1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvL1RpbGUgc291cmNlcyBzdXBwbHkgc29tZSBldmVudHMsIG5hbWVseSAncmVhZHknIHdoZW4gdGhleSBtdXN0IGJlIGNvbmZpZ3VyZWRcbiAgICAvL2J5IGFzeW5jaHJvbm91c2x5IGZldGNoaW5nIHRoZWlyIGNvbmZpZ3VyYXRpb24gZGF0YS5cbiAgICAkLkV2ZW50U291cmNlLmNhbGwoIHRoaXMgKTtcblxuICAgIC8vd2UgYWxsb3cgb3B0aW9ucyB0byBvdmVycmlkZSBhbnl0aGluZyB3ZSBkb250IHRyZWF0IGFzXG4gICAgLy9yZXF1aXJlZCB2aWEgaWRpb21hdGljIG9wdGlvbnMgb3Igd2hpY2ggaXMgZnVuY3Rpb25hbGx5XG4gICAgLy9zZXQgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZGluZXNzIG9mIHRoaXMgdGlsZVxuICAgIC8vc291cmNlXG4gICAgJC5leHRlbmQoIHRydWUsIHRoaXMsIG9wdGlvbnMgKTtcblxuICAgIGlmICghdGhpcy5zdWNjZXNzKSB7XG4gICAgICAgIC8vQW55IGZ1bmN0aW9ucyB0aGF0IGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIGFyZSBib3VuZCB0byB0aGUgcmVhZHkgY2FsbGJhY2tcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoICQuaXNGdW5jdGlvbiggYXJndW1lbnRzWyBpIF0gKSApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBhcmd1bWVudHNbIGkgXTtcbiAgICAgICAgICAgICAgICAvL29ubHkgb25lIGNhbGxiYWNrIHBlciBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3VjY2Vzcykge1xuICAgICAgICB0aGlzLmFkZEhhbmRsZXIoICdyZWFkeScsIGZ1bmN0aW9uICggZXZlbnQgKSB7XG4gICAgICAgICAgICBfdGhpcy5zdWNjZXNzKCBldmVudCApO1xuICAgICAgICB9ICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0XG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBhc3BlY3RSYXRpb1xuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2UjXG4gICAgICovXG4gICAgLyoqXG4gICAgICogVmVjdG9yIHN0b3JpbmcgeCBhbmQgeSBkaW1lbnNpb25zICggd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgKS5cbiAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBkaW1lbnNpb25zXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZVNvdXJjZSNcbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBUaGUgb3ZlcmxhcCBpbiBwaXhlbHMgZWFjaCB0aWxlIHNoYXJlcyB3aXRoIGl0cyBhZGphY2VudCBuZWlnaGJvcnMuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSB0aWxlT3ZlcmxhcFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2UjXG4gICAgICovXG4gICAgLyoqXG4gICAgICogVGhlIG1pbmltdW0gcHlyYW1pZCBsZXZlbCB0aGlzIHRpbGUgc291cmNlIHN1cHBvcnRzIG9yIHNob3VsZCBhdHRlbXB0IHRvIGxvYWQuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBtaW5MZXZlbFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2UjXG4gICAgICovXG4gICAgLyoqXG4gICAgICogVGhlIG1heGltdW0gcHlyYW1pZCBsZXZlbCB0aGlzIHRpbGUgc291cmNlIHN1cHBvcnRzIG9yIHNob3VsZCBhdHRlbXB0IHRvIGxvYWQuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBtYXhMZXZlbFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2UjXG4gICAgICovXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAbWVtYmVyIHtCb29sZWFufSByZWFkeVxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2UjXG4gICAgICovXG5cbiAgICBpZiggJ3N0cmluZycgPT0gJC50eXBlKCBhcmd1bWVudHNbIDAgXSApICl7XG4gICAgICAgIHRoaXMudXJsID0gYXJndW1lbnRzWzBdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgICAvL2luIGNhc2UgdGhlIGdldEltYWdlSW5mbyBtZXRob2QgaXMgb3ZlcnJpZGVuIGFuZC9vciBpbXBsaWVzIGFuXG4gICAgICAgIC8vYXN5bmMgbWVjaGFuaXNtIHNldCBzb21lIHNhZmUgZGVmYXVsdHMgZmlyc3RcbiAgICAgICAgdGhpcy5hc3BlY3RSYXRpbyA9IDE7XG4gICAgICAgIHRoaXMuZGltZW5zaW9ucyAgPSBuZXcgJC5Qb2ludCggMTAsIDEwICk7XG4gICAgICAgIHRoaXMuX3RpbGVXaWR0aCAgPSAwO1xuICAgICAgICB0aGlzLl90aWxlSGVpZ2h0ID0gMDtcbiAgICAgICAgdGhpcy50aWxlT3ZlcmxhcCA9IDA7XG4gICAgICAgIHRoaXMubWluTGV2ZWwgICAgPSAwO1xuICAgICAgICB0aGlzLm1heExldmVsICAgID0gMDtcbiAgICAgICAgdGhpcy5yZWFkeSAgICAgICA9IGZhbHNlO1xuICAgICAgICAvL2NvbmZpZ3VyYXRpb24gdmlhIHVybCBpbXBsaWVzIHRoZSBleHRlbmRpbmcgY2xhc3NcbiAgICAgICAgLy9pbXBsZW1lbnRzIGFuZCAnY29uZmlndXJlJ1xuICAgICAgICB0aGlzLmdldEltYWdlSW5mbyggdGhpcy51cmwgKTtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgICAgLy9leHBsaWNpdCBjb25maWd1cmF0aW9uIHZpYSBwb3NpdGlvbmFsIGFyZ3MgaW4gY29uc3RydWN0b3JcbiAgICAgICAgLy9vciB0aGUgbW9yZSBpZGlvbWF0aWMgJ29wdGlvbnMnIG9iamVjdFxuICAgICAgICB0aGlzLnJlYWR5ICAgICAgID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hc3BlY3RSYXRpbyA9ICggb3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCApID9cbiAgICAgICAgICAgICggIG9wdGlvbnMud2lkdGggLyBvcHRpb25zLmhlaWdodCApIDogMTtcbiAgICAgICAgdGhpcy5kaW1lbnNpb25zICA9IG5ldyAkLlBvaW50KCBvcHRpb25zLndpZHRoLCBvcHRpb25zLmhlaWdodCApO1xuXG4gICAgICAgIGlmICggdGhpcy50aWxlU2l6ZSApe1xuICAgICAgICAgICAgdGhpcy5fdGlsZVdpZHRoID0gdGhpcy5fdGlsZUhlaWdodCA9IHRoaXMudGlsZVNpemU7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy50aWxlU2l6ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmKCB0aGlzLnRpbGVXaWR0aCApe1xuICAgICAgICAgICAgICAgIC8vIFdlIHdlcmUgcGFzc2VkIHRpbGVXaWR0aCBpbiBvcHRpb25zLCBidXQgd2Ugd2FudCB0byByZW5hbWUgaXRcbiAgICAgICAgICAgICAgICAvLyB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlIHRvIG1ha2UgY2xlYXIgdGhhdCBpdCBpcyBub3Qgc2FmZSB0byBkaXJlY3RseSBtb2RpZnkgaXRcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlV2lkdGggPSB0aGlzLnRpbGVXaWR0aDtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy50aWxlV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpbGVXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCB0aGlzLnRpbGVIZWlnaHQgKXtcbiAgICAgICAgICAgICAgICAvLyBTZWUgbm90ZSBhYm92ZSBhYm91dCByZW5hbWluZyB0aGlzLnRpbGVXaWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuX3RpbGVIZWlnaHQgPSB0aGlzLnRpbGVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGlsZUhlaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZUhlaWdodCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpbGVPdmVybGFwID0gb3B0aW9ucy50aWxlT3ZlcmxhcCA/IG9wdGlvbnMudGlsZU92ZXJsYXAgOiAwO1xuICAgICAgICB0aGlzLm1pbkxldmVsICAgID0gb3B0aW9ucy5taW5MZXZlbCA/IG9wdGlvbnMubWluTGV2ZWwgOiAwO1xuICAgICAgICB0aGlzLm1heExldmVsICAgID0gKCB1bmRlZmluZWQgIT09IG9wdGlvbnMubWF4TGV2ZWwgJiYgbnVsbCAhPT0gb3B0aW9ucy5tYXhMZXZlbCApID9cbiAgICAgICAgICAgIG9wdGlvbnMubWF4TGV2ZWwgOiAoXG4gICAgICAgICAgICAgICAgKCBvcHRpb25zLndpZHRoICYmIG9wdGlvbnMuaGVpZ2h0ICkgPyBNYXRoLmNlaWwoXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubG9nKCBNYXRoLm1heCggb3B0aW9ucy53aWR0aCwgb3B0aW9ucy5oZWlnaHQgKSApIC9cbiAgICAgICAgICAgICAgICAgICAgTWF0aC5sb2coIDIgKVxuICAgICAgICAgICAgICAgICkgOiAwXG4gICAgICAgICAgICApO1xuICAgICAgICBpZiggdGhpcy5zdWNjZXNzICYmICQuaXNGdW5jdGlvbiggdGhpcy5zdWNjZXNzICkgKXtcbiAgICAgICAgICAgIHRoaXMuc3VjY2VzcyggdGhpcyApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn07XG5cbi8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5UaWxlU291cmNlLnByb3RvdHlwZSAqL1xuJC5UaWxlU291cmNlLnByb3RvdHlwZSA9IHtcblxuICAgIGdldFRpbGVTaXplOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG4gICAgICAgICQuY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiW1RpbGVTb3VyY2UuZ2V0VGlsZVNpemVdIGlzIGRlcHJlY2F0ZWQuXCIgK1xuICAgICAgICAgICAgXCJVc2UgVGlsZVNvdXJjZS5nZXRUaWxlV2lkdGgoKSBhbmQgVGlsZVNvdXJjZS5nZXRUaWxlSGVpZ2h0KCkgaW5zdGVhZFwiXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLl90aWxlV2lkdGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgdGlsZVdpZHRoIGZvciBhIGdpdmVuIGxldmVsLlxuICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgaWYgdGlsZVdpZHRoIGNhbiBiZSBkaWZmZXJlbnQgYXQgZGlmZmVyZW50IGxldmVsc1xuICAgICAqICAgc3VjaCBhcyBpbiBJSUlGVGlsZVNvdXJjZS4gIENvZGUgc2hvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHJlYWRpbmdcbiAgICAgKiAgIGZyb20gLl90aWxlV2lkdGggZGlyZWN0bHkuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsXG4gICAgICovXG4gICAgZ2V0VGlsZVdpZHRoOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG4gICAgICAgIGlmICghdGhpcy5fdGlsZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUaWxlU2l6ZShsZXZlbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpbGVXaWR0aDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSB0aWxlSGVpZ2h0IGZvciBhIGdpdmVuIGxldmVsLlxuICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgaWYgdGlsZUhlaWdodCBjYW4gYmUgZGlmZmVyZW50IGF0IGRpZmZlcmVudCBsZXZlbHNcbiAgICAgKiAgIHN1Y2ggYXMgaW4gSUlJRlRpbGVTb3VyY2UuICBDb2RlIHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiByZWFkaW5nXG4gICAgICogICBmcm9tIC5fdGlsZUhlaWdodCBkaXJlY3RseS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKi9cbiAgICBnZXRUaWxlSGVpZ2h0OiBmdW5jdGlvbiggbGV2ZWwgKSB7XG4gICAgICAgIGlmICghdGhpcy5fdGlsZUhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGlsZVNpemUobGV2ZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90aWxlSGVpZ2h0O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKi9cbiAgICBnZXRMZXZlbFNjYWxlOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG5cbiAgICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc2VhZHJhZ29uL29wZW5zZWFkcmFnb24vaXNzdWVzLzIyXG4gICAgICAgIC8vIHdlIHVzZSB0aGUgdGlsZXNvdXJjZXMgaW1wbGVtZW50YXRpb24gb2YgZ2V0TGV2ZWxTY2FsZSB0byBnZW5lcmF0ZVxuICAgICAgICAvLyBhIG1lbW9pemVkIHJlLWltcGxlbWVudGF0aW9uXG4gICAgICAgIHZhciBsZXZlbFNjYWxlQ2FjaGUgPSB7fSxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciggaSA9IDA7IGkgPD0gdGhpcy5tYXhMZXZlbDsgaSsrICl7XG4gICAgICAgICAgICBsZXZlbFNjYWxlQ2FjaGVbIGkgXSA9IDEgLyBNYXRoLnBvdygyLCB0aGlzLm1heExldmVsIC0gaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRMZXZlbFNjYWxlID0gZnVuY3Rpb24oIF9sZXZlbCApe1xuICAgICAgICAgICAgcmV0dXJuIGxldmVsU2NhbGVDYWNoZVsgX2xldmVsIF07XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmdldExldmVsU2NhbGUoIGxldmVsICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldE51bVRpbGVzOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG4gICAgICAgIHZhciBzY2FsZSA9IHRoaXMuZ2V0TGV2ZWxTY2FsZSggbGV2ZWwgKSxcbiAgICAgICAgICAgIHggPSBNYXRoLmNlaWwoIHNjYWxlICogdGhpcy5kaW1lbnNpb25zLnggLyB0aGlzLmdldFRpbGVXaWR0aChsZXZlbCkgKSxcbiAgICAgICAgICAgIHkgPSBNYXRoLmNlaWwoIHNjYWxlICogdGhpcy5kaW1lbnNpb25zLnkgLyB0aGlzLmdldFRpbGVIZWlnaHQobGV2ZWwpICk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KCB4LCB5ICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldFBpeGVsUmF0aW86IGZ1bmN0aW9uKCBsZXZlbCApIHtcbiAgICAgICAgdmFyIGltYWdlU2l6ZVNjYWxlZCA9IHRoaXMuZGltZW5zaW9ucy50aW1lcyggdGhpcy5nZXRMZXZlbFNjYWxlKCBsZXZlbCApICksXG4gICAgICAgICAgICByeCA9IDEuMCAvIGltYWdlU2l6ZVNjYWxlZC54LFxuICAgICAgICAgICAgcnkgPSAxLjAgLyBpbWFnZVNpemVTY2FsZWQueTtcblxuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQocngsIHJ5KTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKi9cbiAgICBnZXRDbG9zZXN0TGV2ZWw6IGZ1bmN0aW9uKCByZWN0ICkge1xuICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgIHRpbGVzUGVyU2lkZSxcbiAgICAgICAgICAgIHRpbGVzO1xuXG4gICAgICAgIGZvciggaSA9IHRoaXMubWluTGV2ZWw7IGkgPCB0aGlzLm1heExldmVsOyBpKysgKXtcbiAgICAgICAgICAgIHRpbGVzID0gdGhpcy5nZXROdW1UaWxlcyggaSApO1xuICAgICAgICAgICAgdGlsZXNQZXJTaWRlID0gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICAgIE1hdGguZmxvb3IoIHJlY3QueCAvIHRoaXMuZ2V0VGlsZVdpZHRoKGkpICksXG4gICAgICAgICAgICAgIE1hdGguZmxvb3IoIHJlY3QueSAvIHRoaXMuZ2V0VGlsZUhlaWdodChpKSApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiggdGlsZXMueCArIDEgPj0gdGlsZXNQZXJTaWRlLnggJiYgdGlsZXMueSArIDEgPj0gdGlsZXNQZXJTaWRlLnkgKXtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoIDAsIGkgLSAxICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9pbnRcbiAgICAgKi9cbiAgICBnZXRUaWxlQXRQb2ludDogZnVuY3Rpb24oIGxldmVsLCBwb2ludCApIHtcbiAgICAgICAgdmFyIHBpeGVsID0gcG9pbnQudGltZXMoIHRoaXMuZGltZW5zaW9ucy54ICkudGltZXMoIHRoaXMuZ2V0TGV2ZWxTY2FsZShsZXZlbCkgKSxcbiAgICAgICAgICAgIHR4ID0gTWF0aC5mbG9vciggcGl4ZWwueCAvIHRoaXMuZ2V0VGlsZVdpZHRoKGxldmVsKSApLFxuICAgICAgICAgICAgdHkgPSBNYXRoLmZsb29yKCBwaXhlbC55IC8gdGhpcy5nZXRUaWxlSGVpZ2h0KGxldmVsKSApO1xuXG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCggdHgsIHR5ICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICAgKi9cbiAgICBnZXRUaWxlQm91bmRzOiBmdW5jdGlvbiggbGV2ZWwsIHgsIHkgKSB7XG4gICAgICAgIHZhciBkaW1lbnNpb25zU2NhbGVkID0gdGhpcy5kaW1lbnNpb25zLnRpbWVzKCB0aGlzLmdldExldmVsU2NhbGUoIGxldmVsICkgKSxcbiAgICAgICAgICAgIHRpbGVXaWR0aCA9IHRoaXMuZ2V0VGlsZVdpZHRoKGxldmVsKSxcbiAgICAgICAgICAgIHRpbGVIZWlnaHQgPSB0aGlzLmdldFRpbGVIZWlnaHQobGV2ZWwpLFxuICAgICAgICAgICAgcHggPSAoIHggPT09IDAgKSA/IDAgOiB0aWxlV2lkdGggKiB4IC0gdGhpcy50aWxlT3ZlcmxhcCxcbiAgICAgICAgICAgIHB5ID0gKCB5ID09PSAwICkgPyAwIDogdGlsZUhlaWdodCAqIHkgLSB0aGlzLnRpbGVPdmVybGFwLFxuICAgICAgICAgICAgc3ggPSB0aWxlV2lkdGggKyAoIHggPT09IDAgPyAxIDogMiApICogdGhpcy50aWxlT3ZlcmxhcCxcbiAgICAgICAgICAgIHN5ID0gdGlsZUhlaWdodCArICggeSA9PT0gMCA/IDEgOiAyICkgKiB0aGlzLnRpbGVPdmVybGFwLFxuICAgICAgICAgICAgc2NhbGUgPSAxLjAgLyBkaW1lbnNpb25zU2NhbGVkLng7XG5cbiAgICAgICAgc3ggPSBNYXRoLm1pbiggc3gsIGRpbWVuc2lvbnNTY2FsZWQueCAtIHB4ICk7XG4gICAgICAgIHN5ID0gTWF0aC5taW4oIHN5LCBkaW1lbnNpb25zU2NhbGVkLnkgLSBweSApO1xuXG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KCBweCAqIHNjYWxlLCBweSAqIHNjYWxlLCBzeCAqIHNjYWxlLCBzeSAqIHNjYWxlICk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogUmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcsIGFuZCBjYWNoaW5nIHRoZVxuICAgICAqIGltYWdlIG1ldGFkYXRhIHBlcnRpbmVudCB0byB0aGlzIFRpbGVTb3VyY2VzIGltcGxlbWVudGF0aW9uLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICAgKi9cbiAgICBnZXRJbWFnZUluZm86IGZ1bmN0aW9uKCB1cmwgKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXMsXG4gICAgICAgICAgICBjYWxsYmFja05hbWUsXG4gICAgICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgICAgIHJlYWR5U291cmNlLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHVybFBhcnRzLFxuICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICBsYXN0RG90O1xuXG5cbiAgICAgICAgaWYoIHVybCApIHtcbiAgICAgICAgICAgIHVybFBhcnRzID0gdXJsLnNwbGl0KCAnLycgKTtcbiAgICAgICAgICAgIGZpbGVuYW1lID0gdXJsUGFydHNbIHVybFBhcnRzLmxlbmd0aCAtIDEgXTtcbiAgICAgICAgICAgIGxhc3REb3QgID0gZmlsZW5hbWUubGFzdEluZGV4T2YoICcuJyApO1xuICAgICAgICAgICAgaWYgKCBsYXN0RG90ID4gLTEgKSB7XG4gICAgICAgICAgICAgICAgdXJsUGFydHNbIHVybFBhcnRzLmxlbmd0aCAtIDEgXSA9IGZpbGVuYW1lLnNsaWNlKCAwLCBsYXN0RG90ICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uKCBkYXRhICl7XG4gICAgICAgICAgICBpZiggdHlwZW9mKGRhdGEpID09PSBcInN0cmluZ1wiICkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSAkLnBhcnNlWG1sKCBkYXRhICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgJFRpbGVTb3VyY2UgPSAkLlRpbGVTb3VyY2UuZGV0ZXJtaW5lVHlwZSggX3RoaXMsIGRhdGEsIHVybCApO1xuICAgICAgICAgICAgaWYgKCAhJFRpbGVTb3VyY2UgKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGxvYWRpbmcgYSBUaWxlU291cmNlLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV2ZW50IG9wZW4tZmFpbGVkXG4gICAgICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZVNvdXJjZVxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2V9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFRpbGVTb3VyY2Ugd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge1N0cmluZ30gbWVzc2FnZVxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzb3VyY2VcbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggJ29wZW4tZmFpbGVkJywgeyBtZXNzYWdlOiBcIlVuYWJsZSB0byBsb2FkIFRpbGVTb3VyY2VcIiwgc291cmNlOiB1cmwgfSApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucyA9ICRUaWxlU291cmNlLnByb3RvdHlwZS5jb25maWd1cmUuYXBwbHkoIF90aGlzLCBbIGRhdGEsIHVybCBdKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmFqYXhXaXRoQ3JlZGVudGlhbHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuYWpheFdpdGhDcmVkZW50aWFscyA9IF90aGlzLmFqYXhXaXRoQ3JlZGVudGlhbHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlYWR5U291cmNlID0gbmV3ICRUaWxlU291cmNlKCBvcHRpb25zICk7XG4gICAgICAgICAgICBfdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIGEgVGlsZVNvdXJjZSBpcyBvcGVuZWQgYW5kIGluaXRpYWxpemVkLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCByZWFkeVxuICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZVNvdXJjZVxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5UaWxlU291cmNlfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBUaWxlU291cmNlIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gdGlsZVNvdXJjZVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBfdGhpcy5yYWlzZUV2ZW50KCAncmVhZHknLCB7IHRpbGVTb3VyY2U6IHJlYWR5U291cmNlIH0gKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiggdXJsLm1hdGNoKC9cXC5qcyQvKSApe1xuICAgICAgICAgICAgLy9UT0RPOiBJdHMgbm90IHZlcnkgZmxleGlibGUgdG8gcmVxdWlyZSB0aWxlIHNvdXJjZXMgdG8gZW5kIGpzb25wXG4gICAgICAgICAgICAvLyAgICAgIHJlcXVlc3QgZm9yIGluZm8gIHdpdGggYSB1cmwgdGhhdCBlbmRzIHdpdGggJy5qcycgYnV0IGZvclxuICAgICAgICAgICAgLy8gICAgICBub3cgaXQncyB0aGUgb25seSB3YXkgSSBzZWUgdG8gZGlzdGluZ3Vpc2ggdW5pZm9ybWx5LlxuICAgICAgICAgICAgY2FsbGJhY2tOYW1lID0gdXJsLnNwbGl0KCAnLycgKS5wb3AoKS5yZXBsYWNlKCcuanMnLCcnKTtcbiAgICAgICAgICAgICQuanNvbnAoe1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjYWxsYmFja05hbWU6IGNhbGxiYWNrTmFtZSxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2tcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmVxdWVzdCBpbmZvIHZpYSB4aHIgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgICAgICAkLm1ha2VBamF4UmVxdWVzdCgge1xuICAgICAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5hamF4V2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCB4aHIgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcHJvY2Vzc1Jlc3BvbnNlKCB4aHIgKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soIGRhdGEgKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoIHhociwgZXhjICkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbXNnO1xuXG4gICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICBJRSA8IDEwIHdpbGwgYmxvY2sgWEhSIHJlcXVlc3RzIHRvIGRpZmZlcmVudCBvcmlnaW5zLiBBbnkgcHJvcGVydHkgYWNjZXNzIG9uIHRoZSByZXF1ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Qgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hpY2ggd2UnbGwgYXR0ZW1wdCB0byBoYW5kbGUgYnkgZm9ybWF0dGluZyB0aGUgb3JpZ2luYWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiByYXRoZXIgdGhhbiB0aGUgc2Vjb25kIG9uZSByYWlzZWQgd2hlbiB3ZSB0cnkgdG8gYWNjZXNzIHhoci5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBcIkhUVFAgXCIgKyB4aHIuc3RhdHVzICsgXCIgYXR0ZW1wdGluZyB0byBsb2FkIFRpbGVTb3VyY2VcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoIGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkRXhjO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YoIGV4YyApID09IFwidW5kZWZpbmVkXCIgfHwgIWV4Yy50b1N0cmluZyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRFeGMgPSBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkRXhjID0gZXhjLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IGZvcm1hdHRlZEV4YyArIFwiIGF0dGVtcHRpbmcgdG8gbG9hZCBUaWxlU291cmNlXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvKioqXG4gICAgICAgICAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIGFuIGVycm9yIG9jY3VycyBsb2FkaW5nIGEgVGlsZVNvdXJjZS5cbiAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICogQGV2ZW50IG9wZW4tZmFpbGVkXG4gICAgICAgICAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2V9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFRpbGVTb3VyY2Ugd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHtTdHJpbmd9IG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHtTdHJpbmd9IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5yYWlzZUV2ZW50KCAnb3Blbi1mYWlsZWQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtc2csXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHVybFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlc3BvbnNpYmxlIGRldGVybWluaW5nIGlmIGEgdGhlIHBhcnRpY3VsYXIgVGlsZVNvdXJjZSBzdXBwb3J0cyB0aGVcbiAgICAgKiBkYXRhIGZvcm1hdCAoIGFuZCBhbGxvd2VkIHRvIGFwcGx5IGxvZ2ljIGFnYWluc3QgdGhlIHVybCB0aGUgZGF0YSB3YXNcbiAgICAgKiBsb2FkZWQgZnJvbSwgaWYgYW55ICkuIE92ZXJyaWRpbmcgaW1wbGVtZW50YXRpb25zIGFyZSBleHBlY3RlZCB0byBkb1xuICAgICAqIHNvbWV0aGluZyBzbWFydCB3aXRoIGRhdGEgYW5kIC8gb3IgdXJsIHRvIGRldGVybWluZSBzdXBwb3J0LiAgQWxzb1xuICAgICAqIHVuZGVyc3RhbmQgdGhhdCBpdGVyYXRpb24gb3JkZXIgb2YgVGlsZVNvdXJjZXMgaXMgbm90IGd1YXJ1bnRlZWQgc29cbiAgICAgKiBwbGVhc2UgbWFrZSBzdXJlIHlvdXIgZGF0YSBvciB1cmwgaXMgZXhwcmVzc2l2ZSBlbm91Z2ggdG8gZW5zdXJlIGEgc2ltcGxlXG4gICAgICogYW5kIHN1ZmZpY2llbnQgbWVjaGFuaXNpbSBmb3IgY2xlYXIgZGV0ZXJtaW5hdGlvbi5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R8QXJyYXl8RG9jdW1lbnR9IGRhdGFcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gdGhlIHVybCB0aGUgZGF0YSB3YXMgbG9hZGVkXG4gICAgICogICAgICBmcm9tIGlmIGFueS5cbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgICAqL1xuICAgIHN1cHBvcnRzOiBmdW5jdGlvbiggZGF0YSwgdXJsICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIGFuZCBjb25maWd1cmluZyB0aGVcbiAgICAgKiBpbWFnZSBtZXRhZGF0YSBwZXJ0aW5lbnQgdG8gdGhpcyBUaWxlU291cmNlcyBpbXBsZW1lbnRhdGlvbi5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgdGhpcyBjbGFzcyBvdGhlciB0aGFuIHRvIHRocm93IGFuIEVycm9yXG4gICAgICogYW5ub3VuY2luZyB5b3UgaGF2ZSB0byBpbXBsZW1lbnQgaXQuICBCZWNhdXNlIG9mIHRoZSB2YXJpZXR5IG9mIHRpbGVcbiAgICAgKiBzZXJ2ZXIgdGVjaG5vbG9naWVzLCBhbmQgdmFyaW91cyBzcGVjaWZpY2F0aW9ucyBmb3IgYnVpbGRpbmcgaW1hZ2VcbiAgICAgKiBweXJhbWlkcywgdGhpcyBtZXRob2QgaXMgaGVyZSB0byBhbGxvdyBlYXN5IGludGVncmF0aW9uLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdHxBcnJheXxEb2N1bWVudH0gZGF0YVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSB0aGUgdXJsIHRoZSBkYXRhIHdhcyBsb2FkZWRcbiAgICAgKiAgICAgIGZyb20gaWYgYW55LlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gb3B0aW9ucyAtIEEgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBzdWZmaWNpZW50XG4gICAgICogICAgICB0byBjb25maWd1cmUgdGhpcyB0aWxlIHNvdXJjZXMgY29uc3RydWN0b3IuXG4gICAgICogQHRocm93cyB7RXJyb3J9XG4gICAgICovXG4gICAgY29uZmlndXJlOiBmdW5jdGlvbiggZGF0YSwgdXJsICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIiApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgcmV0cml2aW5nIHRoZSB1cmwgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW1hZ2UgZm9yIHRoZVxuICAgICAqIHJlZ2lvbiBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHgsIHksIGFuZCBsZXZlbCBjb21wb25lbnRzLlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIGNsYXNzIG90aGVyIHRoYW4gdG8gdGhyb3cgYW4gRXJyb3JcbiAgICAgKiBhbm5vdW5jaW5nIHlvdSBoYXZlIHRvIGltcGxlbWVudCBpdC4gIEJlY2F1c2Ugb2YgdGhlIHZhcmlldHkgb2YgdGlsZVxuICAgICAqIHNlcnZlciB0ZWNobm9sb2dpZXMsIGFuZCB2YXJpb3VzIHNwZWNpZmljYXRpb25zIGZvciBidWlsZGluZyBpbWFnZVxuICAgICAqIHB5cmFtaWRzLCB0aGlzIG1ldGhvZCBpcyBoZXJlIHRvIGFsbG93IGVhc3kgaW50ZWdyYXRpb24uXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geVxuICAgICAqIEB0aHJvd3Mge0Vycm9yfVxuICAgICAqL1xuICAgIGdldFRpbGVVcmw6IGZ1bmN0aW9uKCBsZXZlbCwgeCwgeSApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geVxuICAgICAqL1xuICAgIHRpbGVFeGlzdHM6IGZ1bmN0aW9uKCBsZXZlbCwgeCwgeSApIHtcbiAgICAgICAgdmFyIG51bVRpbGVzID0gdGhpcy5nZXROdW1UaWxlcyggbGV2ZWwgKTtcbiAgICAgICAgcmV0dXJuICBsZXZlbCA+PSB0aGlzLm1pbkxldmVsICYmXG4gICAgICAgICAgICAgICAgbGV2ZWwgPD0gdGhpcy5tYXhMZXZlbCAmJlxuICAgICAgICAgICAgICAgIHggPj0gMCAmJlxuICAgICAgICAgICAgICAgIHkgPj0gMCAmJlxuICAgICAgICAgICAgICAgIHggPCBudW1UaWxlcy54ICYmXG4gICAgICAgICAgICAgICAgeSA8IG51bVRpbGVzLnk7XG4gICAgfVxufTtcblxuXG4kLmV4dGVuZCggdHJ1ZSwgJC5UaWxlU291cmNlLnByb3RvdHlwZSwgJC5FdmVudFNvdXJjZS5wcm90b3R5cGUgKTtcblxuXG4vKipcbiAqIERlY2lkZXMgd2hldGhlciB0byB0cnkgdG8gcHJvY2VzcyB0aGUgcmVzcG9uc2UgYXMgeG1sLCBqc29uLCBvciBoYW5kIGJhY2tcbiAqIHRoZSB0ZXh0XG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7WE1MSHR0cFJlcXVlc3R9IHhociAtIHRoZSBjb21wbGV0ZWQgbmV0d29yayByZXF1ZXN0XG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NSZXNwb25zZSggeGhyICl7XG4gICAgdmFyIHJlc3BvbnNlVGV4dCA9IHhoci5yZXNwb25zZVRleHQsXG4gICAgICAgIHN0YXR1cyAgICAgICA9IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQsXG4gICAgICAgIGRhdGE7XG5cbiAgICBpZiAoICF4aHIgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJC5nZXRTdHJpbmcoIFwiRXJyb3JzLlNlY3VyaXR5XCIgKSApO1xuICAgIH0gZWxzZSBpZiAoIHhoci5zdGF0dXMgIT09IDIwMCAmJiB4aHIuc3RhdHVzICE9PSAwICkge1xuICAgICAgICBzdGF0dXMgICAgID0geGhyLnN0YXR1cztcbiAgICAgICAgc3RhdHVzVGV4dCA9ICggc3RhdHVzID09IDQwNCApID9cbiAgICAgICAgICAgIFwiTm90IEZvdW5kXCIgOlxuICAgICAgICAgICAgeGhyLnN0YXR1c1RleHQ7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJC5nZXRTdHJpbmcoIFwiRXJyb3JzLlN0YXR1c1wiLCBzdGF0dXMsIHN0YXR1c1RleHQgKSApO1xuICAgIH1cblxuICAgIGlmKCByZXNwb25zZVRleHQubWF0Y2goL1xccyo8LiovKSApe1xuICAgICAgICB0cnl7XG4gICAgICAgIGRhdGEgPSAoIHhoci5yZXNwb25zZVhNTCAmJiB4aHIucmVzcG9uc2VYTUwuZG9jdW1lbnRFbGVtZW50ICkgP1xuICAgICAgICAgICAgeGhyLnJlc3BvbnNlWE1MIDpcbiAgICAgICAgICAgICQucGFyc2VYbWwoIHJlc3BvbnNlVGV4dCApO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIGRhdGEgPSB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgICB9XG4gICAgfWVsc2UgaWYoIHJlc3BvbnNlVGV4dC5tYXRjaCgvXFxzKltcXHtcXFtdLiovKSApe1xuICAgICAgICBkYXRhID0gJC5wYXJzZUpTT04ocmVzcG9uc2VUZXh0KTtcbiAgICB9ZWxzZXtcbiAgICAgICAgZGF0YSA9IHJlc3BvbnNlVGV4dDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG59XG5cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBUaWxlU291cmNlIEltcGxlbWVudGF0aW9uIGJ5IGludHJvc3BlY3Rpb24gb2YgT3BlblNlYWRyYWdvblxuICogbmFtZXNwYWNlLCBjYWxsaW5nIGVhY2ggVGlsZVNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiAnaXNUeXBlJ1xuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheXxEb2N1bWVudH0gZGF0YSAtIHRoZSB0aWxlIHNvdXJjZSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIHRoZSB1cmwgd2hlcmUgdGhlIHRpbGUgc291cmNlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdhc1xuICogICAgICBsb2FkZWQgZnJvbSwgaWYgYW55LlxuICovXG4kLlRpbGVTb3VyY2UuZGV0ZXJtaW5lVHlwZSA9IGZ1bmN0aW9uKCB0aWxlU291cmNlLCBkYXRhLCB1cmwgKXtcbiAgICB2YXIgcHJvcGVydHk7XG4gICAgZm9yKCBwcm9wZXJ0eSBpbiBPcGVuU2VhZHJhZ29uICl7XG4gICAgICAgIGlmKCBwcm9wZXJ0eS5tYXRjaCgvLitUaWxlU291cmNlJC8pICYmXG4gICAgICAgICAgICAkLmlzRnVuY3Rpb24oIE9wZW5TZWFkcmFnb25bIHByb3BlcnR5IF0gKSAmJlxuICAgICAgICAgICAgJC5pc0Z1bmN0aW9uKCBPcGVuU2VhZHJhZ29uWyBwcm9wZXJ0eSBdLnByb3RvdHlwZS5zdXBwb3J0cyApICYmXG4gICAgICAgICAgICBPcGVuU2VhZHJhZ29uWyBwcm9wZXJ0eSBdLnByb3RvdHlwZS5zdXBwb3J0cy5jYWxsKCB0aWxlU291cmNlLCBkYXRhLCB1cmwgKVxuICAgICAgICApe1xuICAgICAgICAgICAgcmV0dXJuIE9wZW5TZWFkcmFnb25bIHByb3BlcnR5IF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAkLmNvbnNvbGUuZXJyb3IoIFwiTm8gVGlsZVNvdXJjZSB3YXMgYWJsZSB0byBvcGVuICVzICVzXCIsIHVybCwgZGF0YSApO1xufTtcblxuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIER6aVRpbGVTb3VyY2VcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIER6aVRpbGVTb3VyY2VcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2VcbiAqIEBwYXJhbSB7TnVtYmVyfE9iamVjdH0gd2lkdGggLSB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIGltYWdlIG9yIHRoZSBpZGlvbWF0aWNcbiAqICAgICAgb3B0aW9ucyBvYmplY3Qgd2hpY2ggaXMgdXNlZCBpbnN0ZWFkIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodFxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbGVTaXplXG4gKiBAcGFyYW0ge051bWJlcn0gdGlsZU92ZXJsYXBcbiAqIEBwYXJhbSB7U3RyaW5nfSB0aWxlc1VybFxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVGb3JtYXRcbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5EaXNwbGF5UmVjdFtdfSBkaXNwbGF5UmVjdHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0aWxlc1VybFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZpbGVGb3JtYXRcbiAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5EaXNwbGF5UmVjdFtdfSBkaXNwbGF5UmVjdHNcbiAqL1xuJC5EemlUaWxlU291cmNlID0gZnVuY3Rpb24oIHdpZHRoLCBoZWlnaHQsIHRpbGVTaXplLCB0aWxlT3ZlcmxhcCwgdGlsZXNVcmwsIGZpbGVGb3JtYXQsIGRpc3BsYXlSZWN0cywgbWluTGV2ZWwsIG1heExldmVsICkge1xuICAgIHZhciBpLFxuICAgICAgICByZWN0LFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgb3B0aW9ucztcblxuICAgIGlmKCAkLmlzUGxhaW5PYmplY3QoIHdpZHRoICkgKXtcbiAgICAgICAgb3B0aW9ucyA9IHdpZHRoO1xuICAgIH1lbHNle1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgd2lkdGg6IGFyZ3VtZW50c1sgMCBdLFxuICAgICAgICAgICAgaGVpZ2h0OiBhcmd1bWVudHNbIDEgXSxcbiAgICAgICAgICAgIHRpbGVTaXplOiBhcmd1bWVudHNbIDIgXSxcbiAgICAgICAgICAgIHRpbGVPdmVybGFwOiBhcmd1bWVudHNbIDMgXSxcbiAgICAgICAgICAgIHRpbGVzVXJsOiBhcmd1bWVudHNbIDQgXSxcbiAgICAgICAgICAgIGZpbGVGb3JtYXQ6IGFyZ3VtZW50c1sgNSBdLFxuICAgICAgICAgICAgZGlzcGxheVJlY3RzOiBhcmd1bWVudHNbIDYgXSxcbiAgICAgICAgICAgIG1pbkxldmVsOiBhcmd1bWVudHNbIDcgXSxcbiAgICAgICAgICAgIG1heExldmVsOiBhcmd1bWVudHNbIDggXVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuX2xldmVsUmVjdHMgID0ge307XG4gICAgdGhpcy50aWxlc1VybCAgICAgPSBvcHRpb25zLnRpbGVzVXJsO1xuICAgIHRoaXMuZmlsZUZvcm1hdCAgID0gb3B0aW9ucy5maWxlRm9ybWF0O1xuICAgIHRoaXMuZGlzcGxheVJlY3RzID0gb3B0aW9ucy5kaXNwbGF5UmVjdHM7XG5cbiAgICBpZiAoIHRoaXMuZGlzcGxheVJlY3RzICkge1xuICAgICAgICBmb3IgKCBpID0gdGhpcy5kaXNwbGF5UmVjdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICByZWN0ID0gdGhpcy5kaXNwbGF5UmVjdHNbIGkgXTtcbiAgICAgICAgICAgIGZvciAoIGxldmVsID0gcmVjdC5taW5MZXZlbDsgbGV2ZWwgPD0gcmVjdC5tYXhMZXZlbDsgbGV2ZWwrKyApIHtcbiAgICAgICAgICAgICAgICBpZiAoICF0aGlzLl9sZXZlbFJlY3RzWyBsZXZlbCBdICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sZXZlbFJlY3RzWyBsZXZlbCBdID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2xldmVsUmVjdHNbIGxldmVsIF0ucHVzaCggcmVjdCApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJC5UaWxlU291cmNlLmFwcGx5KCB0aGlzLCBbIG9wdGlvbnMgXSApO1xuXG59O1xuXG4kLmV4dGVuZCggJC5EemlUaWxlU291cmNlLnByb3RvdHlwZSwgJC5UaWxlU291cmNlLnByb3RvdHlwZSwgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLkR6aVRpbGVTb3VyY2UucHJvdG90eXBlICove1xuXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGEgYW5kL29yIHVybCBpbXBseSB0aGUgaW1hZ2Ugc2VydmljZSBpcyBzdXBwb3J0ZWQgYnlcbiAgICAgKiB0aGlzIHRpbGUgc291cmNlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBkYXRhXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbmFsIC0gdXJsXG4gICAgICovXG4gICAgc3VwcG9ydHM6IGZ1bmN0aW9uKCBkYXRhLCB1cmwgKXtcbiAgICAgICAgdmFyIG5zO1xuICAgICAgICBpZiAoIGRhdGEuSW1hZ2UgKSB7XG4gICAgICAgICAgICBucyA9IGRhdGEuSW1hZ2UueG1sbnM7XG4gICAgICAgIH0gZWxzZSBpZiAoIGRhdGEuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoXCJJbWFnZVwiID09IGRhdGEuZG9jdW1lbnRFbGVtZW50LmxvY2FsTmFtZSB8fCBcIkltYWdlXCIgPT0gZGF0YS5kb2N1bWVudEVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIG5zID0gZGF0YS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICggXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RlZXB6b29tLzIwMDhcIiA9PSBucyB8fFxuICAgICAgICAgICAgXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RlZXB6b29tLzIwMDlcIiA9PSBucyApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fFhNTERvY3VtZW50fSBkYXRhIC0gdGhlIHJhdyBjb25maWd1cmF0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIHRoZSB1cmwgdGhlIGRhdGEgd2FzIHJldHJlaXZlZCBmcm9tIGlmIGFueS5cbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IG9wdGlvbnMgLSBBIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMgc3VmZmljaWVudFxuICAgICAqICAgICAgdG8gY29uZmlndXJlIHRoaXMgdGlsZSBzb3VyY2VzIGNvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24oIGRhdGEsIHVybCApe1xuXG4gICAgICAgIHZhciBvcHRpb25zO1xuXG4gICAgICAgIGlmKCAhJC5pc1BsYWluT2JqZWN0KGRhdGEpICl7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBjb25maWd1cmVGcm9tWE1MKCB0aGlzLCBkYXRhICk7XG5cbiAgICAgICAgfWVsc2V7XG5cbiAgICAgICAgICAgIG9wdGlvbnMgPSBjb25maWd1cmVGcm9tT2JqZWN0KCB0aGlzLCBkYXRhICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXJsICYmICFvcHRpb25zLnRpbGVzVXJsKSB7XG4gICAgICAgICAgICBvcHRpb25zLnRpbGVzVXJsID0gdXJsLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgIC8oW15cXC9dKz8pKFxcLihkeml8eG1sfGpzKSk/XFwvPyhcXD8uKik/JC8sICckMV9maWxlcy8nKTtcblxuICAgICAgICAgICAgaWYgKHVybC5zZWFyY2goL1xcLihkeml8eG1sfGpzKVxcPy8pICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5xdWVyeVBhcmFtcyA9IHVybC5tYXRjaCgvXFw/LiovKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucXVlcnlQYXJhbXMgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICAgKi9cbiAgICBnZXRUaWxlVXJsOiBmdW5jdGlvbiggbGV2ZWwsIHgsIHkgKSB7XG4gICAgICAgIHJldHVybiBbIHRoaXMudGlsZXNVcmwsIGxldmVsLCAnLycsIHgsICdfJywgeSwgJy4nLCB0aGlzLmZpbGVGb3JtYXQsIHRoaXMucXVlcnlQYXJhbXMgXS5qb2luKCAnJyApO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICAgKi9cbiAgICB0aWxlRXhpc3RzOiBmdW5jdGlvbiggbGV2ZWwsIHgsIHkgKSB7XG4gICAgICAgIHZhciByZWN0cyA9IHRoaXMuX2xldmVsUmVjdHNbIGxldmVsIF0sXG4gICAgICAgICAgICByZWN0LFxuICAgICAgICAgICAgc2NhbGUsXG4gICAgICAgICAgICB4TWluLFxuICAgICAgICAgICAgeU1pbixcbiAgICAgICAgICAgIHhNYXgsXG4gICAgICAgICAgICB5TWF4LFxuICAgICAgICAgICAgaTtcblxuICAgICAgICBpZiAoICFyZWN0cyB8fCAhcmVjdHMubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKCBpID0gcmVjdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICByZWN0ID0gcmVjdHNbIGkgXTtcblxuICAgICAgICAgICAgaWYgKCBsZXZlbCA8IHJlY3QubWluTGV2ZWwgfHwgbGV2ZWwgPiByZWN0Lm1heExldmVsICkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzY2FsZSA9IHRoaXMuZ2V0TGV2ZWxTY2FsZSggbGV2ZWwgKTtcbiAgICAgICAgICAgIHhNaW4gPSByZWN0LnggKiBzY2FsZTtcbiAgICAgICAgICAgIHlNaW4gPSByZWN0LnkgKiBzY2FsZTtcbiAgICAgICAgICAgIHhNYXggPSB4TWluICsgcmVjdC53aWR0aCAqIHNjYWxlO1xuICAgICAgICAgICAgeU1heCA9IHlNaW4gKyByZWN0LmhlaWdodCAqIHNjYWxlO1xuXG4gICAgICAgICAgICB4TWluID0gTWF0aC5mbG9vciggeE1pbiAvIHRoaXMudGlsZVNpemUgKTtcbiAgICAgICAgICAgIHlNaW4gPSBNYXRoLmZsb29yKCB5TWluIC8gdGhpcy50aWxlU2l6ZSApO1xuICAgICAgICAgICAgeE1heCA9IE1hdGguY2VpbCggeE1heCAvIHRoaXMudGlsZVNpemUgKTtcbiAgICAgICAgICAgIHlNYXggPSBNYXRoLmNlaWwoIHlNYXggLyB0aGlzLnRpbGVTaXplICk7XG5cbiAgICAgICAgICAgIGlmICggeE1pbiA8PSB4ICYmIHggPCB4TWF4ICYmIHlNaW4gPD0geSAmJiB5IDwgeU1heCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KTtcblxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBjb25maWd1cmVGcm9tWE1MKCB0aWxlU291cmNlLCB4bWxEb2MgKXtcblxuICAgIGlmICggIXhtbERvYyB8fCAheG1sRG9jLmRvY3VtZW50RWxlbWVudCApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAkLmdldFN0cmluZyggXCJFcnJvcnMuWG1sXCIgKSApO1xuICAgIH1cblxuICAgIHZhciByb290ICAgICAgICAgICA9IHhtbERvYy5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIHJvb3ROYW1lICAgICAgID0gcm9vdC5sb2NhbE5hbWUgfHwgcm9vdC50YWdOYW1lLFxuICAgICAgICBucyAgICAgICAgICAgICA9IHhtbERvYy5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJLFxuICAgICAgICBjb25maWd1cmF0aW9uICA9IG51bGwsXG4gICAgICAgIGRpc3BsYXlSZWN0cyAgID0gW10sXG4gICAgICAgIGRpc3BSZWN0Tm9kZXMsXG4gICAgICAgIGRpc3BSZWN0Tm9kZSxcbiAgICAgICAgcmVjdE5vZGUsXG4gICAgICAgIHNpemVOb2RlLFxuICAgICAgICBpO1xuXG4gICAgaWYgKCByb290TmFtZSA9PSBcIkltYWdlXCIgKSB7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNpemVOb2RlID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIlNpemVcIiApWyAwIF07XG4gICAgICAgICAgICBpZiAoc2l6ZU5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHNpemVOb2RlID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG5zLCBcIlNpemVcIiApWyAwIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgSW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM6ICAgICAgIFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZWVwem9vbS8yMDA4XCIsXG4gICAgICAgICAgICAgICAgICAgIFVybDogICAgICAgICByb290LmdldEF0dHJpYnV0ZSggXCJVcmxcIiApLFxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6ICAgICAgcm9vdC5nZXRBdHRyaWJ1dGUoIFwiRm9ybWF0XCIgKSxcbiAgICAgICAgICAgICAgICAgICAgRGlzcGxheVJlY3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIE92ZXJsYXA6ICAgICBwYXJzZUludCggcm9vdC5nZXRBdHRyaWJ1dGUoIFwiT3ZlcmxhcFwiICksIDEwICksXG4gICAgICAgICAgICAgICAgICAgIFRpbGVTaXplOiAgICBwYXJzZUludCggcm9vdC5nZXRBdHRyaWJ1dGUoIFwiVGlsZVNpemVcIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICBTaXplOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBIZWlnaHQ6IHBhcnNlSW50KCBzaXplTm9kZS5nZXRBdHRyaWJ1dGUoIFwiSGVpZ2h0XCIgKSwgMTAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoOiAgcGFyc2VJbnQoIHNpemVOb2RlLmdldEF0dHJpYnV0ZSggXCJXaWR0aFwiICksIDEwIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICggISQuaW1hZ2VGb3JtYXRTdXBwb3J0ZWQoIGNvbmZpZ3VyYXRpb24uSW1hZ2UuRm9ybWF0ICkgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAkLmdldFN0cmluZyggXCJFcnJvcnMuSW1hZ2VGb3JtYXRcIiwgY29uZmlndXJhdGlvbi5JbWFnZS5Gb3JtYXQudG9VcHBlckNhc2UoKSApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGlzcFJlY3ROb2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJEaXNwbGF5UmVjdFwiICk7XG4gICAgICAgICAgICBpZiAoZGlzcFJlY3ROb2RlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZGlzcFJlY3ROb2RlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhucywgXCJEaXNwbGF5UmVjdFwiIClbIDAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBkaXNwUmVjdE5vZGVzLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgICAgIGRpc3BSZWN0Tm9kZSA9IGRpc3BSZWN0Tm9kZXNbIGkgXTtcbiAgICAgICAgICAgICAgICByZWN0Tm9kZSAgICAgPSBkaXNwUmVjdE5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJSZWN0XCIgKVsgMCBdO1xuICAgICAgICAgICAgICAgIGlmIChyZWN0Tm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3ROb2RlID0gZGlzcFJlY3ROb2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobnMsIFwiUmVjdFwiIClbIDAgXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkaXNwbGF5UmVjdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIFJlY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFg6IHBhcnNlSW50KCByZWN0Tm9kZS5nZXRBdHRyaWJ1dGUoIFwiWFwiICksIDEwICksXG4gICAgICAgICAgICAgICAgICAgICAgICBZOiBwYXJzZUludCggcmVjdE5vZGUuZ2V0QXR0cmlidXRlKCBcIllcIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGg6IHBhcnNlSW50KCByZWN0Tm9kZS5nZXRBdHRyaWJ1dGUoIFwiV2lkdGhcIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgSGVpZ2h0OiBwYXJzZUludCggcmVjdE5vZGUuZ2V0QXR0cmlidXRlKCBcIkhlaWdodFwiICksIDEwICksXG4gICAgICAgICAgICAgICAgICAgICAgICBNaW5MZXZlbDogcGFyc2VJbnQoIGRpc3BSZWN0Tm9kZS5nZXRBdHRyaWJ1dGUoIFwiTWluTGV2ZWxcIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGV2ZWw6IHBhcnNlSW50KCBkaXNwUmVjdE5vZGUuZ2V0QXR0cmlidXRlKCBcIk1heExldmVsXCIgKSwgMTAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCBkaXNwbGF5UmVjdHMubGVuZ3RoICl7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5JbWFnZS5EaXNwbGF5UmVjdCA9IGRpc3BsYXlSZWN0cztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyZUZyb21PYmplY3QoIHRpbGVTb3VyY2UsIGNvbmZpZ3VyYXRpb24gKTtcblxuICAgICAgICB9IGNhdGNoICggZSApIHtcbiAgICAgICAgICAgIHRocm93IChlIGluc3RhbmNlb2YgRXJyb3IpID9cbiAgICAgICAgICAgICAgICBlIDpcbiAgICAgICAgICAgICAgICBuZXcgRXJyb3IoICQuZ2V0U3RyaW5nKFwiRXJyb3JzLkR6aVwiKSApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICggcm9vdE5hbWUgPT0gXCJDb2xsZWN0aW9uXCIgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJC5nZXRTdHJpbmcoIFwiRXJyb3JzLkR6Y1wiICkgKTtcbiAgICB9IGVsc2UgaWYgKCByb290TmFtZSA9PSBcIkVycm9yXCIgKSB7XG4gICAgICAgIHZhciBtZXNzYWdlTm9kZSA9IHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJNZXNzYWdlXCIpWzBdO1xuICAgICAgICB2YXIgbWVzc2FnZSA9IG1lc3NhZ2VOb2RlLmZpcnN0Q2hpbGQubm9kZVZhbHVlO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCAkLmdldFN0cmluZyggXCJFcnJvcnMuRHppXCIgKSApO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBjb25maWd1cmVGcm9tT2JqZWN0KCB0aWxlU291cmNlLCBjb25maWd1cmF0aW9uICl7XG4gICAgdmFyIGltYWdlRGF0YSAgICAgPSBjb25maWd1cmF0aW9uLkltYWdlLFxuICAgICAgICB0aWxlc1VybCAgICAgID0gaW1hZ2VEYXRhLlVybCxcbiAgICAgICAgZmlsZUZvcm1hdCAgICA9IGltYWdlRGF0YS5Gb3JtYXQsXG4gICAgICAgIHNpemVEYXRhICAgICAgPSBpbWFnZURhdGEuU2l6ZSxcbiAgICAgICAgZGlzcFJlY3REYXRhICA9IGltYWdlRGF0YS5EaXNwbGF5UmVjdCB8fCBbXSxcbiAgICAgICAgd2lkdGggICAgICAgICA9IHBhcnNlSW50KCBzaXplRGF0YS5XaWR0aCwgMTAgKSxcbiAgICAgICAgaGVpZ2h0ICAgICAgICA9IHBhcnNlSW50KCBzaXplRGF0YS5IZWlnaHQsIDEwICksXG4gICAgICAgIHRpbGVTaXplICAgICAgPSBwYXJzZUludCggaW1hZ2VEYXRhLlRpbGVTaXplLCAxMCApLFxuICAgICAgICB0aWxlT3ZlcmxhcCAgID0gcGFyc2VJbnQoIGltYWdlRGF0YS5PdmVybGFwLCAxMCApLFxuICAgICAgICBkaXNwbGF5UmVjdHMgID0gW10sXG4gICAgICAgIHJlY3REYXRhLFxuICAgICAgICBpO1xuXG4gICAgLy9UT0RPOiBuZWVkIHRvIGZpZ3VyZSBvdXQgb3V0IHRvIGJldHRlciBoYW5kbGUgaW1hZ2UgZm9ybWF0IGNvbXBhdGliaWxpdHlcbiAgICAvLyAgICAgIHdoaWNoIGFjdHVhbGx5IGluY2x1ZGVzIGFkZGl0aW9uYWwgZmlsZSBmb3JtYXRzIGxpa2UgeG1sIGFuZCBwZGZcbiAgICAvLyAgICAgIGFuZCBwbGFpbiB0ZXh0IGZvciB2YXJpb3VzIHRpbGVzb3VyY2UgaW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIGxvd1xuICAgIC8vICAgICAgbGV2ZWwgZXJyb3JzLlxuICAgIC8vXG4gICAgLy8gICAgICBGb3Igbm93LCBqdXN0IGRvbid0IHBlcmZvcm0gdGhlIGNoZWNrLlxuICAgIC8vXG4gICAgLyppZiAoICFpbWFnZUZvcm1hdFN1cHBvcnRlZCggZmlsZUZvcm1hdCApICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAkLmdldFN0cmluZyggXCJFcnJvcnMuSW1hZ2VGb3JtYXRcIiwgZmlsZUZvcm1hdC50b1VwcGVyQ2FzZSgpIClcbiAgICAgICAgKTtcbiAgICB9Ki9cblxuICAgIGZvciAoIGkgPSAwOyBpIDwgZGlzcFJlY3REYXRhLmxlbmd0aDsgaSsrICkge1xuICAgICAgICByZWN0RGF0YSA9IGRpc3BSZWN0RGF0YVsgaSBdLlJlY3Q7XG5cbiAgICAgICAgZGlzcGxheVJlY3RzLnB1c2goIG5ldyAkLkRpc3BsYXlSZWN0KFxuICAgICAgICAgICAgcGFyc2VJbnQoIHJlY3REYXRhLlgsIDEwICksXG4gICAgICAgICAgICBwYXJzZUludCggcmVjdERhdGEuWSwgMTAgKSxcbiAgICAgICAgICAgIHBhcnNlSW50KCByZWN0RGF0YS5XaWR0aCwgMTAgKSxcbiAgICAgICAgICAgIHBhcnNlSW50KCByZWN0RGF0YS5IZWlnaHQsIDEwICksXG4gICAgICAgICAgICBwYXJzZUludCggcmVjdERhdGEuTWluTGV2ZWwsIDEwICksXG4gICAgICAgICAgICBwYXJzZUludCggcmVjdERhdGEuTWF4TGV2ZWwsIDEwIClcbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLCAvKiB3aWR0aCAqcmVxdWlyZWQgKi9cbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsIC8qIGhlaWdodCAqcmVxdWlyZWQgKi9cbiAgICAgICAgdGlsZVNpemU6IHRpbGVTaXplLCAvKiB0aWxlU2l6ZSAqcmVxdWlyZWQgKi9cbiAgICAgICAgdGlsZU92ZXJsYXA6IHRpbGVPdmVybGFwLCAvKiB0aWxlT3ZlcmxhcCAqcmVxdWlyZWQgKi9cbiAgICAgICAgbWluTGV2ZWw6IG51bGwsIC8qIG1pbkxldmVsICovXG4gICAgICAgIG1heExldmVsOiBudWxsLCAvKiBtYXhMZXZlbCAqL1xuICAgICAgICB0aWxlc1VybDogdGlsZXNVcmwsIC8qIHRpbGVzVXJsICovXG4gICAgICAgIGZpbGVGb3JtYXQ6IGZpbGVGb3JtYXQsIC8qIGZpbGVGb3JtYXQgKi9cbiAgICAgICAgZGlzcGxheVJlY3RzOiBkaXNwbGF5UmVjdHMgLyogZGlzcGxheVJlY3RzICovXG4gICAgfSwgY29uZmlndXJhdGlvbiApO1xuXG59XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gSUlJRlRpbGVTb3VyY2VcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIElJSUZUaWxlU291cmNlXG4gKiBAY2xhc3NkZXNjIEEgY2xpZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJbnRlcm5hdGlvbmFsIEltYWdlIEludGVyb3BlcmFiaWxpdHkgRnJhbWV3b3JrXG4gKiBGb3JtYXQ6IEltYWdlIEFQSSAxLjAgLSAyLjFcbiAqXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGV4dGVuZHMgT3BlblNlYWRyYWdvbi5UaWxlU291cmNlXG4gKiBAc2VlIGh0dHA6Ly9paWlmLmlvL2FwaS9pbWFnZS9cbiAqL1xuJC5JSUlGVGlsZVNvdXJjZSA9IGZ1bmN0aW9uKCBvcHRpb25zICl7XG5cblxuICAgICQuZXh0ZW5kKCB0cnVlLCB0aGlzLCBvcHRpb25zICk7XG5cbiAgICBpZiAoICEoIHRoaXMuaGVpZ2h0ICYmIHRoaXMud2lkdGggJiYgdGhpc1snQGlkJ10gKSApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAnSUlJRiByZXF1aXJlZCBwYXJhbWV0ZXJzIG5vdCBwcm92aWRlZC4nICk7XG4gICAgfVxuXG4gICAgb3B0aW9ucy50aWxlU2l6ZVBlclNjYWxlRmFjdG9yID0ge307XG5cbiAgICAvLyBOLkIuIDIuMCByZW5hbWVkIHNjYWxlX2ZhY3RvcnMgdG8gc2NhbGVGYWN0b3JzXG4gICAgaWYgKCB0aGlzLnRpbGVfd2lkdGggJiYgdGhpcy50aWxlX2hlaWdodCApIHtcbiAgICAgICAgb3B0aW9ucy50aWxlV2lkdGggPSB0aGlzLnRpbGVfd2lkdGg7XG4gICAgICAgIG9wdGlvbnMudGlsZUhlaWdodCA9IHRoaXMudGlsZV9oZWlnaHQ7XG4gICAgfSBlbHNlIGlmICggdGhpcy50aWxlX3dpZHRoICkge1xuICAgICAgICBvcHRpb25zLnRpbGVTaXplID0gdGhpcy50aWxlX3dpZHRoO1xuICAgIH0gZWxzZSBpZiAoIHRoaXMudGlsZV9oZWlnaHQgKSB7XG4gICAgICAgIG9wdGlvbnMudGlsZVNpemUgPSB0aGlzLnRpbGVfaGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoIHRoaXMudGlsZXMgKSB7XG4gICAgICAgIC8vIFZlcnNpb24gMi4wIGZvcndhcmRzXG4gICAgICAgIGlmICggdGhpcy50aWxlcy5sZW5ndGggPT0gMSApIHtcbiAgICAgICAgICAgIG9wdGlvbnMudGlsZVdpZHRoICA9IHRoaXMudGlsZXNbMF0ud2lkdGg7XG4gICAgICAgICAgICAvLyBVc2UgaGVpZ2h0IGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgYXNzdW1lIHNxdWFyZSB0aWxlcyBhbmQgdXNlIHdpZHRoLlxuICAgICAgICAgICAgb3B0aW9ucy50aWxlSGVpZ2h0ID0gdGhpcy50aWxlc1swXS5oZWlnaHQgfHwgdGhpcy50aWxlc1swXS53aWR0aDtcbiAgICAgICAgICAgIHRoaXMuc2NhbGVfZmFjdG9ycyA9IHRoaXMudGlsZXNbMF0uc2NhbGVGYWN0b3JzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTXVsdGlwbGUgdGlsZSBzaXplcyBhdCBkaWZmZXJlbnQgbGV2ZWxzXG4gICAgICAgICAgICB0aGlzLnNjYWxlX2ZhY3RvcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgdGhpcy50aWxlcy5sZW5ndGg7IHQrKyApIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBzZiA9IDA7IHNmIDwgdGhpcy50aWxlc1t0XS5zY2FsZUZhY3RvcnMubGVuZ3RoOyBzZisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY2FsZUZhY3RvciA9IHRoaXMudGlsZXNbdF0uc2NhbGVGYWN0b3JzW3NmXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY2FsZV9mYWN0b3JzLnB1c2goc2NhbGVGYWN0b3IpO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnRpbGVTaXplUGVyU2NhbGVGYWN0b3Jbc2NhbGVGYWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMudGlsZXNbdF0ud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMudGlsZXNbdF0uaGVpZ2h0IHx8IHRoaXMudGlsZXNbdF0ud2lkdGhcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCBjYW5CZVRpbGVkKG9wdGlvbnMucHJvZmlsZSkgKSB7XG4gICAgICAgIC8vIHVzZSB0aGUgbGFyZ2VzdCBvZiB0aWxlT3B0aW9ucyB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUgc2hvcnQgZGltZW5zaW9uXG4gICAgICAgIHZhciBzaG9ydERpbSA9IE1hdGgubWluKCB0aGlzLmhlaWdodCwgdGhpcy53aWR0aCApLFxuICAgICAgICAgICAgdGlsZU9wdGlvbnMgPSBbMjU2LDUxMiwxMDI0XSxcbiAgICAgICAgICAgIHNtYWxsZXJUaWxlcyA9IFtdO1xuXG4gICAgICAgIGZvciAoIHZhciBjID0gMDsgYyA8IHRpbGVPcHRpb25zLmxlbmd0aDsgYysrICkge1xuICAgICAgICAgICAgaWYgKCB0aWxlT3B0aW9uc1tjXSA8PSBzaG9ydERpbSApIHtcbiAgICAgICAgICAgICAgICBzbWFsbGVyVGlsZXMucHVzaCggdGlsZU9wdGlvbnNbY10gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggc21hbGxlclRpbGVzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgICAgICBvcHRpb25zLnRpbGVTaXplID0gTWF0aC5tYXguYXBwbHkoIG51bGwsIHNtYWxsZXJUaWxlcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgd2UncmUgc21hbGxlciB0aGFuIDI1NiwganVzdCB1c2UgdGhlIHNob3J0IHNpZGUuXG4gICAgICAgICAgICBvcHRpb25zLnRpbGVTaXplID0gc2hvcnREaW07XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2l6ZXMgJiYgdGhpcy5zaXplcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIFRoaXMgaW5mby5qc29uIGNhbid0IGJlIHRpbGVkLCBidXQgd2UgY2FuIHN0aWxsIGNvbnN0cnVjdCBhIGxlZ2FjeSBweXJhbWlkIGZyb20gdGhlIHNpemVzIGFycmF5LiBcbiAgICAgICAgLy8gSW4gdGhpcyBtb2RlLCBJSUlGVGlsZVNvdXJjZSB3aWxsIGNhbGwgZnVuY3Rpb25zIGZyb20gdGhlIGFic3RyYWN0IGJhc2VUaWxlU291cmNlIG9yIHRoZSBcbiAgICAgICAgLy8gTGVnYWN5VGlsZVNvdXJjZSBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgSUlJRiB0aWxpbmcuICAgICAgXG4gICAgICAgIHRoaXMuZW11bGF0ZUxlZ2FjeUltYWdlUHlyYW1pZCA9IHRydWU7XG4gICAgICAgIFxuICAgICAgICBvcHRpb25zLmxldmVscyA9IGNvbnN0cnVjdExldmVscyggdGhpcyApO1xuICAgICAgICAvLyB1c2UgdGhlIGxhcmdlc3QgYXZhaWxhYmxlIHNpemUgdG8gZGVmaW5lIHRpbGVzXG4gICAgICAgICQuZXh0ZW5kKCB0cnVlLCBvcHRpb25zLCB7XG4gICAgICAgICAgICB3aWR0aDogb3B0aW9ucy5sZXZlbHNbIG9wdGlvbnMubGV2ZWxzLmxlbmd0aCAtIDEgXS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogb3B0aW9ucy5sZXZlbHNbIG9wdGlvbnMubGV2ZWxzLmxlbmd0aCAtIDEgXS5oZWlnaHQsXG4gICAgICAgICAgICB0aWxlU2l6ZTogTWF0aC5tYXgoIG9wdGlvbnMuaGVpZ2h0LCBvcHRpb25zLndpZHRoICksXG4gICAgICAgICAgICB0aWxlT3ZlcmxhcDogMCxcbiAgICAgICAgICAgIG1pbkxldmVsOiAwLFxuICAgICAgICAgICAgbWF4TGV2ZWw6IG9wdGlvbnMubGV2ZWxzLmxlbmd0aCAtIDFcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGV2ZWxzID0gb3B0aW9ucy5sZXZlbHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiTm90aGluZyBpbiB0aGUgaW5mby5qc29uIHRvIGNvbnN0cnVjdCBpbWFnZSBweXJhbWlkcyBmcm9tXCIpO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5tYXhMZXZlbCAmJiAhdGhpcy5lbXVsYXRlTGVnYWN5SW1hZ2VQeXJhbWlkKSB7XG4gICAgICAgIGlmICghdGhpcy5zY2FsZV9mYWN0b3JzKSB7XG4gICAgICAgICAgICBvcHRpb25zLm1heExldmVsID0gTnVtYmVyKE1hdGguY2VpbChNYXRoLmxvZyhNYXRoLm1heCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCksIDIpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLm1heExldmVsID0gTWF0aC5mbG9vcihNYXRoLnBvdyhNYXRoLm1heC5hcHBseShudWxsLCB0aGlzLnNjYWxlX2ZhY3RvcnMpLCAwLjUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICQuVGlsZVNvdXJjZS5hcHBseSggdGhpcywgWyBvcHRpb25zIF0gKTtcbn07XG5cbiQuZXh0ZW5kKCAkLklJSUZUaWxlU291cmNlLnByb3RvdHlwZSwgJC5UaWxlU291cmNlLnByb3RvdHlwZSwgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLklJSUZUaWxlU291cmNlLnByb3RvdHlwZSAqL3tcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGEgYW5kL29yIHVybCBpbXBseSB0aGUgaW1hZ2Ugc2VydmljZSBpcyBzdXBwb3J0ZWQgYnlcbiAgICAgKiB0aGlzIHRpbGUgc291cmNlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBkYXRhXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbmFsIC0gdXJsXG4gICAgICovXG4gICAgIFxuICAgIHN1cHBvcnRzOiBmdW5jdGlvbiggZGF0YSwgdXJsICkge1xuICAgICAgICAvLyBWZXJzaW9uIDIuMCBhbmQgZm9yd2FyZHNcbiAgICAgICAgaWYgKGRhdGEucHJvdG9jb2wgJiYgZGF0YS5wcm90b2NvbCA9PSAnaHR0cDovL2lpaWYuaW8vYXBpL2ltYWdlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIC8vIFZlcnNpb24gMS4xXG4gICAgICAgIH0gZWxzZSBpZiAoIGRhdGFbJ0Bjb250ZXh0J10gJiYgKFxuICAgICAgICAgICAgZGF0YVsnQGNvbnRleHQnXSA9PSBcImh0dHA6Ly9saWJyYXJ5LnN0YW5mb3JkLmVkdS9paWlmL2ltYWdlLWFwaS8xLjEvY29udGV4dC5qc29uXCIgfHxcbiAgICAgICAgICAgIGRhdGFbJ0Bjb250ZXh0J10gPT0gXCJodHRwOi8vaWlpZi5pby9hcGkvaW1hZ2UvMS9jb250ZXh0Lmpzb25cIikgKSB7XG4gICAgICAgICAgICAvLyBOLkIuIHRoZSBpaWlmLmlvIGNvbnRleHQgaXMgd3JvbmcsIGJ1dCB3aGVyZSB0aGUgcmVwcmVzZW50YXRpb24gbGl2ZXMgc28gbGlrZWx5IHRvIGJlIHVzZWRcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIC8vIFZlcnNpb24gMS4wXG4gICAgICAgIH0gZWxzZSBpZiAoIGRhdGEucHJvZmlsZSAmJlxuICAgICAgICAgICAgZGF0YS5wcm9maWxlLmluZGV4T2YoXCJodHRwOi8vbGlicmFyeS5zdGFuZm9yZC5lZHUvaWlpZi9pbWFnZS1hcGkvY29tcGxpYW5jZS5odG1sXCIpID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICggZGF0YS5pZGVudGlmaWVyICYmIGRhdGEud2lkdGggJiYgZGF0YS5oZWlnaHQgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICggZGF0YS5kb2N1bWVudEVsZW1lbnQgJiZcbiAgICAgICAgICAgIFwiaW5mb1wiID09IGRhdGEuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUgJiZcbiAgICAgICAgICAgIFwiaHR0cDovL2xpYnJhcnkuc3RhbmZvcmQuZWR1L2lpaWYvaW1hZ2UtYXBpL25zL1wiID09XG4gICAgICAgICAgICAgICAgZGF0YS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAvLyBOb3QgSUlJRlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSB0aGUgcmF3IGNvbmZpZ3VyYXRpb25cbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5JSUlGIDEuMSBJbmZvIExvb2tzIGxpa2UgdGhpczwvY2FwdGlvbj5cbiAgICAgKiB7XG4gICAgICogICBcIkBjb250ZXh0XCIgOiBcImh0dHA6Ly9saWJyYXJ5LnN0YW5mb3JkLmVkdS9paWlmL2ltYWdlLWFwaS8xLjEvY29udGV4dC5qc29uXCIsXG4gICAgICogICBcIkBpZFwiIDogXCJodHRwOi8vaWlpZi5leGFtcGxlLmNvbS9wcmVmaXgvMUUzNDc1MEQtMzhEQi00ODI1LUEzOEEtQjYwQTM0NUU1OTFDXCIsXG4gICAgICogICBcIndpZHRoXCIgOiA2MDAwLFxuICAgICAqICAgXCJoZWlnaHRcIiA6IDQwMDAsXG4gICAgICogICBcInNjYWxlX2ZhY3RvcnNcIiA6IFsgMSwgMiwgNCBdLFxuICAgICAqICAgXCJ0aWxlX3dpZHRoXCIgOiAxMDI0LFxuICAgICAqICAgXCJ0aWxlX2hlaWdodFwiIDogMTAyNCxcbiAgICAgKiAgIFwiZm9ybWF0c1wiIDogWyBcImpwZ1wiLCBcInBuZ1wiIF0sXG4gICAgICogICBcInF1YWxpdGllc1wiIDogWyBcIm5hdGl2ZVwiLCBcImdyZXlcIiBdLFxuICAgICAqICAgXCJwcm9maWxlXCIgOiBcImh0dHA6Ly9saWJyYXJ5LnN0YW5mb3JkLmVkdS9paWlmL2ltYWdlLWFwaS8xLjEvY29tcGxpYW5jZS5odG1sI2xldmVsMFwiXG4gICAgICogfVxuICAgICAqL1xuICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24oIGRhdGEsIHVybCApe1xuICAgICAgICAvLyBUcnkgdG8gZGVkdWNlIG91ciB2ZXJzaW9uIGFuZCBmYWtlIGl0IHVwd2FyZHMgaWYgbmVlZGVkXG4gICAgICAgIGlmICggISQuaXNQbGFpbk9iamVjdChkYXRhKSApIHtcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gY29uZmlndXJlRnJvbVhtbDEwKCBkYXRhICk7XG4gICAgICAgICAgICBvcHRpb25zWydAY29udGV4dCddID0gXCJodHRwOi8vaWlpZi5pby9hcGkvaW1hZ2UvMS4wL2NvbnRleHQuanNvblwiO1xuICAgICAgICAgICAgb3B0aW9uc1snQGlkJ10gPSB1cmwucmVwbGFjZSgnL2luZm8ueG1sJywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICAgIH0gZWxzZSBpZiAoICFkYXRhWydAY29udGV4dCddICkge1xuICAgICAgICAgICAgZGF0YVsnQGNvbnRleHQnXSA9ICdodHRwOi8vaWlpZi5pby9hcGkvaW1hZ2UvMS4wL2NvbnRleHQuanNvbic7XG4gICAgICAgICAgICBkYXRhWydAaWQnXSA9IHVybC5yZXBsYWNlKCcvaW5mby5qc29uJywgJycpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIHRpbGVXaWR0aCBmb3IgdGhlIGdpdmVuIGxldmVsLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldFRpbGVXaWR0aDogZnVuY3Rpb24oIGxldmVsICkge1xuXG4gICAgICAgIGlmKHRoaXMuZW11bGF0ZUxlZ2FjeUltYWdlUHlyYW1pZCkge1xuICAgICAgICAgICAgcmV0dXJuICQuVGlsZVNvdXJjZS5wcm90b3R5cGUuZ2V0VGlsZVdpZHRoLmNhbGwodGhpcywgbGV2ZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNjYWxlRmFjdG9yID0gTWF0aC5wb3coMiwgdGhpcy5tYXhMZXZlbCAtIGxldmVsKTtcblxuICAgICAgICBpZiAodGhpcy50aWxlU2l6ZVBlclNjYWxlRmFjdG9yICYmIHRoaXMudGlsZVNpemVQZXJTY2FsZUZhY3RvcltzY2FsZUZhY3Rvcl0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRpbGVTaXplUGVyU2NhbGVGYWN0b3Jbc2NhbGVGYWN0b3JdLndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90aWxlV2lkdGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgdGlsZUhlaWdodCBmb3IgdGhlIGdpdmVuIGxldmVsLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldFRpbGVIZWlnaHQ6IGZ1bmN0aW9uKCBsZXZlbCApIHtcblxuICAgICAgICBpZih0aGlzLmVtdWxhdGVMZWdhY3lJbWFnZVB5cmFtaWQpIHtcbiAgICAgICAgICAgIHJldHVybiAkLlRpbGVTb3VyY2UucHJvdG90eXBlLmdldFRpbGVIZWlnaHQuY2FsbCh0aGlzLCBsZXZlbCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc2NhbGVGYWN0b3IgPSBNYXRoLnBvdygyLCB0aGlzLm1heExldmVsIC0gbGV2ZWwpO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbGVTaXplUGVyU2NhbGVGYWN0b3IgJiYgdGhpcy50aWxlU2l6ZVBlclNjYWxlRmFjdG9yW3NjYWxlRmFjdG9yXSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGlsZVNpemVQZXJTY2FsZUZhY3RvcltzY2FsZUZhY3Rvcl0uaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90aWxlSGVpZ2h0O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKi9cbiAgICBnZXRMZXZlbFNjYWxlOiBmdW5jdGlvbiAoIGxldmVsICkge1xuXG4gICAgICAgIGlmKHRoaXMuZW11bGF0ZUxlZ2FjeUltYWdlUHlyYW1pZCkge1xuICAgICAgICAgICAgdmFyIGxldmVsU2NhbGUgPSBOYU47XG4gICAgICAgICAgICBpZiAodGhpcy5sZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbCA+PSB0aGlzLm1pbkxldmVsICYmIGxldmVsIDw9IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBsZXZlbFNjYWxlID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sZXZlbHNbbGV2ZWxdLndpZHRoIC9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sZXZlbHNbdGhpcy5tYXhMZXZlbF0ud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGV2ZWxTY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAkLlRpbGVTb3VyY2UucHJvdG90eXBlLmdldExldmVsU2NhbGUuY2FsbCh0aGlzLCBsZXZlbCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldE51bVRpbGVzOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG5cbiAgICAgICAgaWYodGhpcy5lbXVsYXRlTGVnYWN5SW1hZ2VQeXJhbWlkKSB7XG4gICAgICAgICAgICB2YXIgc2NhbGUgPSB0aGlzLmdldExldmVsU2NhbGUobGV2ZWwpO1xuICAgICAgICAgICAgaWYgKHNjYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KDEsIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoMCwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJC5UaWxlU291cmNlLnByb3RvdHlwZS5nZXROdW1UaWxlcy5jYWxsKHRoaXMsIGxldmVsKTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgZ2V0VGlsZUF0UG9pbnQ6IGZ1bmN0aW9uKCBsZXZlbCwgcG9pbnQgKSB7XG5cbiAgICAgICAgaWYodGhpcy5lbXVsYXRlTGVnYWN5SW1hZ2VQeXJhbWlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoMCwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJC5UaWxlU291cmNlLnByb3RvdHlwZS5nZXRUaWxlQXRQb2ludC5jYWxsKHRoaXMsIGxldmVsLCBwb2ludCk7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogUmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgdGhlIHVybCB3aGljaCB3aWxsIHJldHVybiBhbiBpbWFnZSBmb3IgdGhlXG4gICAgICogcmVnaW9uIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4geCwgeSwgYW5kIGxldmVsIGNvbXBvbmVudHMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsIC0geiBpbmRleFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICAgKi9cbiAgICBnZXRUaWxlVXJsOiBmdW5jdGlvbiggbGV2ZWwsIHgsIHkgKXtcblxuICAgICAgICBpZih0aGlzLmVtdWxhdGVMZWdhY3lJbWFnZVB5cmFtaWQpIHtcbiAgICAgICAgICAgIHZhciB1cmwgPSBudWxsO1xuICAgICAgICAgICAgaWYgKCB0aGlzLmxldmVscy5sZW5ndGggPiAwICYmIGxldmVsID49IHRoaXMubWluTGV2ZWwgJiYgbGV2ZWwgPD0gdGhpcy5tYXhMZXZlbCApIHtcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmxldmVsc1sgbGV2ZWwgXS51cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8jIGNvbnN0YW50c1xuICAgICAgICB2YXIgSUlJRl9ST1RBVElPTiA9ICcwJyxcbiAgICAgICAgICAgIC8vIyMgZ2V0IHRoZSBzY2FsZSAobGV2ZWwgYXMgYSBkZWNpbWFsKVxuICAgICAgICAgICAgc2NhbGUgPSBNYXRoLnBvdyggMC41LCB0aGlzLm1heExldmVsIC0gbGV2ZWwgKSxcblxuICAgICAgICAgICAgLy8jIGltYWdlIGRpbWVuc2lvbnMgYXQgdGhpcyBsZXZlbFxuICAgICAgICAgICAgbGV2ZWxXaWR0aCA9IE1hdGguY2VpbCggdGhpcy53aWR0aCAqIHNjYWxlICksXG4gICAgICAgICAgICBsZXZlbEhlaWdodCA9IE1hdGguY2VpbCggdGhpcy5oZWlnaHQgKiBzY2FsZSApLFxuXG4gICAgICAgICAgICAvLyMjIGlpaWYgcmVnaW9uXG4gICAgICAgICAgICB0aWxlV2lkdGgsXG4gICAgICAgICAgICB0aWxlSGVpZ2h0LFxuICAgICAgICAgICAgaWlpZlRpbGVTaXplV2lkdGgsXG4gICAgICAgICAgICBpaWlmVGlsZVNpemVIZWlnaHQsXG4gICAgICAgICAgICBpaWlmUmVnaW9uLFxuICAgICAgICAgICAgaWlpZlRpbGVYLFxuICAgICAgICAgICAgaWlpZlRpbGVZLFxuICAgICAgICAgICAgaWlpZlRpbGVXLFxuICAgICAgICAgICAgaWlpZlRpbGVILFxuICAgICAgICAgICAgaWlpZlNpemUsXG4gICAgICAgICAgICBpaWlmUXVhbGl0eSxcbiAgICAgICAgICAgIHVyaTtcblxuICAgICAgICB0aWxlV2lkdGggPSB0aGlzLmdldFRpbGVXaWR0aChsZXZlbCk7XG4gICAgICAgIHRpbGVIZWlnaHQgPSB0aGlzLmdldFRpbGVIZWlnaHQobGV2ZWwpO1xuICAgICAgICBpaWlmVGlsZVNpemVXaWR0aCA9IE1hdGguY2VpbCggdGlsZVdpZHRoIC8gc2NhbGUgKTtcbiAgICAgICAgaWlpZlRpbGVTaXplSGVpZ2h0ID0gTWF0aC5jZWlsKCB0aWxlSGVpZ2h0IC8gc2NhbGUgKTtcblxuICAgICAgICBpZiAoIHRoaXNbJ0Bjb250ZXh0J10uaW5kZXhPZignLzEuMC9jb250ZXh0Lmpzb24nKSA+IC0xIHx8XG4gICAgICAgICAgICAgdGhpc1snQGNvbnRleHQnXS5pbmRleE9mKCcvMS4xL2NvbnRleHQuanNvbicpID4gLTEgfHxcbiAgICAgICAgICAgICB0aGlzWydAY29udGV4dCddLmluZGV4T2YoJy8xL2NvbnRleHQuanNvbicpID4gLTEgKSB7XG4gICAgICAgICAgICBpaWlmUXVhbGl0eSA9IFwibmF0aXZlLmpwZ1wiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWlpZlF1YWxpdHkgPSBcImRlZmF1bHQuanBnXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIGxldmVsV2lkdGggPCB0aWxlV2lkdGggJiYgbGV2ZWxIZWlnaHQgPCB0aWxlSGVpZ2h0ICl7XG4gICAgICAgICAgICBpaWlmU2l6ZSA9IGxldmVsV2lkdGggKyBcIixcIjtcbiAgICAgICAgICAgIGlpaWZSZWdpb24gPSAnZnVsbCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpaWlmVGlsZVggPSB4ICogaWlpZlRpbGVTaXplV2lkdGg7XG4gICAgICAgICAgICBpaWlmVGlsZVkgPSB5ICogaWlpZlRpbGVTaXplSGVpZ2h0O1xuICAgICAgICAgICAgaWlpZlRpbGVXID0gTWF0aC5taW4oIGlpaWZUaWxlU2l6ZVdpZHRoLCB0aGlzLndpZHRoIC0gaWlpZlRpbGVYICk7XG4gICAgICAgICAgICBpaWlmVGlsZUggPSBNYXRoLm1pbiggaWlpZlRpbGVTaXplSGVpZ2h0LCB0aGlzLmhlaWdodCAtIGlpaWZUaWxlWSApO1xuICAgICAgICAgICAgaWlpZlNpemUgPSBNYXRoLmNlaWwoIGlpaWZUaWxlVyAqIHNjYWxlICkgKyBcIixcIjtcbiAgICAgICAgICAgIGlpaWZSZWdpb24gPSBbIGlpaWZUaWxlWCwgaWlpZlRpbGVZLCBpaWlmVGlsZVcsIGlpaWZUaWxlSCBdLmpvaW4oICcsJyApO1xuICAgICAgICB9XG4gICAgICAgIHVyaSA9IFsgdGhpc1snQGlkJ10sIGlpaWZSZWdpb24sIGlpaWZTaXplLCBJSUlGX1JPVEFUSU9OLCBpaWlmUXVhbGl0eSBdLmpvaW4oICcvJyApO1xuXG4gICAgICAgIHJldHVybiB1cmk7XG4gICAgfVxuXG4gIH0pO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYXJiaXRyYXJ5IHRpbGUgcmVxdWVzdHMgY2FuIGJlIG1hZGUgYWdhaW5zdCBhIHNlcnZpY2Ugd2l0aCB0aGUgZ2l2ZW4gcHJvZmlsZVxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9maWxlIC0gSUlJRiBwcm9maWxlIG9iamVjdFxuICAgICAqIEB0aHJvd3Mge0Vycm9yfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhbkJlVGlsZWQgKHByb2ZpbGUgKSB7XG4gICAgICAgIHZhciBsZXZlbDBQcm9maWxlcyA9IFtcbiAgICAgICAgICAgIFwiaHR0cDovL2xpYnJhcnkuc3RhbmZvcmQuZWR1L2lpaWYvaW1hZ2UtYXBpL2NvbXBsaWFuY2UuaHRtbCNsZXZlbDBcIixcbiAgICAgICAgICAgIFwiaHR0cDovL2xpYnJhcnkuc3RhbmZvcmQuZWR1L2lpaWYvaW1hZ2UtYXBpLzEuMS9jb21wbGlhbmNlLmh0bWwjbGV2ZWwwXCIsXG4gICAgICAgICAgICBcImh0dHA6Ly9paWlmLmlvL2FwaS9pbWFnZS8yL2xldmVsMC5qc29uXCJcbiAgICAgICAgXTtcbiAgICAgICAgdmFyIGlzTGV2ZWwwID0gKGxldmVsMFByb2ZpbGVzLmluZGV4T2YocHJvZmlsZVswXSkgIT0gLTEpO1xuICAgICAgICByZXR1cm4gIWlzTGV2ZWwwIHx8IChwcm9maWxlLmluZGV4T2YoXCJzaXplQnlXXCIpICE9IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZCB0aGUgbGVnYWN5IHB5cmFtaWQgVVJMcyAob25lIHRpbGUgcGVyIGxldmVsKVxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gaW5mb0pzb25cbiAgICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdHJ1Y3RMZXZlbHMob3B0aW9ucykge1xuICAgICAgICB2YXIgbGV2ZWxzID0gW107XG4gICAgICAgIGZvcih2YXIgaT0wOyBpPG9wdGlvbnMuc2l6ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldmVscy5wdXNoKHtcbiAgICAgICAgICAgICAgICB1cmw6IG9wdGlvbnNbJ0BpZCddICsgJy9mdWxsLycgKyBvcHRpb25zLnNpemVzW2ldLndpZHRoICsgJywvMC9kZWZhdWx0LmpwZycsXG4gICAgICAgICAgICAgICAgd2lkdGg6IG9wdGlvbnMuc2l6ZXNbaV0ud2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBvcHRpb25zLnNpemVzW2ldLmhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxldmVscy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEud2lkdGggLSBiLndpZHRoO30pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gY29uZmlndXJlRnJvbVhtbDEwKHhtbERvYykge1xuICAgICAgICAvL3BhcnNlIHRoZSB4bWxcbiAgICAgICAgaWYgKCAheG1sRG9jIHx8ICF4bWxEb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAkLmdldFN0cmluZyggXCJFcnJvcnMuWG1sXCIgKSApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJvb3QgICAgICAgICAgICA9IHhtbERvYy5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgICAgICByb290TmFtZSAgICAgICAgPSByb290LnRhZ05hbWUsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uICAgPSBudWxsO1xuXG4gICAgICAgIGlmICggcm9vdE5hbWUgPT0gXCJpbmZvXCIgKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICAgICAgICAgICAgICBwYXJzZVhNTDEwKCByb290LCBjb25maWd1cmF0aW9uICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkge1xuICAgICAgICAgICAgICAgIHRocm93IChlIGluc3RhbmNlb2YgRXJyb3IpID9cbiAgICAgICAgICAgICAgICAgICAgZSA6XG4gICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvciggJC5nZXRTdHJpbmcoXCJFcnJvcnMuSUlJRlwiKSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJC5nZXRTdHJpbmcoIFwiRXJyb3JzLklJSUZcIiApICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VYTUwxMCggbm9kZSwgY29uZmlndXJhdGlvbiwgcHJvcGVydHkgKSB7XG4gICAgICAgIHZhciBpLFxuICAgICAgICAgICAgdmFsdWU7XG4gICAgICAgIGlmICggbm9kZS5ub2RlVHlwZSA9PSAzICYmIHByb3BlcnR5ICkgey8vdGV4dCBub2RlXG4gICAgICAgICAgICB2YWx1ZSA9IG5vZGUubm9kZVZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgIGlmKCB2YWx1ZS5tYXRjaCgvXlxcZCokLykpe1xuICAgICAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKCB2YWx1ZSApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoICFjb25maWd1cmF0aW9uWyBwcm9wZXJ0eSBdICl7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvblsgcHJvcGVydHkgXSA9IHZhbHVlO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgaWYoICEkLmlzQXJyYXkoIGNvbmZpZ3VyYXRpb25bIHByb3BlcnR5IF0gKSApe1xuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uWyBwcm9wZXJ0eSBdID0gWyBjb25maWd1cmF0aW9uWyBwcm9wZXJ0eSBdIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bIHByb3BlcnR5IF0ucHVzaCggdmFsdWUgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmKCBub2RlLm5vZGVUeXBlID09IDEgKXtcbiAgICAgICAgICAgIGZvciggaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgICAgICAgICBwYXJzZVhNTDEwKCBub2RlLmNoaWxkTm9kZXNbIGkgXSwgY29uZmlndXJhdGlvbiwgbm9kZS5ub2RlTmFtZSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBPc21UaWxlU291cmNlXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbi8qXG4gKiBEZXJpdmVkIGZyb20gdGhlIE9TTSB0aWxlIHNvdXJjZSBpbiBSYWluZXIgU2ltb24ncyBzZWFqYXgtdXRpbHMgcHJvamVjdFxuICogPGh0dHA6Ly9naXRodWIuY29tL3JzaW1vbi9zZWFqYXgtdXRpbHM+LiAgUmFpbmVyIFNpbW9uIGhhcyBjb250cmlidXRlZFxuICogdGhlIGluY2x1ZGVkIGNvZGUgdG8gdGhlIE9wZW5TZWFkcmFnb24gcHJvamVjdCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlO1xuICogc2VlIDxodHRwczovL2dpdGh1Yi5jb20vb3BlbnNlYWRyYWdvbi9vcGVuc2VhZHJhZ29uL2lzc3Vlcy81OD4uXG4gKi9cblxuXG4oZnVuY3Rpb24oICQgKXtcblxuLyoqXG4gKiBAY2xhc3MgT3NtVGlsZVNvdXJjZVxuICogQGNsYXNzZGVzYyBBIHRpbGVzb3VyY2UgaW1wbGVtZW50YXRpb24gZm9yIE9wZW5TdHJlZXRNYXAuPGJyPjxicj5cbiAqXG4gKiBOb3RlIDEuIFpvb21sZXZlbHMuIERlZXAgWm9vbSBhbmQgT1NNIGRlZmluZSB6b29tIGxldmVscyBkaWZmZXJlbnRseS4gSW4gIERlZXBcbiAqIFpvb20sIGxldmVsIDAgZXF1YWxzIGFuIGltYWdlIG9mIDF4MSBwaXhlbHMuIEluIE9TTSwgbGV2ZWwgMCBlcXVhbHMgYW4gaW1hZ2Ugb2ZcbiAqIDI1NngyNTYgbGV2ZWxzIChzZWUgaHR0cDovL2dhc2kuY2gvYmxvZy9pbnNpZGUtZGVlcC16b29tLTIpLiBJLmUuIHRoZXJlIGlzIGFcbiAqIGRpZmZlcmVuY2Ugb2YgbG9nMigyNTYpPTggbGV2ZWxzLjxicj48YnI+XG4gKlxuICogTm90ZSAyLiBJbWFnZSBkaW1lbnNpb24uIEFjY29yZGluZyB0byB0aGUgT1NNIFdpa2lcbiAqIChodHRwOi8vd2lraS5vcGVuc3RyZWV0bWFwLm9yZy93aWtpL1NsaXBweV9tYXBfdGlsZW5hbWVzI1pvb21fbGV2ZWxzKVxuICogdGhlIGhpZ2hlc3QgTWFwbmlrIHpvb20gbGV2ZWwgaGFzIDI1Ni4xNDR4MjU2LjE0NCB0aWxlcywgd2l0aCBhIDI1NngyNTZcbiAqIHBpeGVsIHNpemUuIEkuZS4gdGhlIERlZXAgWm9vbSBpbWFnZSBkaW1lbnNpb24gaXMgNjUuNTcyLjg2NHg2NS41NzIuODY0XG4gKiBwaXhlbHMuXG4gKlxuICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAqIEBleHRlbmRzIE9wZW5TZWFkcmFnb24uVGlsZVNvdXJjZVxuICogQHBhcmFtIHtOdW1iZXJ8T2JqZWN0fSB3aWR0aCAtIHRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgaW1hZ2Ugb3IgdGhlIGlkaW9tYXRpY1xuICogICAgICBvcHRpb25zIG9iamVjdCB3aGljaCBpcyB1c2VkIGluc3RlYWQgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMuXG4gKiBAcGFyYW0ge051bWJlcn0gaGVpZ2h0XG4gKiBAcGFyYW0ge051bWJlcn0gdGlsZVNpemVcbiAqIEBwYXJhbSB7TnVtYmVyfSB0aWxlT3ZlcmxhcFxuICogQHBhcmFtIHtTdHJpbmd9IHRpbGVzVXJsXG4gKi9cbiQuT3NtVGlsZVNvdXJjZSA9IGZ1bmN0aW9uKCB3aWR0aCwgaGVpZ2h0LCB0aWxlU2l6ZSwgdGlsZU92ZXJsYXAsIHRpbGVzVXJsICkge1xuICAgIHZhciBvcHRpb25zO1xuXG4gICAgaWYoICQuaXNQbGFpbk9iamVjdCggd2lkdGggKSApe1xuICAgICAgICBvcHRpb25zID0gd2lkdGg7XG4gICAgfWVsc2V7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB3aWR0aDogYXJndW1lbnRzWzBdLFxuICAgICAgICAgICAgaGVpZ2h0OiBhcmd1bWVudHNbMV0sXG4gICAgICAgICAgICB0aWxlU2l6ZTogYXJndW1lbnRzWzJdLFxuICAgICAgICAgICAgdGlsZU92ZXJsYXA6IGFyZ3VtZW50c1szXSxcbiAgICAgICAgICAgIHRpbGVzVXJsOiBhcmd1bWVudHNbNF1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy9hcHBseSBkZWZhdWx0IHNldHRpbmcgZm9yIHN0YW5kYXJkIHB1YmxpYyBPcGVuU3RyZWF0TWFwcyBzZXJ2aWNlXG4gICAgLy9idXQgYWxsb3cgdGhlbSB0byBiZSBzcGVjaWZpZWQgc28gZmxpa3MgY2FuIGhvc3QgdGhlcmUgb3duIGluc3RhbmNlXG4gICAgLy9vciBhcHBseSBhZ2FpbnN0IG90aGVyIHNlcnZpY2VzIHN1cHBvcnR0aW5nIHRoZSBzYW1lIHN0YW5kYXJkXG4gICAgaWYoICFvcHRpb25zLndpZHRoIHx8ICFvcHRpb25zLmhlaWdodCApe1xuICAgICAgICBvcHRpb25zLndpZHRoID0gNjU1NzI4NjQ7XG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gNjU1NzI4NjQ7XG4gICAgfVxuICAgIGlmKCAhb3B0aW9ucy50aWxlU2l6ZSApe1xuICAgICAgICBvcHRpb25zLnRpbGVTaXplID0gMjU2O1xuICAgICAgICBvcHRpb25zLnRpbGVPdmVybGFwID0gMDtcbiAgICB9XG4gICAgaWYoICFvcHRpb25zLnRpbGVzVXJsICl7XG4gICAgICAgIG9wdGlvbnMudGlsZXNVcmwgPSBcImh0dHA6Ly90aWxlLm9wZW5zdHJlZXRtYXAub3JnL1wiO1xuICAgIH1cbiAgICBvcHRpb25zLm1pbkxldmVsID0gODtcblxuICAgICQuVGlsZVNvdXJjZS5hcHBseSggdGhpcywgWyBvcHRpb25zIF0gKTtcblxufTtcblxuJC5leHRlbmQoICQuT3NtVGlsZVNvdXJjZS5wcm90b3R5cGUsICQuVGlsZVNvdXJjZS5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5Pc21UaWxlU291cmNlLnByb3RvdHlwZSAqL3tcblxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIHRoZSBkYXRhIGFuZC9vciB1cmwgaW1wbHkgdGhlIGltYWdlIHNlcnZpY2UgaXMgc3VwcG9ydGVkIGJ5XG4gICAgICogdGhpcyB0aWxlIHNvdXJjZS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZGF0YVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25hbCAtIHVybFxuICAgICAqL1xuICAgIHN1cHBvcnRzOiBmdW5jdGlvbiggZGF0YSwgdXJsICl7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBkYXRhLnR5cGUgJiZcbiAgICAgICAgICAgIFwib3BlbnN0cmVldG1hcHNcIiA9PSBkYXRhLnR5cGVcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIHRoZSByYXcgY29uZmlndXJhdGlvblxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSB0aGUgdXJsIHRoZSBkYXRhIHdhcyByZXRyZWl2ZWQgZnJvbSBpZiBhbnkuXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBvcHRpb25zIC0gQSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQgYXJndW1lbnRzIHN1ZmZpY2llbnRcbiAgICAgKiAgICAgIHRvIGNvbmZpZ3VyZSB0aGlzIHRpbGUgc291cmNlcyBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKCBkYXRhLCB1cmwgKXtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcblxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geVxuICAgICAqL1xuICAgIGdldFRpbGVVcmw6IGZ1bmN0aW9uKCBsZXZlbCwgeCwgeSApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlsZXNVcmwgKyAobGV2ZWwgLSA4KSArIFwiL1wiICsgeCArIFwiL1wiICsgeSArIFwiLnBuZ1wiO1xuICAgIH1cbn0pO1xuXG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gVG1zVGlsZVNvdXJjZVxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4vKlxuICogRGVyaXZlZCBmcm9tIHRoZSBUTVMgdGlsZSBzb3VyY2UgaW4gUmFpbmVyIFNpbW9uJ3Mgc2VhamF4LXV0aWxzIHByb2plY3RcbiAqIDxodHRwOi8vZ2l0aHViLmNvbS9yc2ltb24vc2VhamF4LXV0aWxzPi4gIFJhaW5lciBTaW1vbiBoYXMgY29udHJpYnV0ZWRcbiAqIHRoZSBpbmNsdWRlZCBjb2RlIHRvIHRoZSBPcGVuU2VhZHJhZ29uIHByb2plY3QgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZTtcbiAqIHNlZSA8aHR0cHM6Ly9naXRodWIuY29tL29wZW5zZWFkcmFnb24vb3BlbnNlYWRyYWdvbi9pc3N1ZXMvNTg+LlxuICovXG5cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIFRtc1RpbGVTb3VyY2VcbiAqIEBjbGFzc2Rlc2MgQSB0aWxlc291cmNlIGltcGxlbWVudGF0aW9uIGZvciBUaWxlZCBNYXAgU2VydmljZXMgKFRNUykuXG4gKiBUTVMgdGlsZSBzY2hlbWUgKCBbIGFzIHN1cHBvcnRlZCBieSBPcGVuTGF5ZXJzIF0gaXMgZGVzY3JpYmVkIGhlcmVcbiAqICggaHR0cDovL29wZW5sYXllcnMub3JnL2Rldi9leGFtcGxlcy90bXMuaHRtbCApLlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLlRpbGVTb3VyY2VcbiAqIEBwYXJhbSB7TnVtYmVyfE9iamVjdH0gd2lkdGggLSB0aGUgcGl4ZWwgd2lkdGggb2YgdGhlIGltYWdlIG9yIHRoZSBpZGlvbWF0aWNcbiAqICAgICAgb3B0aW9ucyBvYmplY3Qgd2hpY2ggaXMgdXNlZCBpbnN0ZWFkIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodFxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbGVTaXplXG4gKiBAcGFyYW0ge051bWJlcn0gdGlsZU92ZXJsYXBcbiAqIEBwYXJhbSB7U3RyaW5nfSB0aWxlc1VybFxuICovXG4kLlRtc1RpbGVTb3VyY2UgPSBmdW5jdGlvbiggd2lkdGgsIGhlaWdodCwgdGlsZVNpemUsIHRpbGVPdmVybGFwLCB0aWxlc1VybCApIHtcbiAgICB2YXIgb3B0aW9ucztcblxuICAgIGlmKCAkLmlzUGxhaW5PYmplY3QoIHdpZHRoICkgKXtcbiAgICAgICAgb3B0aW9ucyA9IHdpZHRoO1xuICAgIH1lbHNle1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgd2lkdGg6IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICAgIGhlaWdodDogYXJndW1lbnRzWzFdLFxuICAgICAgICAgICAgdGlsZVNpemU6IGFyZ3VtZW50c1syXSxcbiAgICAgICAgICAgIHRpbGVPdmVybGFwOiBhcmd1bWVudHNbM10sXG4gICAgICAgICAgICB0aWxlc1VybDogYXJndW1lbnRzWzRdXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIFRNUyBoYXMgaW50ZWdlciBtdWx0aXBsZXMgb2YgMjU2IGZvciB3aWR0aC9oZWlnaHQgYW5kIGFkZHMgYnVmZmVyXG4gICAgLy8gaWYgbmVjZXNzYXJ5IC0+IGFjY291bnQgZm9yIHRoaXMhXG4gICAgdmFyIGJ1ZmZlcmVkV2lkdGggPSBNYXRoLmNlaWwob3B0aW9ucy53aWR0aCAvIDI1NikgKiAyNTYsXG4gICAgICAgIGJ1ZmZlcmVkSGVpZ2h0ID0gTWF0aC5jZWlsKG9wdGlvbnMuaGVpZ2h0IC8gMjU2KSAqIDI1NixcbiAgICAgICAgbWF4O1xuXG4gICAgLy8gQ29tcHV0ZSBudW1iZXIgb2Ygem9vbWxldmVscyBpbiB0aGlzIHRpbGVzZXRcbiAgICBpZiAoYnVmZmVyZWRXaWR0aCA+IGJ1ZmZlcmVkSGVpZ2h0KSB7XG4gICAgICAgIG1heCA9IGJ1ZmZlcmVkV2lkdGggLyAyNTY7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWF4ID0gYnVmZmVyZWRIZWlnaHQgLyAyNTY7XG4gICAgfVxuICAgIG9wdGlvbnMubWF4TGV2ZWwgPSBNYXRoLmNlaWwoTWF0aC5sb2cobWF4KS9NYXRoLmxvZygyKSkgLSAxO1xuICAgIG9wdGlvbnMudGlsZVNpemUgPSAyNTY7XG4gICAgb3B0aW9ucy53aWR0aCA9IGJ1ZmZlcmVkV2lkdGg7XG4gICAgb3B0aW9ucy5oZWlnaHQgPSBidWZmZXJlZEhlaWdodDtcblxuICAgICQuVGlsZVNvdXJjZS5hcHBseSggdGhpcywgWyBvcHRpb25zIF0gKTtcblxufTtcblxuJC5leHRlbmQoICQuVG1zVGlsZVNvdXJjZS5wcm90b3R5cGUsICQuVGlsZVNvdXJjZS5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5UbXNUaWxlU291cmNlLnByb3RvdHlwZSAqL3tcblxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIHRoZSBkYXRhIGFuZC9vciB1cmwgaW1wbHkgdGhlIGltYWdlIHNlcnZpY2UgaXMgc3VwcG9ydGVkIGJ5XG4gICAgICogdGhpcyB0aWxlIHNvdXJjZS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZGF0YVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25hbCAtIHVybFxuICAgICAqL1xuICAgIHN1cHBvcnRzOiBmdW5jdGlvbiggZGF0YSwgdXJsICl7XG4gICAgICAgIHJldHVybiAoIGRhdGEudHlwZSAmJiBcInRpbGVkbWFwc2VydmljZVwiID09IGRhdGEudHlwZSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gdGhlIHJhdyBjb25maWd1cmF0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIHRoZSB1cmwgdGhlIGRhdGEgd2FzIHJldHJlaXZlZCBmcm9tIGlmIGFueS5cbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IG9wdGlvbnMgLSBBIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMgc3VmZmljaWVudFxuICAgICAqICAgICAgdG8gY29uZmlndXJlIHRoaXMgdGlsZSBzb3VyY2VzIGNvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24oIGRhdGEsIHVybCApe1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB5XG4gICAgICovXG4gICAgZ2V0VGlsZVVybDogZnVuY3Rpb24oIGxldmVsLCB4LCB5ICkge1xuICAgICAgICAvLyBDb252ZXJ0IGZyb20gRGVlcCBab29tIGRlZmluaXRpb24gdG8gVE1TIHpvb20gZGVmaW5pdGlvblxuICAgICAgICB2YXIgeVRpbGVzID0gdGhpcy5nZXROdW1UaWxlcyggbGV2ZWwgKS55IC0gMTtcblxuICAgICAgICByZXR1cm4gdGhpcy50aWxlc1VybCArIGxldmVsICsgXCIvXCIgKyB4ICsgXCIvXCIgKyAgKHlUaWxlcyAtIHkpICsgXCIucG5nXCI7XG4gICAgfVxufSk7XG5cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBMZWdhY3lUaWxlU291cmNlXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIEBjbGFzcyBMZWdhY3lUaWxlU291cmNlXG4gKiBAY2xhc3NkZXNjIFRoZSBMZWdhY3lUaWxlU291cmNlIGFsbG93cyBzaW1wbGUsIHRyYWRpdGlvbmFsIGltYWdlIHB5cmFtaWRzIHRvIGJlIGxvYWRlZFxuICogaW50byBhbiBPcGVuU2VhZHJhZ29uIFZpZXdlci4gIEJhc2ljYWxseSwgdGhpcyB0cmFuc2xhdGVzIHRvIHRoZSBoaXN0b3JpY2FsbHlcbiAqIGNvbW1vbiBwcmFjdGljZSBvZiBzdGFydGluZyB3aXRoIGEgJ21hc3RlcicgaW1hZ2UsIG1heWJlIGEgdGlmZiBmb3IgZXhhbXBsZSxcbiAqIGFuZCBnZW5lcmF0aW5nIGEgc2V0IG9mICdzZXJ2aWNlJyBpbWFnZXMgbGlrZSBvbmUgb3IgbW9yZSB0aHVtYm5haWxzLCBhIG1lZGl1bVxuICogcmVzb2x1dGlvbiBpbWFnZSBhbmQgYSBoaWdoIHJlc29sdXRpb24gaW1hZ2UgaW4gc3RhbmRhcmQgd2ViIGZvcm1hdHMgbGlrZVxuICogcG5nIG9yIGpwZy5cbiAqXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGV4dGVuZHMgT3BlblNlYWRyYWdvbi5UaWxlU291cmNlXG4gKiBAcGFyYW0ge0FycmF5fSBsZXZlbHMgQW4gYXJyYXkgb2YgZmlsZSBkZXNjcmlwdGlvbnMsIGVhY2ggaXMgYW4gb2JqZWN0IHdpdGhcbiAqICAgICAgYSAndXJsJywgYSAnd2lkdGgnLCBhbmQgYSAnaGVpZ2h0Jy4gIE92ZXJyaWRpbmcgY2xhc3NlcyBjYW4gZXhwZWN0IG1vcmVcbiAqICAgICAgcHJvcGVydGllcyBidXQgdGhlc2UgcHJvcGVydGllcyBhcmUgc3VmZmljaWVudCBmb3IgdGhpcyBpbXBsZW1lbnRhdGlvbi5cbiAqICAgICAgQWRkaXRpb25hbGx5LCB0aGUgbGV2ZWxzIGFyZSByZXF1aXJlZCB0byBiZSBsaXN0ZWQgaW4gb3JkZXIgZnJvbVxuICogICAgICBzbWFsbGVzdCB0byBsYXJnZXN0LlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGFzcGVjdFJhdGlvXG4gKiBAcHJvcGVydHkge051bWJlcn0gZGltZW5zaW9uc1xuICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbGVTaXplXG4gKiBAcHJvcGVydHkge051bWJlcn0gdGlsZU92ZXJsYXBcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtaW5MZXZlbFxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG1heExldmVsXG4gKiBAcHJvcGVydHkge0FycmF5fSAgbGV2ZWxzXG4gKi9cbiQuTGVnYWN5VGlsZVNvdXJjZSA9IGZ1bmN0aW9uKCBsZXZlbHMgKSB7XG5cbiAgICB2YXIgb3B0aW9ucyxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodDtcblxuICAgIGlmKCAkLmlzQXJyYXkoIGxldmVscyApICl7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0eXBlOiAnbGVnYWN5LWltYWdlLXB5cmFtaWQnLFxuICAgICAgICAgICAgbGV2ZWxzOiBsZXZlbHNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvL2NsZWFuIHVwIHRoZSBsZXZlbHMgdG8gbWFrZSBzdXJlIHdlIHN1cHBvcnQgYWxsIGZvcm1hdHNcbiAgICBvcHRpb25zLmxldmVscyA9IGZpbHRlckZpbGVzKCBvcHRpb25zLmxldmVscyApO1xuXG4gICAgaWYgKCBvcHRpb25zLmxldmVscy5sZW5ndGggPiAwICkge1xuICAgICAgICB3aWR0aCA9IG9wdGlvbnMubGV2ZWxzWyBvcHRpb25zLmxldmVscy5sZW5ndGggLSAxIF0ud2lkdGg7XG4gICAgICAgIGhlaWdodCA9IG9wdGlvbnMubGV2ZWxzWyBvcHRpb25zLmxldmVscy5sZW5ndGggLSAxIF0uaGVpZ2h0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2lkdGggPSAwO1xuICAgICAgICBoZWlnaHQgPSAwO1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoIFwiTm8gc3VwcG9ydGVkIGltYWdlIGZvcm1hdHMgZm91bmRcIiApO1xuICAgIH1cblxuICAgICQuZXh0ZW5kKCB0cnVlLCBvcHRpb25zLCB7XG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHRpbGVTaXplOiBNYXRoLm1heCggaGVpZ2h0LCB3aWR0aCApLFxuICAgICAgICB0aWxlT3ZlcmxhcDogMCxcbiAgICAgICAgbWluTGV2ZWw6IDAsXG4gICAgICAgIG1heExldmVsOiBvcHRpb25zLmxldmVscy5sZW5ndGggPiAwID8gb3B0aW9ucy5sZXZlbHMubGVuZ3RoIC0gMSA6IDBcbiAgICB9ICk7XG5cbiAgICAkLlRpbGVTb3VyY2UuYXBwbHkoIHRoaXMsIFsgb3B0aW9ucyBdICk7XG5cbiAgICB0aGlzLmxldmVscyA9IG9wdGlvbnMubGV2ZWxzO1xufTtcblxuJC5leHRlbmQoICQuTGVnYWN5VGlsZVNvdXJjZS5wcm90b3R5cGUsICQuVGlsZVNvdXJjZS5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5MZWdhY3lUaWxlU291cmNlLnByb3RvdHlwZSAqL3tcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRhdGEgYW5kL29yIHVybCBpbXBseSB0aGUgaW1hZ2Ugc2VydmljZSBpcyBzdXBwb3J0ZWQgYnlcbiAgICAgKiB0aGlzIHRpbGUgc291cmNlLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBkYXRhXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbmFsIC0gdXJsXG4gICAgICovXG4gICAgc3VwcG9ydHM6IGZ1bmN0aW9uKCBkYXRhLCB1cmwgKXtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRhdGEudHlwZSAmJlxuICAgICAgICAgICAgXCJsZWdhY3ktaW1hZ2UtcHlyYW1pZFwiID09IGRhdGEudHlwZVxuICAgICAgICApIHx8IChcbiAgICAgICAgICAgIGRhdGEuZG9jdW1lbnRFbGVtZW50ICYmXG4gICAgICAgICAgICBcImxlZ2FjeS1pbWFnZS1weXJhbWlkXCIgPT0gZGF0YS5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJylcbiAgICAgICAgKTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fFhNTERvY3VtZW50fSBjb25maWd1cmF0aW9uIC0gdGhlIHJhdyBjb25maWd1cmF0aW9uXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGRhdGFVcmwgLSB0aGUgdXJsIHRoZSBkYXRhIHdhcyByZXRyZWl2ZWQgZnJvbSBpZiBhbnkuXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBvcHRpb25zIC0gQSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQgYXJndW1lbnRzIHN1ZmZpY2llbnRcbiAgICAgKiAgICAgIHRvIGNvbmZpZ3VyZSB0aGlzIHRpbGUgc291cmNlcyBjb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25maWd1cmU6IGZ1bmN0aW9uKCBjb25maWd1cmF0aW9uLCBkYXRhVXJsICl7XG5cbiAgICAgICAgdmFyIG9wdGlvbnM7XG5cbiAgICAgICAgaWYoICEkLmlzUGxhaW5PYmplY3QoY29uZmlndXJhdGlvbikgKXtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGNvbmZpZ3VyZUZyb21YTUwoIHRoaXMsIGNvbmZpZ3VyYXRpb24gKTtcblxuICAgICAgICB9ZWxzZXtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGNvbmZpZ3VyZUZyb21PYmplY3QoIHRoaXMsIGNvbmZpZ3VyYXRpb24gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldExldmVsU2NhbGU6IGZ1bmN0aW9uICggbGV2ZWwgKSB7XG4gICAgICAgIHZhciBsZXZlbFNjYWxlID0gTmFOO1xuICAgICAgICBpZiAoIHRoaXMubGV2ZWxzLmxlbmd0aCA+IDAgJiYgbGV2ZWwgPj0gdGhpcy5taW5MZXZlbCAmJiBsZXZlbCA8PSB0aGlzLm1heExldmVsICkge1xuICAgICAgICAgICAgbGV2ZWxTY2FsZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbHNbIGxldmVsIF0ud2lkdGggL1xuICAgICAgICAgICAgICAgIHRoaXMubGV2ZWxzWyB0aGlzLm1heExldmVsIF0ud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxldmVsU2NhbGU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAqL1xuICAgIGdldE51bVRpbGVzOiBmdW5jdGlvbiggbGV2ZWwgKSB7XG4gICAgICAgIHZhciBzY2FsZSA9IHRoaXMuZ2V0TGV2ZWxTY2FsZSggbGV2ZWwgKTtcbiAgICAgICAgaWYgKCBzY2FsZSApe1xuICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KCAxLCAxICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoIDAsIDAgKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWxcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgZ2V0VGlsZUF0UG9pbnQ6IGZ1bmN0aW9uKCBsZXZlbCwgcG9pbnQgKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCggMCwgMCApO1xuICAgIH0sXG5cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGlzIGNsYXNzIG90aGVyIHRoYW4gdG8gdGhyb3cgYW4gRXJyb3JcbiAgICAgKiBhbm5vdW5jaW5nIHlvdSBoYXZlIHRvIGltcGxlbWVudCBpdC4gIEJlY2F1c2Ugb2YgdGhlIHZhcmlldHkgb2YgdGlsZVxuICAgICAqIHNlcnZlciB0ZWNobm9sb2dpZXMsIGFuZCB2YXJpb3VzIHNwZWNpZmljYXRpb25zIGZvciBidWlsZGluZyBpbWFnZVxuICAgICAqIHB5cmFtaWRzLCB0aGlzIG1ldGhvZCBpcyBoZXJlIHRvIGFsbG93IGVhc3kgaW50ZWdyYXRpb24uXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGxldmVsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geVxuICAgICAqIEB0aHJvd3Mge0Vycm9yfVxuICAgICAqL1xuICAgIGdldFRpbGVVcmw6IGZ1bmN0aW9uICggbGV2ZWwsIHgsIHkgKSB7XG4gICAgICAgIHZhciB1cmwgPSBudWxsO1xuICAgICAgICBpZiAoIHRoaXMubGV2ZWxzLmxlbmd0aCA+IDAgJiYgbGV2ZWwgPj0gdGhpcy5taW5MZXZlbCAmJiBsZXZlbCA8PSB0aGlzLm1heExldmVsICkge1xuICAgICAgICAgICAgdXJsID0gdGhpcy5sZXZlbHNbIGxldmVsIF0udXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufSApO1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJlbW92ZXMgYW55IGZpbGVzIGZyb20gdGhlIEFycmF5IHdoaWNoIGRvbnQgY29uZm9ybSB0byBvdXJcbiAqIGJhc2ljIHJlcXVpcmVtZW50cyBmb3IgYSAnbGV2ZWwnIGluIHRoZSBMZWdhY3lUaWxlU291cmNlLlxuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogQGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGZpbHRlckZpbGVzKCBmaWxlcyApe1xuICAgIHZhciBmaWx0ZXJlZCA9IFtdLFxuICAgICAgICBmaWxlLFxuICAgICAgICBpO1xuICAgIGZvciggaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKyApe1xuICAgICAgICBmaWxlID0gZmlsZXNbIGkgXTtcbiAgICAgICAgaWYoIGZpbGUuaGVpZ2h0ICYmXG4gICAgICAgICAgICBmaWxlLndpZHRoICYmXG4gICAgICAgICAgICBmaWxlLnVybCAmJiAoXG4gICAgICAgICAgICAgICAgZmlsZS51cmwudG9Mb3dlckNhc2UoKS5tYXRjaCgvXi4qXFwuKHBuZ3xqcGd8anBlZ3xnaWYpKD86XFw/LiopPyQvKSB8fCAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUubWltZXR5cGUgJiZcbiAgICAgICAgICAgICAgICAgICAgZmlsZS5taW1ldHlwZS50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eLipcXC8ocG5nfGpwZ3xqcGVnfGdpZikkLylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApICl7XG4gICAgICAgICAgICAvL1RoaXMgaXMgc3VmZmljaWVudCB0byBzZXJ2ZSBhcyBhIGxldmVsXG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICB1cmw6IGZpbGUudXJsLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIoIGZpbGUud2lkdGggKSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IE51bWJlciggZmlsZS5oZWlnaHQgKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUuZXJyb3IoICdVbnN1cHBvcnRlZCBpbWFnZSBmb3JtYXQ6ICVzJywgZmlsZS51cmwgPyBmaWxlLnVybCA6ICc8bm8gVVJMPicgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZC5zb3J0KGZ1bmN0aW9uKGEsYil7XG4gICAgICAgIHJldHVybiBhLmhlaWdodCAtIGIuaGVpZ2h0O1xuICAgIH0pO1xuXG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogQGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZUZyb21YTUwoIHRpbGVTb3VyY2UsIHhtbERvYyApe1xuXG4gICAgaWYgKCAheG1sRG9jIHx8ICF4bWxEb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoICQuZ2V0U3RyaW5nKCBcIkVycm9ycy5YbWxcIiApICk7XG4gICAgfVxuXG4gICAgdmFyIHJvb3QgICAgICAgICA9IHhtbERvYy5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgIHJvb3ROYW1lICAgICA9IHJvb3QudGFnTmFtZSxcbiAgICAgICAgY29uZiAgICAgICAgID0gbnVsbCxcbiAgICAgICAgbGV2ZWxzICAgICAgID0gW10sXG4gICAgICAgIGxldmVsLFxuICAgICAgICBpO1xuXG4gICAgaWYgKCByb290TmFtZSA9PSBcImltYWdlXCIgKSB7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbmYgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogICAgICAgIHJvb3QuZ2V0QXR0cmlidXRlKCBcInR5cGVcIiApLFxuICAgICAgICAgICAgICAgIGxldmVsczogICAgICBbXVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV2ZWxzID0gcm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCJsZXZlbFwiICk7XG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxldmVscy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBsZXZlbCA9IGxldmVsc1sgaSBdO1xuXG4gICAgICAgICAgICAgICAgY29uZi5sZXZlbHMgLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB1cmw6ICAgIGxldmVsLmdldEF0dHJpYnV0ZSggXCJ1cmxcIiApLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogIHBhcnNlSW50KCBsZXZlbC5nZXRBdHRyaWJ1dGUoIFwid2lkdGhcIiApLCAxMCApLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcnNlSW50KCBsZXZlbC5nZXRBdHRyaWJ1dGUoIFwiaGVpZ2h0XCIgKSwgMTAgKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29uZmlndXJlRnJvbU9iamVjdCggdGlsZVNvdXJjZSwgY29uZiApO1xuXG4gICAgICAgIH0gY2F0Y2ggKCBlICkge1xuICAgICAgICAgICAgdGhyb3cgKGUgaW5zdGFuY2VvZiBFcnJvcikgP1xuICAgICAgICAgICAgICAgIGUgOlxuICAgICAgICAgICAgICAgIG5ldyBFcnJvciggJ1Vua25vd24gZXJyb3IgcGFyc2luZyBMZWdhY3kgSW1hZ2UgUHlyYW1pZCBYTUwuJyApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICggcm9vdE5hbWUgPT0gXCJjb2xsZWN0aW9uXCIgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJ0xlZ2FjeSBJbWFnZSBQeXJhbWlkIENvbGxlY3Rpb25zIG5vdCB5ZXQgc3VwcG9ydGVkLicgKTtcbiAgICB9IGVsc2UgaWYgKCByb290TmFtZSA9PSBcImVycm9yXCIgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvciggJ0Vycm9yOiAnICsgeG1sRG9jICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCAnVW5rbm93biBlbGVtZW50ICcgKyByb290TmFtZSApO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBjb25maWd1cmVGcm9tT2JqZWN0KCB0aWxlU291cmNlLCBjb25maWd1cmF0aW9uICl7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbi5sZXZlbHM7XG5cbn1cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBJbWFnZVRpbGVTb3VyY2VcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uICgkKSB7XG5cbiAgICAvKipcbiAgICAgKiBAY2xhc3MgSW1hZ2VUaWxlU291cmNlXG4gICAgICogQGNsYXNzZGVzYyBUaGUgSW1hZ2VUaWxlU291cmNlIGFsbG93cyBhIHNpbXBsZSBpbWFnZSB0byBiZSBsb2FkZWRcbiAgICAgKiBpbnRvIGFuIE9wZW5TZWFkcmFnb24gVmlld2VyLlxuICAgICAqIFRoZXJlIGFyZSAyIHdheXMgdG8gb3BlbiBhbiBJbWFnZVRpbGVTb3VyY2U6XG4gICAgICogMS4gdmlld2VyLm9wZW4oe3R5cGU6ICdpbWFnZScsIHVybDogZm9vVXJsfSk7XG4gICAgICogMi4gdmlld2VyLm9wZW4obmV3IE9wZW5TZWFkcmFnb24uSW1hZ2VUaWxlU291cmNlKHt1cmw6IGZvb1VybH0pKTtcbiAgICAgKlxuICAgICAqIFdpdGggdGhlIGZpcnN0IHN5bnRheCwgdGhlIGNyb3NzT3JpZ2luUG9saWN5LCBhamF4V2l0aENyZWRlbnRpYWxzIGFuZFxuICAgICAqIHVzZUNhbnZhcyBvcHRpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgdmlld2VyIGlmIHRoZXkgYXJlIG5vdFxuICAgICAqIHNwZWNpZmllZCBkaXJlY3RseSBpbiB0aGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBleHRlbmRzIE9wZW5TZWFkcmFnb24uVGlsZVNvdXJjZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25zLnVybCBVUkwgb2YgdGhlIGltYWdlXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5idWlsZFB5cmFtaWQ9dHJ1ZV0gSWYgc2V0IHRvIHRydWUgKGRlZmF1bHQpLCBhXG4gICAgICogcHlyYW1pZCB3aWxsIGJlIGJ1aWx0IGludGVybmFsbHkgdG8gcHJvdmlkZSBhIGJldHRlciBkb3duc2FtcGxpbmcuXG4gICAgICogQHBhcmFtIHtTdHJpbmd8Qm9vbGVhbn0gW29wdGlvbnMuY3Jvc3NPcmlnaW5Qb2xpY3k9ZmFsc2VdIFZhbGlkIHZhbHVlcyBhcmVcbiAgICAgKiAnQW5vbnltb3VzJywgJ3VzZS1jcmVkZW50aWFscycsIGFuZCBmYWxzZS4gSWYgZmFsc2UsIGltYWdlIHJlcXVlc3RzIHdpbGxcbiAgICAgKiBub3QgdXNlIENPUlMgcHJldmVudGluZyBpbnRlcm5hbCBweXJhbWlkIGJ1aWxkaW5nIGZvciBpbWFnZXMgZnJvbSBvdGhlclxuICAgICAqIGRvbWFpbnMuXG4gICAgICogQHBhcmFtIHtTdHJpbmd8Qm9vbGVhbn0gW29wdGlvbnMuYWpheFdpdGhDcmVkZW50aWFscz1mYWxzZV0gV2hldGhlciB0byBzZXRcbiAgICAgKiB0aGUgd2l0aENyZWRlbnRpYWxzIFhIUiBmbGFnIGZvciBBSkFYIHJlcXVlc3RzICh3aGVuIGxvYWRpbmcgdGlsZSBzb3VyY2VzKS5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUNhbnZhcz10cnVlXSBTZXQgdG8gZmFsc2UgdG8gcHJldmVudCBhbnkgdXNlXG4gICAgICogb2YgdGhlIGNhbnZhcyBBUEkuXG4gICAgICovXG4gICAgJC5JbWFnZVRpbGVTb3VyY2UgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh7XG4gICAgICAgICAgICBidWlsZFB5cmFtaWQ6IHRydWUsXG4gICAgICAgICAgICBjcm9zc09yaWdpblBvbGljeTogZmFsc2UsXG4gICAgICAgICAgICBhamF4V2l0aENyZWRlbnRpYWxzOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZUNhbnZhczogdHJ1ZVxuICAgICAgICB9LCBvcHRpb25zKTtcbiAgICAgICAgJC5UaWxlU291cmNlLmFwcGx5KHRoaXMsIFtvcHRpb25zXSk7XG5cbiAgICB9O1xuXG4gICAgJC5leHRlbmQoJC5JbWFnZVRpbGVTb3VyY2UucHJvdG90eXBlLCAkLlRpbGVTb3VyY2UucHJvdG90eXBlLCAvKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uSW1hZ2VUaWxlU291cmNlLnByb3RvdHlwZSAqL3tcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERldGVybWluZSBpZiB0aGUgZGF0YSBhbmQvb3IgdXJsIGltcGx5IHRoZSBpbWFnZSBzZXJ2aWNlIGlzIHN1cHBvcnRlZCBieVxuICAgICAgICAgKiB0aGlzIHRpbGUgc291cmNlLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IGRhdGFcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbmFsIC0gdXJsXG4gICAgICAgICAqL1xuICAgICAgICBzdXBwb3J0czogZnVuY3Rpb24gKGRhdGEsIHVybCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEudHlwZSAmJiBkYXRhLnR5cGUgPT09IFwiaW1hZ2VcIjtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIHRoZSBvcHRpb25zXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBkYXRhVXJsIC0gdGhlIHVybCB0aGUgaW1hZ2Ugd2FzIHJldHJlaXZlZCBmcm9tLCBpZiBhbnkuXG4gICAgICAgICAqIEByZXR1cm4ge09iamVjdH0gb3B0aW9ucyAtIEEgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBzdWZmaWNpZW50XG4gICAgICAgICAqICAgICAgdG8gY29uZmlndXJlIHRoaXMgdGlsZSBzb3VyY2VzIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlndXJlOiBmdW5jdGlvbiAob3B0aW9ucywgZGF0YVVybCkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXNwb25zaWJsZSBmb3IgcmV0cmlldmluZywgYW5kIGNhY2hpbmcgdGhlXG4gICAgICAgICAqIGltYWdlIG1ldGFkYXRhIHBlcnRpbmVudCB0byB0aGlzIFRpbGVTb3VyY2VzIGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn1cbiAgICAgICAgICovXG4gICAgICAgIGdldEltYWdlSW5mbzogZnVuY3Rpb24gKHVybCkge1xuICAgICAgICAgICAgdmFyIGltYWdlID0gdGhpcy5faW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNyb3NzT3JpZ2luUG9saWN5KSB7XG4gICAgICAgICAgICAgICAgaW1hZ2UuY3Jvc3NPcmlnaW4gPSB0aGlzLmNyb3NzT3JpZ2luUG9saWN5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYWpheFdpdGhDcmVkZW50aWFscykge1xuICAgICAgICAgICAgICAgIGltYWdlLnVzZUNyZWRlbnRpYWxzID0gdGhpcy5hamF4V2l0aENyZWRlbnRpYWxzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkLmFkZEV2ZW50KGltYWdlLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy53aWR0aCA9IGltYWdlLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgICAgICAgICBfdGhpcy5oZWlnaHQgPSBpbWFnZS5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIF90aGlzLmFzcGVjdFJhdGlvID0gX3RoaXMud2lkdGggLyBfdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgX3RoaXMuZGltZW5zaW9ucyA9IG5ldyAkLlBvaW50KF90aGlzLndpZHRoLCBfdGhpcy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIF90aGlzLl90aWxlV2lkdGggPSBfdGhpcy53aWR0aDtcbiAgICAgICAgICAgICAgICBfdGhpcy5fdGlsZUhlaWdodCA9IF90aGlzLmhlaWdodDtcbiAgICAgICAgICAgICAgICBfdGhpcy50aWxlT3ZlcmxhcCA9IDA7XG4gICAgICAgICAgICAgICAgX3RoaXMubWluTGV2ZWwgPSAwO1xuICAgICAgICAgICAgICAgIF90aGlzLmxldmVscyA9IF90aGlzLl9idWlsZExldmVscygpO1xuICAgICAgICAgICAgICAgIF90aGlzLm1heExldmVsID0gX3RoaXMubGV2ZWxzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5yZWFkeSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGlzIGV2ZW50IGlzIGRvY3VtZW50ZWQgZWxzZXdoZXJlLCBpbiBUaWxlU291cmNlXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCgncmVhZHknLCB7dGlsZVNvdXJjZTogX3RoaXN9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkLmFkZEV2ZW50KGltYWdlLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogdGhpcyBldmVudCBpcyBkb2N1bWVudGVkIGVsc2V3aGVyZSwgaW4gVGlsZVNvdXJjZVxuICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoJ29wZW4tZmFpbGVkJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkVycm9yIGxvYWRpbmcgaW1hZ2UgYXQgXCIgKyB1cmwsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdXJsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0TGV2ZWxTY2FsZTogZnVuY3Rpb24gKGxldmVsKSB7XG4gICAgICAgICAgICB2YXIgbGV2ZWxTY2FsZSA9IE5hTjtcbiAgICAgICAgICAgIGlmIChsZXZlbCA+PSB0aGlzLm1pbkxldmVsICYmIGxldmVsIDw9IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBsZXZlbFNjYWxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWxzW2xldmVsXS53aWR0aCAvXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxldmVsc1t0aGlzLm1heExldmVsXS53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsZXZlbFNjYWxlO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0TnVtVGlsZXM6IGZ1bmN0aW9uIChsZXZlbCkge1xuICAgICAgICAgICAgdmFyIHNjYWxlID0gdGhpcy5nZXRMZXZlbFNjYWxlKGxldmVsKTtcbiAgICAgICAgICAgIGlmIChzY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCgxLCAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KDAsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbFxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50XG4gICAgICAgICAqL1xuICAgICAgICBnZXRUaWxlQXRQb2ludDogZnVuY3Rpb24gKGxldmVsLCBwb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KDAsIDApO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0cmlldmVzIGEgdGlsZSB1cmxcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBsZXZlbCBMZXZlbCBvZiB0aGUgdGlsZVxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0geCB4IGNvb3JkaW5hdGUgb2YgdGhlIHRpbGVcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IHkgeSBjb29yZGluYXRlIG9mIHRoZSB0aWxlXG4gICAgICAgICAqL1xuICAgICAgICBnZXRUaWxlVXJsOiBmdW5jdGlvbiAobGV2ZWwsIHgsIHkpIHtcbiAgICAgICAgICAgIHZhciB1cmwgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGxldmVsID49IHRoaXMubWluTGV2ZWwgJiYgbGV2ZWwgPD0gdGhpcy5tYXhMZXZlbCkge1xuICAgICAgICAgICAgICAgIHVybCA9IHRoaXMubGV2ZWxzW2xldmVsXS51cmw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXJsO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0cmlldmVzIGEgdGlsZSBjb250ZXh0IDJEXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gbGV2ZWwgTGV2ZWwgb2YgdGhlIHRpbGVcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IHggeCBjb29yZGluYXRlIG9mIHRoZSB0aWxlXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvZiB0aGUgdGlsZVxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0Q29udGV4dDJEOiBmdW5jdGlvbiAobGV2ZWwsIHgsIHkpIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChsZXZlbCA+PSB0aGlzLm1pbkxldmVsICYmIGxldmVsIDw9IHRoaXMubWF4TGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0ID0gdGhpcy5sZXZlbHNbbGV2ZWxdLmNvbnRleHQyRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIHByaXZhdGVcbiAgICAgICAgLy9cbiAgICAgICAgLy8gQnVpbGRzIHRoZSBkaWZmZXJlbnRzIGxldmVscyBvZiB0aGUgcHlyYW1pZCBpZiBwb3NzaWJsZVxuICAgICAgICAvLyAoaS5lLiBpZiBjYW52YXMgQVBJIGVuYWJsZWQgYW5kIG5vIGNhbnZhcyB0YWludGluZyBpc3N1ZSkuXG4gICAgICAgIF9idWlsZExldmVsczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGxldmVscyA9IFt7XG4gICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5faW1hZ2Uuc3JjLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5faW1hZ2UubmF0dXJhbFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuX2ltYWdlLm5hdHVyYWxIZWlnaHRcbiAgICAgICAgICAgICAgICB9XTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmJ1aWxkUHlyYW1pZCB8fCAhJC5zdXBwb3J0c0NhbnZhcyB8fCAhdGhpcy51c2VDYW52YXMpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSBpbWFnZSBhbnltb3JlLiBBbGxvd3MgaXQgdG8gYmUgR0MuXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybiBsZXZlbHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50V2lkdGggPSB0aGlzLl9pbWFnZS5uYXR1cmFsV2lkdGg7XG4gICAgICAgICAgICB2YXIgY3VycmVudEhlaWdodCA9IHRoaXMuX2ltYWdlLm5hdHVyYWxIZWlnaHQ7XG5cbiAgICAgICAgICAgIHZhciBiaWdDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgdmFyIGJpZ0NvbnRleHQgPSBiaWdDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgICAgICAgICBiaWdDYW52YXMud2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgICAgICAgICBiaWdDYW52YXMuaGVpZ2h0ID0gY3VycmVudEhlaWdodDtcbiAgICAgICAgICAgIGJpZ0NvbnRleHQuZHJhd0ltYWdlKHRoaXMuX2ltYWdlLCAwLCAwLCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpO1xuICAgICAgICAgICAgLy8gV2UgY2FjaGUgdGhlIGNvbnRleHQgb2YgdGhlIGhpZ2hlc3QgbGV2ZWwgYmVjYXVzZSB0aGUgYnJvd3NlclxuICAgICAgICAgICAgLy8gaXMgYSBsb3QgZmFzdGVyIGF0IGRvd25zYW1wbGluZyBzb21ldGhpbmcgaXQgYWxyZWFkeSBoYXNcbiAgICAgICAgICAgIC8vIGRvd25zYW1wbGVkIGJlZm9yZS5cbiAgICAgICAgICAgIGxldmVsc1swXS5jb250ZXh0MkQgPSBiaWdDb250ZXh0O1xuICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgaW1hZ2UgYW55bW9yZS4gQWxsb3dzIGl0IHRvIGJlIEdDLlxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuXG4gICAgICAgICAgICBpZiAoJC5pc0NhbnZhc1RhaW50ZWQoYmlnQ2FudmFzKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYW52YXMgaXMgdGFpbnRlZCwgd2UgY2FuJ3QgY29tcHV0ZSB0aGUgcHlyYW1pZC5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGV2ZWxzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBXZSBidWlsZCBzbWFsbGVyIGxldmVscyB1bnRpbCBlaXRoZXIgd2lkdGggb3IgaGVpZ2h0IGJlY29tZXNcbiAgICAgICAgICAgIC8vIDEgcGl4ZWwgd2lkZS5cbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50V2lkdGggPj0gMiAmJiBjdXJyZW50SGVpZ2h0ID49IDIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50V2lkdGggPSBNYXRoLmZsb29yKGN1cnJlbnRXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRIZWlnaHQgPSBNYXRoLmZsb29yKGN1cnJlbnRIZWlnaHQgLyAyKTtcbiAgICAgICAgICAgICAgICB2YXIgc21hbGxDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgICAgIHZhciBzbWFsbENvbnRleHQgPSBzbWFsbENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICAgICAgICAgICAgc21hbGxDYW52YXMud2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgc21hbGxDYW52YXMuaGVpZ2h0ID0gY3VycmVudEhlaWdodDtcbiAgICAgICAgICAgICAgICBzbWFsbENvbnRleHQuZHJhd0ltYWdlKGJpZ0NhbnZhcywgMCwgMCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIGxldmVscy5zcGxpY2UoMCwgMCwge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0MkQ6IHNtYWxsQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGN1cnJlbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjdXJyZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBiaWdDYW52YXMgPSBzbWFsbENhbnZhcztcbiAgICAgICAgICAgICAgICBiaWdDb250ZXh0ID0gc21hbGxDb250ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxldmVscztcbiAgICAgICAgfVxuICAgIH0pO1xuXG59KE9wZW5TZWFkcmFnb24pKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBUaWxlU291cmNlQ29sbGVjdGlvblxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4oZnVuY3Rpb24oICQgKXtcblxuLy8gZGVwcmVjYXRlZFxuJC5UaWxlU291cmNlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uKCB0aWxlU2l6ZSwgdGlsZVNvdXJjZXMsIHJvd3MsIGxheW91dCAgKSB7XG4gICAgJC5jb25zb2xlLmVycm9yKCdUaWxlU291cmNlQ29sbGVjdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgV29ybGQgaW5zdGVhZCcpO1xufTtcblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBCdXR0b25cbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQW4gZW51bWVyYXRpb24gb2YgYnV0dG9uIHN0YXRlc1xuICogQG1lbWJlciBCdXR0b25TdGF0ZVxuICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAqIEBzdGF0aWNcbiAqIEB0eXBlIHtPYmplY3R9XG4gKiBAcHJvcGVydHkge051bWJlcn0gUkVTVFxuICogQHByb3BlcnR5IHtOdW1iZXJ9IEdST1VQXG4gKiBAcHJvcGVydHkge051bWJlcn0gSE9WRVJcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBET1dOXG4gKi9cbiQuQnV0dG9uU3RhdGUgPSB7XG4gICAgUkVTVDogICAwLFxuICAgIEdST1VQOiAgMSxcbiAgICBIT1ZFUjogIDIsXG4gICAgRE9XTjogICAzXG59O1xuXG4vKipcbiAqIEBjbGFzcyBCdXR0b25cbiAqIEBjbGFzc2Rlc2MgTWFuYWdlcyBldmVudHMsIGhvdmVyIHN0YXRlcyBmb3IgaW5kaXZpZHVhbCBidXR0b25zLCB0b29sLXRpcHMsIGFzIHdlbGxcbiAqIGFzIGZhZGluZyB0aGUgYnV0dG9ucyBvdXQgd2hlbiB0aGUgdXNlciBoYXMgbm90IGludGVyYWN0ZWQgd2l0aCB0aGVtXG4gKiBmb3IgYSBzcGVjaWZpZWQgcGVyaW9kLlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAZXh0ZW5kcyBPcGVuU2VhZHJhZ29uLkV2ZW50U291cmNlXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtFbGVtZW50fSBbb3B0aW9ucy5lbGVtZW50PW51bGxdIEVsZW1lbnQgdG8gdXNlIGFzIHRoZSBidXR0b24uIElmIG5vdCBzcGVjaWZpZWQsIGFuIEhUTUwgJmx0O2J1dHRvbiZndDsgZWxlbWVudCBpcyBjcmVhdGVkLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnRvb2x0aXA9bnVsbF0gUHJvdmlkZXMgY29udGV4dCBoZWxwIGZvciB0aGUgYnV0dG9uIHdoZW4gdGhlXG4gKiAgdXNlciBob3ZlcnMgb3ZlciBpdC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5zcmNSZXN0PW51bGxdIFVSTCBvZiBpbWFnZSB0byB1c2UgaW4gJ3Jlc3QnIHN0YXRlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLnNyY0dyb3VwPW51bGxdIFVSTCBvZiBpbWFnZSB0byB1c2UgaW4gJ3VwJyBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5zcmNIb3Zlcj1udWxsXSBVUkwgb2YgaW1hZ2UgdG8gdXNlIGluICdob3Zlcicgc3RhdGUuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuc3JjRG93bj1udWxsXSBVUkwgb2YgaW1hZ2UgdG8gdXNlIGluICdkb3duJyBzdGF0ZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5mYWRlRGVsYXk9MF0gSG93IGxvbmcgdG8gd2FpdCBiZWZvcmUgZmFkaW5nLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmZhZGVMZW5ndGg9MjAwMF0gSG93IGxvbmcgc2hvdWxkIGl0IHRha2UgdG8gZmFkZSB0aGUgYnV0dG9uLlxuICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gW29wdGlvbnMub25QcmVzcz1udWxsXSBFdmVudCBoYW5kbGVyIGNhbGxiYWNrIGZvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5CdXR0b24uZXZlbnQ6cHJlc3N9LlxuICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLkV2ZW50SGFuZGxlcn0gW29wdGlvbnMub25SZWxlYXNlPW51bGxdIEV2ZW50IGhhbmRsZXIgY2FsbGJhY2sgZm9yIHtAbGluayBPcGVuU2VhZHJhZ29uLkJ1dHRvbi5ldmVudDpyZWxlYXNlfS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLm9uQ2xpY2s9bnVsbF0gRXZlbnQgaGFuZGxlciBjYWxsYmFjayBmb3Ige0BsaW5rIE9wZW5TZWFkcmFnb24uQnV0dG9uLmV2ZW50OmNsaWNrfS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLm9uRW50ZXI9bnVsbF0gRXZlbnQgaGFuZGxlciBjYWxsYmFjayBmb3Ige0BsaW5rIE9wZW5TZWFkcmFnb24uQnV0dG9uLmV2ZW50OmVudGVyfS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5FdmVudEhhbmRsZXJ9IFtvcHRpb25zLm9uRXhpdD1udWxsXSBFdmVudCBoYW5kbGVyIGNhbGxiYWNrIGZvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5CdXR0b24uZXZlbnQ6ZXhpdH0uXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5vbkZvY3VzPW51bGxdIEV2ZW50IGhhbmRsZXIgY2FsbGJhY2sgZm9yIHtAbGluayBPcGVuU2VhZHJhZ29uLkJ1dHRvbi5ldmVudDpmb2N1c30uXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uRXZlbnRIYW5kbGVyfSBbb3B0aW9ucy5vbkJsdXI9bnVsbF0gRXZlbnQgaGFuZGxlciBjYWxsYmFjayBmb3Ige0BsaW5rIE9wZW5TZWFkcmFnb24uQnV0dG9uLmV2ZW50OmJsdXJ9LlxuICovXG4kLkJ1dHRvbiA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICQuRXZlbnRTb3VyY2UuY2FsbCggdGhpcyApO1xuXG4gICAgJC5leHRlbmQoIHRydWUsIHRoaXMsIHtcblxuICAgICAgICB0b29sdGlwOiAgICAgICAgICAgIG51bGwsXG4gICAgICAgIHNyY1Jlc3Q6ICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgc3JjR3JvdXA6ICAgICAgICAgICBudWxsLFxuICAgICAgICBzcmNIb3ZlcjogICAgICAgICAgIG51bGwsXG4gICAgICAgIHNyY0Rvd246ICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgY2xpY2tUaW1lVGhyZXNob2xkOiAkLkRFRkFVTFRfU0VUVElOR1MuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6ICQuREVGQVVMVF9TRVRUSU5HUy5jbGlja0Rpc3RUaHJlc2hvbGQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSBmYWRpbmcuXG4gICAgICAgICAqIEBtZW1iZXIge051bWJlcn0gZmFkZURlbGF5XG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkJ1dHRvbiNcbiAgICAgICAgICovXG4gICAgICAgIGZhZGVEZWxheTogICAgICAgICAgMCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhvdyBsb25nIHNob3VsZCBpdCB0YWtlIHRvIGZhZGUgdGhlIGJ1dHRvbi5cbiAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBmYWRlTGVuZ3RoXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkJ1dHRvbiNcbiAgICAgICAgICovXG4gICAgICAgIGZhZGVMZW5ndGg6ICAgICAgICAgMjAwMCxcbiAgICAgICAgb25QcmVzczogICAgICAgICAgICBudWxsLFxuICAgICAgICBvblJlbGVhc2U6ICAgICAgICAgIG51bGwsXG4gICAgICAgIG9uQ2xpY2s6ICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgb25FbnRlcjogICAgICAgICAgICBudWxsLFxuICAgICAgICBvbkV4aXQ6ICAgICAgICAgICAgIG51bGwsXG4gICAgICAgIG9uRm9jdXM6ICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgb25CbHVyOiAgICAgICAgICAgICBudWxsXG5cbiAgICB9LCBvcHRpb25zICk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYnV0dG9uIGVsZW1lbnQuXG4gICAgICogQG1lbWJlciB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkJ1dHRvbiNcbiAgICAgKi9cbiAgICB0aGlzLmVsZW1lbnQgICAgICAgID0gb3B0aW9ucy5lbGVtZW50ICAgfHwgJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcblxuICAgIC8vaWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGUgZWxlbWVudCB0byBiaW5kIHRoZSBjb250cm9sIHRvIGV4cGxpY2l0bHlcbiAgICAvL3RoZW4gZG8gbm90IGFkZCB0aGUgZGVmYXVsdCBjb250cm9sIGltYWdlc1xuICAgIGlmICggIW9wdGlvbnMuZWxlbWVudCApIHtcbiAgICAgICAgdGhpcy5pbWdSZXN0ICAgICAgPSAkLm1ha2VUcmFuc3BhcmVudEltYWdlKCB0aGlzLnNyY1Jlc3QgKTtcbiAgICAgICAgdGhpcy5pbWdHcm91cCAgICAgPSAkLm1ha2VUcmFuc3BhcmVudEltYWdlKCB0aGlzLnNyY0dyb3VwICk7XG4gICAgICAgIHRoaXMuaW1nSG92ZXIgICAgID0gJC5tYWtlVHJhbnNwYXJlbnRJbWFnZSggdGhpcy5zcmNIb3ZlciApO1xuICAgICAgICB0aGlzLmltZ0Rvd24gICAgICA9ICQubWFrZVRyYW5zcGFyZW50SW1hZ2UoIHRoaXMuc3JjRG93biApO1xuXG4gICAgICAgIHRoaXMuaW1nUmVzdC5hbHQgID1cbiAgICAgICAgdGhpcy5pbWdHcm91cC5hbHQgPVxuICAgICAgICB0aGlzLmltZ0hvdmVyLmFsdCA9XG4gICAgICAgIHRoaXMuaW1nRG93bi5hbHQgID1cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcDtcblxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG4gICAgICAgICQuc2V0RWxlbWVudFRvdWNoQWN0aW9uTm9uZSggdGhpcy5lbGVtZW50ICk7XG5cbiAgICAgICAgdGhpcy5pbWdHcm91cC5zdHlsZS5wb3NpdGlvbiA9XG4gICAgICAgIHRoaXMuaW1nSG92ZXIuc3R5bGUucG9zaXRpb24gPVxuICAgICAgICB0aGlzLmltZ0Rvd24uc3R5bGUucG9zaXRpb24gID1cbiAgICAgICAgICAgIFwiYWJzb2x1dGVcIjtcblxuICAgICAgICB0aGlzLmltZ0dyb3VwLnN0eWxlLnRvcCA9XG4gICAgICAgIHRoaXMuaW1nSG92ZXIuc3R5bGUudG9wID1cbiAgICAgICAgdGhpcy5pbWdEb3duLnN0eWxlLnRvcCAgPVxuICAgICAgICAgICAgXCIwcHhcIjtcblxuICAgICAgICB0aGlzLmltZ0dyb3VwLnN0eWxlLmxlZnQgPVxuICAgICAgICB0aGlzLmltZ0hvdmVyLnN0eWxlLmxlZnQgPVxuICAgICAgICB0aGlzLmltZ0Rvd24uc3R5bGUubGVmdCAgPVxuICAgICAgICAgICAgXCIwcHhcIjtcblxuICAgICAgICB0aGlzLmltZ0hvdmVyLnN0eWxlLnZpc2liaWxpdHkgPVxuICAgICAgICB0aGlzLmltZ0Rvd24uc3R5bGUudmlzaWJpbGl0eSAgPVxuICAgICAgICAgICAgXCJoaWRkZW5cIjtcblxuICAgICAgICBpZiAoICQuQnJvd3Nlci52ZW5kb3IgPT0gJC5CUk9XU0VSUy5GSVJFRk9YICAmJiAkLkJyb3dzZXIudmVyc2lvbiA8IDMgKXtcbiAgICAgICAgICAgIHRoaXMuaW1nR3JvdXAuc3R5bGUudG9wID1cbiAgICAgICAgICAgIHRoaXMuaW1nSG92ZXIuc3R5bGUudG9wID1cbiAgICAgICAgICAgIHRoaXMuaW1nRG93bi5zdHlsZS50b3AgID1cbiAgICAgICAgICAgICAgICBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCB0aGlzLmltZ1Jlc3QgKTtcbiAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCB0aGlzLmltZ0dyb3VwICk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCggdGhpcy5pbWdIb3ZlciApO1xuICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoIHRoaXMuaW1nRG93biApO1xuICAgIH1cblxuXG4gICAgdGhpcy5hZGRIYW5kbGVyKCBcInByZXNzXCIsICAgICB0aGlzLm9uUHJlc3MgKTtcbiAgICB0aGlzLmFkZEhhbmRsZXIoIFwicmVsZWFzZVwiLCAgIHRoaXMub25SZWxlYXNlICk7XG4gICAgdGhpcy5hZGRIYW5kbGVyKCBcImNsaWNrXCIsICAgICB0aGlzLm9uQ2xpY2sgKTtcbiAgICB0aGlzLmFkZEhhbmRsZXIoIFwiZW50ZXJcIiwgICAgIHRoaXMub25FbnRlciApO1xuICAgIHRoaXMuYWRkSGFuZGxlciggXCJleGl0XCIsICAgICAgdGhpcy5vbkV4aXQgKTtcbiAgICB0aGlzLmFkZEhhbmRsZXIoIFwiZm9jdXNcIiwgICAgIHRoaXMub25Gb2N1cyApO1xuICAgIHRoaXMuYWRkSGFuZGxlciggXCJibHVyXCIsICAgICAgdGhpcy5vbkJsdXIgKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBidXR0b24ncyBjdXJyZW50IHN0YXRlLlxuICAgICAqIEBtZW1iZXIge09wZW5TZWFkcmFnb24uQnV0dG9uU3RhdGV9IGN1cnJlbnRTdGF0ZVxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkJ1dHRvbiNcbiAgICAgKi9cbiAgICB0aGlzLmN1cnJlbnRTdGF0ZSA9ICQuQnV0dG9uU3RhdGUuR1JPVVA7XG5cbiAgICAvLyBXaGVuIHRoZSBidXR0b24gbGFzdCBiZWdhbiB0byBmYWRlLlxuICAgIHRoaXMuZmFkZUJlZ2luVGltZSAgPSBudWxsO1xuICAgIC8vIFdoZXRoZXIgdGhpcyBidXR0b24gc2hvdWxkIGZhZGUgYWZ0ZXIgdXNlciBzdG9wcyBpbnRlcmFjdGluZyB3aXRoIHRoZSB2aWV3cG9ydC5cbiAgICB0aGlzLnNob3VsZEZhZGUgICAgID0gZmFsc2U7XG5cbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheSAgPSBcImlubGluZS1ibG9ja1wiO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9IFwicmVsYXRpdmVcIjtcbiAgICB0aGlzLmVsZW1lbnQudGl0bGUgICAgICAgICAgPSB0aGlzLnRvb2x0aXA7XG5cbiAgICAvKipcbiAgICAgKiBUcmFja3MgbW91c2UvdG91Y2gva2V5IGV2ZW50cyBvbiB0aGUgYnV0dG9uLlxuICAgICAqIEBtZW1iZXIge09wZW5TZWFkcmFnb24uTW91c2VUcmFja2VyfSB0cmFja2VyXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uI1xuICAgICAqL1xuICAgIHRoaXMudHJhY2tlciA9IG5ldyAkLk1vdXNlVHJhY2tlcih7XG5cbiAgICAgICAgZWxlbWVudDogICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgIGNsaWNrVGltZVRocmVzaG9sZDogdGhpcy5jbGlja1RpbWVUaHJlc2hvbGQsXG4gICAgICAgIGNsaWNrRGlzdFRocmVzaG9sZDogdGhpcy5jbGlja0Rpc3RUaHJlc2hvbGQsXG5cbiAgICAgICAgZW50ZXJIYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICBpZiAoIGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkICkge1xuICAgICAgICAgICAgICAgIGluVG8oIF90aGlzLCAkLkJ1dHRvblN0YXRlLkRPV04gKTtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgY3Vyc29yIGVudGVycyB0aGUgQnV0dG9uIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBAZXZlbnQgZW50ZXJcbiAgICAgICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5CdXR0b259IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIEJ1dHRvbiB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggXCJlbnRlclwiLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfSApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggIWV2ZW50LmJ1dHRvbkRvd25BbnkgKSB7XG4gICAgICAgICAgICAgICAgaW5UbyggX3RoaXMsICQuQnV0dG9uU3RhdGUuSE9WRVIgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBmb2N1c0hhbmRsZXI6IGZ1bmN0aW9uICggZXZlbnQgKSB7XG4gICAgICAgICAgICB0aGlzLmVudGVySGFuZGxlciggZXZlbnQgKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIEJ1dHRvbiBlbGVtZW50IHJlY2VpdmVzIGZvY3VzLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCBmb2N1c1xuICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uXG4gICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLkJ1dHRvbn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgQnV0dG9uIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoIFwiZm9jdXNcIiwgeyBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50IH0gKTtcbiAgICAgICAgfSxcblxuICAgICAgICBleGl0SGFuZGxlcjogZnVuY3Rpb24oIGV2ZW50ICkge1xuICAgICAgICAgICAgb3V0VG8oIF90aGlzLCAkLkJ1dHRvblN0YXRlLkdST1VQICk7XG4gICAgICAgICAgICBpZiAoIGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkICkge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSBjdXJzb3IgbGVhdmVzIHRoZSBCdXR0b24gZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIEBldmVudCBleGl0XG4gICAgICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uXG4gICAgICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQnV0dG9ufSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBCdXR0b24gd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoIFwiZXhpdFwiLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGJsdXJIYW5kbGVyOiBmdW5jdGlvbiAoIGV2ZW50ICkge1xuICAgICAgICAgICAgdGhpcy5leGl0SGFuZGxlciggZXZlbnQgKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIEJ1dHRvbiBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCBibHVyXG4gICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25cbiAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQnV0dG9ufSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBCdXR0b24gd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggXCJibHVyXCIsIHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCB9ICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJlc3NIYW5kbGVyOiBmdW5jdGlvbiAoIGV2ZW50ICkge1xuICAgICAgICAgICAgaW5UbyggX3RoaXMsICQuQnV0dG9uU3RhdGUuRE9XTiApO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiBhIG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkIG9yIHRvdWNoIG9jY3VycyBpbiB0aGUgQnV0dG9uIGVsZW1lbnQuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV2ZW50IHByZXNzXG4gICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25cbiAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQnV0dG9ufSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBCdXR0b24gd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggXCJwcmVzc1wiLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfSApO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbGVhc2VIYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7XG4gICAgICAgICAgICBpZiAoIGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkICYmIGV2ZW50Lmluc2lkZUVsZW1lbnRSZWxlYXNlZCApIHtcbiAgICAgICAgICAgICAgICBvdXRUbyggX3RoaXMsICQuQnV0dG9uU3RhdGUuSE9WRVIgKTtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgbW91c2UgYnV0dG9uIGlzIHJlbGVhc2VkIG9yIHRvdWNoIGVuZHMgaW4gdGhlIEJ1dHRvbiBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV2ZW50IHJlbGVhc2VcbiAgICAgICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5CdXR0b259IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIEJ1dHRvbiB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudCggXCJyZWxlYXNlXCIsIHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCB9ICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBldmVudC5pbnNpZGVFbGVtZW50UHJlc3NlZCApIHtcbiAgICAgICAgICAgICAgICBvdXRUbyggX3RoaXMsICQuQnV0dG9uU3RhdGUuR1JPVVAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5UbyggX3RoaXMsICQuQnV0dG9uU3RhdGUuSE9WRVIgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBjbGlja0hhbmRsZXI6IGZ1bmN0aW9uKCBldmVudCApIHtcbiAgICAgICAgICAgIGlmICggZXZlbnQucXVpY2sgKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gYSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCBhbmQgcmVsZWFzZWQgb3IgdG91Y2ggaXMgaW5pdGlhdGVkIGFuZCBlbmRlZCBpbiB0aGUgQnV0dG9uIGVsZW1lbnQgd2l0aGluIHRoZSB0aW1lIGFuZCBkaXN0YW5jZSB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBAZXZlbnQgY2xpY2tcbiAgICAgICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5CdXR0b259IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIEJ1dHRvbiB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBvcmlnaW5hbEV2ZW50IC0gVGhlIG9yaWdpbmFsIERPTSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgX3RoaXMucmFpc2VFdmVudChcImNsaWNrXCIsIHsgb3JpZ2luYWxFdmVudDogZXZlbnQub3JpZ2luYWxFdmVudCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBrZXlIYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQgKXtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coIFwiJXMgOiBoYW5kbGluZyBrZXkgJXMhXCIsIF90aGlzLnRvb2x0aXAsIGV2ZW50LmtleUNvZGUpO1xuICAgICAgICAgICAgaWYoIDEzID09PSBldmVudC5rZXlDb2RlICl7XG4gICAgICAgICAgICAgICAgLyoqKlxuICAgICAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgYW5kIHJlbGVhc2VkIG9yIHRvdWNoIGlzIGluaXRpYXRlZCBhbmQgZW5kZWQgaW4gdGhlIEJ1dHRvbiBlbGVtZW50IHdpdGhpbiB0aGUgdGltZSBhbmQgZGlzdGFuY2UgdGhyZXNob2xkLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV2ZW50IGNsaWNrXG4gICAgICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uXG4gICAgICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQnV0dG9ufSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBCdXR0b24gd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoIFwiY2xpY2tcIiwgeyBvcmlnaW5hbEV2ZW50OiBldmVudC5vcmlnaW5hbEV2ZW50IH0gKTtcbiAgICAgICAgICAgICAgICAvKioqXG4gICAgICAgICAgICAgICAgICogUmFpc2VkIHdoZW4gdGhlIG1vdXNlIGJ1dHRvbiBpcyByZWxlYXNlZCBvciB0b3VjaCBlbmRzIGluIHRoZSBCdXR0b24gZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIEBldmVudCByZWxlYXNlXG4gICAgICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uXG4gICAgICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uQnV0dG9ufSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBCdXR0b24gd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gb3JpZ2luYWxFdmVudCAtIFRoZSBvcmlnaW5hbCBET00gZXZlbnQuXG4gICAgICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIF90aGlzLnJhaXNlRXZlbnQoIFwicmVsZWFzZVwiLCB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50Lm9yaWdpbmFsRXZlbnQgfSApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIG91dFRvKCB0aGlzLCAkLkJ1dHRvblN0YXRlLlJFU1QgKTtcbn07XG5cbiQuZXh0ZW5kKCAkLkJ1dHRvbi5wcm90b3R5cGUsICQuRXZlbnRTb3VyY2UucHJvdG90eXBlLCAvKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uQnV0dG9uLnByb3RvdHlwZSAqL3tcblxuICAgIC8qKlxuICAgICAqIFRPRE86IERldGVybWluZSB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gZG8gYW5kIGlmIGl0J3MgYWN0dWFsbHlcbiAgICAgKiB1c2VmdWwgYXMgYW4gQVBJIHBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIG5vdGlmeUdyb3VwRW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpblRvKCB0aGlzLCAkLkJ1dHRvblN0YXRlLkdST1VQICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRPRE86IERldGVybWluZSB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gZG8gYW5kIGlmIGl0J3MgYWN0dWFsbHlcbiAgICAgKiB1c2VmdWwgYXMgYW4gQVBJIHBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIG5vdGlmeUdyb3VwRXhpdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIG91dFRvKCB0aGlzLCAkLkJ1dHRvblN0YXRlLlJFU1QgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZGlzYWJsZTogZnVuY3Rpb24oKXtcbiAgICAgICAgdGhpcy5ub3RpZnlHcm91cEV4aXQoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgJC5zZXRFbGVtZW50T3BhY2l0eSggdGhpcy5lbGVtZW50LCAwLjIsIHRydWUgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZW5hYmxlOiBmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgJC5zZXRFbGVtZW50T3BhY2l0eSggdGhpcy5lbGVtZW50LCAxLjAsIHRydWUgKTtcbiAgICAgICAgdGhpcy5ub3RpZnlHcm91cEVudGVyKCk7XG4gICAgfVxuXG59KTtcblxuXG5mdW5jdGlvbiBzY2hlZHVsZUZhZGUoIGJ1dHRvbiApIHtcbiAgICAkLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe1xuICAgICAgICB1cGRhdGVGYWRlKCBidXR0b24gKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmFkZSggYnV0dG9uICkge1xuICAgIHZhciBjdXJyZW50VGltZSxcbiAgICAgICAgZGVsdGFUaW1lLFxuICAgICAgICBvcGFjaXR5O1xuXG4gICAgaWYgKCBidXR0b24uc2hvdWxkRmFkZSApIHtcbiAgICAgICAgY3VycmVudFRpbWUgPSAkLm5vdygpO1xuICAgICAgICBkZWx0YVRpbWUgICA9IGN1cnJlbnRUaW1lIC0gYnV0dG9uLmZhZGVCZWdpblRpbWU7XG4gICAgICAgIG9wYWNpdHkgICAgID0gMS4wIC0gZGVsdGFUaW1lIC8gYnV0dG9uLmZhZGVMZW5ndGg7XG4gICAgICAgIG9wYWNpdHkgICAgID0gTWF0aC5taW4oIDEuMCwgb3BhY2l0eSApO1xuICAgICAgICBvcGFjaXR5ICAgICA9IE1hdGgubWF4KCAwLjAsIG9wYWNpdHkgKTtcblxuICAgICAgICBpZiggYnV0dG9uLmltZ0dyb3VwICl7XG4gICAgICAgICAgICAkLnNldEVsZW1lbnRPcGFjaXR5KCBidXR0b24uaW1nR3JvdXAsIG9wYWNpdHksIHRydWUgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIG9wYWNpdHkgPiAwICkge1xuICAgICAgICAgICAgLy8gZmFkZSBhZ2FpblxuICAgICAgICAgICAgc2NoZWR1bGVGYWRlKCBidXR0b24gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYmVnaW5GYWRpbmcoIGJ1dHRvbiApIHtcbiAgICBidXR0b24uc2hvdWxkRmFkZSA9IHRydWU7XG4gICAgYnV0dG9uLmZhZGVCZWdpblRpbWUgPSAkLm5vdygpICsgYnV0dG9uLmZhZGVEZWxheTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKXtcbiAgICAgICAgc2NoZWR1bGVGYWRlKCBidXR0b24gKTtcbiAgICB9LCBidXR0b24uZmFkZURlbGF5ICk7XG59XG5cbmZ1bmN0aW9uIHN0b3BGYWRpbmcoIGJ1dHRvbiApIHtcbiAgICBidXR0b24uc2hvdWxkRmFkZSA9IGZhbHNlO1xuICAgIGlmKCBidXR0b24uaW1nR3JvdXAgKXtcbiAgICAgICAgJC5zZXRFbGVtZW50T3BhY2l0eSggYnV0dG9uLmltZ0dyb3VwLCAxLjAsIHRydWUgKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGluVG8oIGJ1dHRvbiwgbmV3U3RhdGUgKSB7XG5cbiAgICBpZiggYnV0dG9uLmVsZW1lbnQuZGlzYWJsZWQgKXtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICggbmV3U3RhdGUgPj0gJC5CdXR0b25TdGF0ZS5HUk9VUCAmJlxuICAgICAgICAgYnV0dG9uLmN1cnJlbnRTdGF0ZSA9PSAkLkJ1dHRvblN0YXRlLlJFU1QgKSB7XG4gICAgICAgIHN0b3BGYWRpbmcoIGJ1dHRvbiApO1xuICAgICAgICBidXR0b24uY3VycmVudFN0YXRlID0gJC5CdXR0b25TdGF0ZS5HUk9VUDtcbiAgICB9XG5cbiAgICBpZiAoIG5ld1N0YXRlID49ICQuQnV0dG9uU3RhdGUuSE9WRVIgJiZcbiAgICAgICAgIGJ1dHRvbi5jdXJyZW50U3RhdGUgPT0gJC5CdXR0b25TdGF0ZS5HUk9VUCApIHtcbiAgICAgICAgaWYoIGJ1dHRvbi5pbWdIb3ZlciApe1xuICAgICAgICAgICAgYnV0dG9uLmltZ0hvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbi5jdXJyZW50U3RhdGUgPSAkLkJ1dHRvblN0YXRlLkhPVkVSO1xuICAgIH1cblxuICAgIGlmICggbmV3U3RhdGUgPj0gJC5CdXR0b25TdGF0ZS5ET1dOICYmXG4gICAgICAgICBidXR0b24uY3VycmVudFN0YXRlID09ICQuQnV0dG9uU3RhdGUuSE9WRVIgKSB7XG4gICAgICAgIGlmKCBidXR0b24uaW1nRG93biApe1xuICAgICAgICAgICAgYnV0dG9uLmltZ0Rvd24uc3R5bGUudmlzaWJpbGl0eSA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uLmN1cnJlbnRTdGF0ZSA9ICQuQnV0dG9uU3RhdGUuRE9XTjtcbiAgICB9XG59XG5cblxuZnVuY3Rpb24gb3V0VG8oIGJ1dHRvbiwgbmV3U3RhdGUgKSB7XG5cbiAgICBpZiggYnV0dG9uLmVsZW1lbnQuZGlzYWJsZWQgKXtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICggbmV3U3RhdGUgPD0gJC5CdXR0b25TdGF0ZS5IT1ZFUiAmJlxuICAgICAgICAgYnV0dG9uLmN1cnJlbnRTdGF0ZSA9PSAkLkJ1dHRvblN0YXRlLkRPV04gKSB7XG4gICAgICAgIGlmKCBidXR0b24uaW1nRG93biApe1xuICAgICAgICAgICAgYnV0dG9uLmltZ0Rvd24uc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uLmN1cnJlbnRTdGF0ZSA9ICQuQnV0dG9uU3RhdGUuSE9WRVI7XG4gICAgfVxuXG4gICAgaWYgKCBuZXdTdGF0ZSA8PSAkLkJ1dHRvblN0YXRlLkdST1VQICYmXG4gICAgICAgICBidXR0b24uY3VycmVudFN0YXRlID09ICQuQnV0dG9uU3RhdGUuSE9WRVIgKSB7XG4gICAgICAgIGlmKCBidXR0b24uaW1nSG92ZXIgKXtcbiAgICAgICAgICAgIGJ1dHRvbi5pbWdIb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24uY3VycmVudFN0YXRlID0gJC5CdXR0b25TdGF0ZS5HUk9VUDtcbiAgICB9XG5cbiAgICBpZiAoIG5ld1N0YXRlIDw9ICQuQnV0dG9uU3RhdGUuUkVTVCAmJlxuICAgICAgICAgYnV0dG9uLmN1cnJlbnRTdGF0ZSA9PSAkLkJ1dHRvblN0YXRlLkdST1VQICkge1xuICAgICAgICBiZWdpbkZhZGluZyggYnV0dG9uICk7XG4gICAgICAgIGJ1dHRvbi5jdXJyZW50U3RhdGUgPSAkLkJ1dHRvblN0YXRlLlJFU1Q7XG4gICAgfVxufVxuXG5cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBCdXR0b25Hcm91cFxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4oZnVuY3Rpb24oICQgKXtcbi8qKlxuICogQGNsYXNzIEJ1dHRvbkdyb3VwXG4gKiBAY2xhc3NkZXNjIE1hbmFnZXMgZXZlbnRzIG9uIGdyb3VwcyBvZiBidXR0b25zLlxuICpcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIEEgZGljdGlvbmFyeSBvZiBzZXR0aW5ncyBhcHBsaWVkIGFnYWluc3QgdGhlIGVudGlyZSBncm91cCBvZiBidXR0b25zLlxuICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5idXR0b25zIEFycmF5IG9mIGJ1dHRvbnNcbiAqIEBwYXJhbSB7RWxlbWVudH0gW29wdGlvbnMuZWxlbWVudF0gRWxlbWVudCB0byB1c2UgYXMgdGhlIGNvbnRhaW5lclxuICoqL1xuJC5CdXR0b25Hcm91cCA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG4gICAgJC5leHRlbmQoIHRydWUsIHRoaXMsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGJ1dHRvbnMgdGhlbXNlbHZlcy5cbiAgICAgICAgICogQG1lbWJlciB7QXJyYXl9IGJ1dHRvbnNcbiAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uQnV0dG9uR3JvdXAjXG4gICAgICAgICAqL1xuICAgICAgICBidXR0b25zOiAgICAgICAgICAgIFtdLFxuICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6ICQuREVGQVVMVF9TRVRUSU5HUy5jbGlja1RpbWVUaHJlc2hvbGQsXG4gICAgICAgIGNsaWNrRGlzdFRocmVzaG9sZDogJC5ERUZBVUxUX1NFVFRJTkdTLmNsaWNrRGlzdFRocmVzaG9sZCxcbiAgICAgICAgbGFiZWxUZXh0OiAgICAgICAgICBcIlwiXG4gICAgfSwgb3B0aW9ucyApO1xuXG4gICAgLy8gY29weSB0aGUgYnV0dG9uIGVsZW1lbnRzICBUT0RPOiBXaHk/XG4gICAgdmFyIGJ1dHRvbnMgPSB0aGlzLmJ1dHRvbnMuY29uY2F0KFtdKSxcbiAgICAgICAgX3RoaXMgPSB0aGlzLFxuICAgICAgICBpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNoYXJlZCBjb250YWluZXIgZm9yIHRoZSBidXR0b25zLlxuICAgICAqIEBtZW1iZXIge0VsZW1lbnR9IGVsZW1lbnRcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5CdXR0b25Hcm91cCNcbiAgICAgKi9cbiAgICB0aGlzLmVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQgfHwgJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwiZGl2XCIgKTtcblxuICAgIC8vIFRPRE8gV2hhdCBpZiB0aGVyZSBJUyBhbiBvcHRpb25zLmdyb3VwIHNwZWNpZmllZD9cbiAgICBpZiggIW9wdGlvbnMuZ3JvdXAgKXtcbiAgICAgICAgdGhpcy5sYWJlbCAgID0gJC5tYWtlTmV1dHJhbEVsZW1lbnQoIFwibGFiZWxcIiApO1xuICAgICAgICAvL1RPRE86IHN1cHBvcnQgbGFiZWxzIGZvciBCdXR0b25Hcm91cHNcbiAgICAgICAgLy90aGlzLmxhYmVsLmlubmVySFRNTCA9IHRoaXMubGFiZWxUZXh0O1xuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCggdGhpcy5sYWJlbCApO1xuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoIGJ1dHRvbnNbIGkgXS5lbGVtZW50ICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAkLnNldEVsZW1lbnRUb3VjaEFjdGlvbk5vbmUoIHRoaXMuZWxlbWVudCApO1xuXG4gICAgLyoqXG4gICAgICogVHJhY2tzIG1vdXNlL3RvdWNoL2tleSBldmVudHMgYWNjcm9zcyB0aGUgZ3JvdXAgb2YgYnV0dG9ucy5cbiAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLk1vdXNlVHJhY2tlcn0gdHJhY2tlclxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkJ1dHRvbkdyb3VwI1xuICAgICAqL1xuICAgIHRoaXMudHJhY2tlciA9IG5ldyAkLk1vdXNlVHJhY2tlcih7XG4gICAgICAgIGVsZW1lbnQ6ICAgICAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICBjbGlja1RpbWVUaHJlc2hvbGQ6IHRoaXMuY2xpY2tUaW1lVGhyZXNob2xkLFxuICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICBlbnRlckhhbmRsZXI6IGZ1bmN0aW9uICggZXZlbnQgKSB7XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgX3RoaXMuYnV0dG9ucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5idXR0b25zWyBpIF0ubm90aWZ5R3JvdXBFbnRlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleGl0SGFuZGxlcjogZnVuY3Rpb24gKCBldmVudCApIHtcbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgaWYgKCAhZXZlbnQuaW5zaWRlRWxlbWVudFByZXNzZWQgKSB7XG4gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBfdGhpcy5idXR0b25zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5idXR0b25zWyBpIF0ubm90aWZ5R3JvdXBFeGl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pO1xufTtcblxuLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLkJ1dHRvbkdyb3VwLnByb3RvdHlwZSAqL1xuJC5CdXR0b25Hcm91cC5wcm90b3R5cGUgPSB7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIHVzZWQgb24gdGhlIHB1YmxpYyBBUEkgYW5kIGlmIGEgbW9yZSB1c2VmdWxcbiAgICAgKiBhcGkgY2FuIGJlIGNyZWF0ZWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBlbXVsYXRlRW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYWNrZXIuZW50ZXJIYW5kbGVyKCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIgfSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIHVzZWQgb24gdGhlIHB1YmxpYyBBUEkgYW5kIGlmIGEgbW9yZSB1c2VmdWxcbiAgICAgKiBhcGkgY2FuIGJlIGNyZWF0ZWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBlbXVsYXRlRXhpdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhY2tlci5leGl0SGFuZGxlciggeyBldmVudFNvdXJjZTogdGhpcy50cmFja2VyIH0gKTtcbiAgICB9XG59O1xuXG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gUmVjdFxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICogICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiBDb2RlUGxleCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tXG4gKiAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SU1xuICogXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SXG4gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFRcbiAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SXG4gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xuICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTXG4gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG4oZnVuY3Rpb24oJCkge1xuXG4vKipcbiAqIEBjbGFzcyBSZWN0XG4gKiBAY2xhc3NkZXNjIEEgUmVjdGFuZ2xlIGlzIGRlc2NyaWJlZCBieSBpdCB0b3AgbGVmdCBjb29yZGluYXRlcyAoeCwgeSksIHdpZHRoLFxuICogaGVpZ2h0IGFuZCBkZWdyZWVzIG9mIHJvdGF0aW9uIGFyb3VuZCAoeCwgeSkuXG4gKiBOb3RlIHRoYXQgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQgaXMgdGhlIG9uZSBjb21tb25seSB1c2VkIHdpdGggaW1hZ2VzOlxuICogeCBpbmNyZWFzZXMgd2hlbiBnb2luZyB0byB0aGUgcmlnaHRcbiAqIHkgaW5jcmVhc2VzIHdoZW4gZ29pbmcgdG8gdGhlIGJvdHRvbVxuICogZGVncmVlcyBpbmNyZWFzZXMgY2xvY2t3aXNlIHdpdGggMCBiZWluZyB0aGUgaG9yaXpvbnRhbFxuICpcbiAqIFRoZSBjb25zdHJ1Y3RvciBub3JtYWxpemVzIHRoZSByZWN0YW5nbGUgdG8gYWx3YXlzIGhhdmUgMCA8PSBkZWdyZWVzIDwgOTBcbiAqXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQHBhcmFtIHtOdW1iZXJ9IFt4PTBdIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd4Jy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbeT0wXSBUaGUgdmVjdG9yIGNvbXBvbmVudCAneScuXG4gKiBAcGFyYW0ge051bWJlcn0gW3dpZHRoPTBdIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd3aWR0aCcuXG4gKiBAcGFyYW0ge051bWJlcn0gW2hlaWdodD0wXSBUaGUgdmVjdG9yIGNvbXBvbmVudCAnaGVpZ2h0Jy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbZGVncmVlcz0wXSBSb3RhdGlvbiBvZiB0aGUgcmVjdGFuZ2xlIGFyb3VuZCAoeCx5KSBpbiBkZWdyZWVzLlxuICovXG4kLlJlY3QgPSBmdW5jdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0LCBkZWdyZWVzKSB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlY3RvciBjb21wb25lbnQgJ3gnLlxuICAgICAqIEBtZW1iZXIge051bWJlcn0geFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlJlY3QjXG4gICAgICovXG4gICAgdGhpcy54ID0gdHlwZW9mKHgpID09PSBcIm51bWJlclwiID8geCA6IDA7XG4gICAgLyoqXG4gICAgICogVGhlIHZlY3RvciBjb21wb25lbnQgJ3knLlxuICAgICAqIEBtZW1iZXIge051bWJlcn0geVxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlJlY3QjXG4gICAgICovXG4gICAgdGhpcy55ID0gdHlwZW9mKHkpID09PSBcIm51bWJlclwiID8geSA6IDA7XG4gICAgLyoqXG4gICAgICogVGhlIHZlY3RvciBjb21wb25lbnQgJ3dpZHRoJy5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IHdpZHRoXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uUmVjdCNcbiAgICAgKi9cbiAgICB0aGlzLndpZHRoICA9IHR5cGVvZih3aWR0aCkgPT09IFwibnVtYmVyXCIgPyB3aWR0aCA6IDA7XG4gICAgLyoqXG4gICAgICogVGhlIHZlY3RvciBjb21wb25lbnQgJ2hlaWdodCcuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBoZWlnaHRcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5SZWN0I1xuICAgICAqL1xuICAgIHRoaXMuaGVpZ2h0ID0gdHlwZW9mKGhlaWdodCkgPT09IFwibnVtYmVyXCIgPyBoZWlnaHQgOiAwO1xuXG4gICAgdGhpcy5kZWdyZWVzID0gdHlwZW9mKGRlZ3JlZXMpID09PSBcIm51bWJlclwiID8gZGVncmVlcyA6IDA7XG5cbiAgICAvLyBOb3JtYWxpemVzIHRoZSByZWN0YW5nbGUuXG4gICAgdGhpcy5kZWdyZWVzID0gdGhpcy5kZWdyZWVzICUgMzYwO1xuICAgIGlmICh0aGlzLmRlZ3JlZXMgPCAwKSB7XG4gICAgICAgIHRoaXMuZGVncmVlcyArPSAzNjA7XG4gICAgfVxuICAgIHZhciBuZXdUb3BMZWZ0LCBuZXdXaWR0aDtcbiAgICBpZiAodGhpcy5kZWdyZWVzID49IDI3MCkge1xuICAgICAgICBuZXdUb3BMZWZ0ID0gdGhpcy5nZXRUb3BSaWdodCgpO1xuICAgICAgICB0aGlzLnggPSBuZXdUb3BMZWZ0Lng7XG4gICAgICAgIHRoaXMueSA9IG5ld1RvcExlZnQueTtcbiAgICAgICAgbmV3V2lkdGggPSB0aGlzLmhlaWdodDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLndpZHRoO1xuICAgICAgICB0aGlzLndpZHRoID0gbmV3V2lkdGg7XG4gICAgICAgIHRoaXMuZGVncmVlcyAtPSAyNzA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZ3JlZXMgPj0gMTgwKSB7XG4gICAgICAgIG5ld1RvcExlZnQgPSB0aGlzLmdldEJvdHRvbVJpZ2h0KCk7XG4gICAgICAgIHRoaXMueCA9IG5ld1RvcExlZnQueDtcbiAgICAgICAgdGhpcy55ID0gbmV3VG9wTGVmdC55O1xuICAgICAgICB0aGlzLmRlZ3JlZXMgLT0gMTgwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kZWdyZWVzID49IDkwKSB7XG4gICAgICAgIG5ld1RvcExlZnQgPSB0aGlzLmdldEJvdHRvbUxlZnQoKTtcbiAgICAgICAgdGhpcy54ID0gbmV3VG9wTGVmdC54O1xuICAgICAgICB0aGlzLnkgPSBuZXdUb3BMZWZ0Lnk7XG4gICAgICAgIG5ld1dpZHRoID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy53aWR0aDtcbiAgICAgICAgdGhpcy53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICB0aGlzLmRlZ3JlZXMgLT0gOTA7XG4gICAgfVxufTtcblxuLyoqXG4gKiBCdWlsZHMgYSByZWN0YW5nbGUgaGF2aW5nIHRoZSAzIHNwZWNpZmllZCBwb2ludHMgYXMgc3VtbWl0cy5cbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlJlY3RcbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gdG9wTGVmdFxuICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSB0b3BSaWdodFxuICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBib3R0b21MZWZ0XG4gKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fVxuICovXG4kLlJlY3QuZnJvbVN1bW1pdHMgPSBmdW5jdGlvbih0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCkge1xuICAgIHZhciB3aWR0aCA9IHRvcExlZnQuZGlzdGFuY2VUbyh0b3BSaWdodCk7XG4gICAgdmFyIGhlaWdodCA9IHRvcExlZnQuZGlzdGFuY2VUbyhib3R0b21MZWZ0KTtcbiAgICB2YXIgZGlmZiA9IHRvcFJpZ2h0Lm1pbnVzKHRvcExlZnQpO1xuICAgIHZhciByYWRpYW5zID0gTWF0aC5hdGFuKGRpZmYueSAvIGRpZmYueCk7XG4gICAgaWYgKGRpZmYueCA8IDApIHtcbiAgICAgICAgcmFkaWFucyArPSBNYXRoLlBJO1xuICAgIH0gZWxzZSBpZiAoZGlmZi55IDwgMCkge1xuICAgICAgICByYWRpYW5zICs9IDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICByZXR1cm4gbmV3ICQuUmVjdChcbiAgICAgICAgdG9wTGVmdC54LFxuICAgICAgICB0b3BMZWZ0LnksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHJhZGlhbnMgLyBNYXRoLlBJICogMTgwKTtcbn07XG5cbi8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5SZWN0LnByb3RvdHlwZSAqL1xuJC5SZWN0LnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBhIGR1cGxpY2F0ZSBvZiB0aGlzIFJlY3RcbiAgICAgKi9cbiAgICBjbG9uZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgdGhpcy54LFxuICAgICAgICAgICAgdGhpcy55LFxuICAgICAgICAgICAgdGhpcy53aWR0aCxcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5kZWdyZWVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVGhlIGFzcGVjdCByYXRpbyBpcyBzaW1wbHkgdGhlIHJhdGlvIG9mIHdpZHRoIHRvIGhlaWdodC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0LlxuICAgICAqL1xuICAgIGdldEFzcGVjdFJhdGlvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkdGggLyB0aGlzLmhlaWdodDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1cHBlci1sZWZ0IGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIGFzIGFcbiAgICAgKiBwb2ludC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH0gVGhlIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyLWxlZnQgY29ybmVyIG9mXG4gICAgICogIHRoZSByZWN0YW5nbGUuXG4gICAgICovXG4gICAgZ2V0VG9wTGVmdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgIHRoaXMueCxcbiAgICAgICAgICAgIHRoaXMueVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZSBhcyBhXG4gICAgICogcG9pbnQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBjb29yZGluYXRlIG9mIHRoZSBib3R0b20tcmlnaHQgY29ybmVyIG9mXG4gICAgICogIHRoZSByZWN0YW5nbGUuXG4gICAgICovXG4gICAgZ2V0Qm90dG9tUmlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQodGhpcy54ICsgdGhpcy53aWR0aCwgdGhpcy55ICsgdGhpcy5oZWlnaHQpXG4gICAgICAgICAgICAucm90YXRlKHRoaXMuZGVncmVlcywgdGhpcy5nZXRUb3BMZWZ0KCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1yaWdodCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZSBhcyBhXG4gICAgICogcG9pbnQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBjb29yZGluYXRlIG9mIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mXG4gICAgICogIHRoZSByZWN0YW5nbGUuXG4gICAgICovXG4gICAgZ2V0VG9wUmlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQodGhpcy54ICsgdGhpcy53aWR0aCwgdGhpcy55KVxuICAgICAgICAgICAgLnJvdGF0ZSh0aGlzLmRlZ3JlZXMsIHRoaXMuZ2V0VG9wTGVmdCgpKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBib3R0b20tbGVmdCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZSBhcyBhXG4gICAgICogcG9pbnQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBjb29yZGluYXRlIG9mIHRoZSBib3R0b20tbGVmdCBjb3JuZXIgb2ZcbiAgICAgKiAgdGhlIHJlY3RhbmdsZS5cbiAgICAgKi9cbiAgICBnZXRCb3R0b21MZWZ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KHRoaXMueCwgdGhpcy55ICsgdGhpcy5oZWlnaHQpXG4gICAgICAgICAgICAucm90YXRlKHRoaXMuZGVncmVlcywgdGhpcy5nZXRUb3BMZWZ0KCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgY2VudGVyIG9mIHRoZSByZWN0YW5nbGUuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBjZW50ZXIgb2YgdGhlIHJlY3RhbmdsZSBhcyByZXByZXNlbnRlZFxuICAgICAqICBhcyByZXByZXNlbnRlZCBieSBhIDItZGltZW5zaW9uYWwgdmVjdG9yICh4LHkpXG4gICAgICovXG4gICAgZ2V0Q2VudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgdGhpcy54ICsgdGhpcy53aWR0aCAvIDIuMCxcbiAgICAgICAgICAgIHRoaXMueSArIHRoaXMuaGVpZ2h0IC8gMi4wXG4gICAgICAgICkucm90YXRlKHRoaXMuZGVncmVlcywgdGhpcy5nZXRUb3BMZWZ0KCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGNvbXBvbmVudCBhcyBhIHZlY3RvciBPcGVuU2VhZHJhZ29uLlBvaW50XG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSAyIGRpbWVuc2lvbmFsIHZlY3RvciByZXByZXNlbnRpbmcgdGhlXG4gICAgICogIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGUuXG4gICAgICovXG4gICAgZ2V0U2l6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdHdvIFJlY3RhbmdsZXMgaGF2ZSBlcXVpdmFsZW50IGNvbXBvbmVudHMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlJlY3R9IHJlY3RhbmdsZSBUaGUgUmVjdGFuZ2xlIHRvIGNvbXBhcmUgdG8uXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn0gJ3RydWUnIGlmIGFsbCBjb21wb25lbnRzIGFyZSBlcXVhbCwgb3RoZXJ3aXNlICdmYWxzZScuXG4gICAgICovXG4gICAgZXF1YWxzOiBmdW5jdGlvbihvdGhlcikge1xuICAgICAgICByZXR1cm4gKG90aGVyIGluc3RhbmNlb2YgJC5SZWN0KSAmJlxuICAgICAgICAgICAgdGhpcy54ID09PSBvdGhlci54ICYmXG4gICAgICAgICAgICB0aGlzLnkgPT09IG90aGVyLnkgJiZcbiAgICAgICAgICAgIHRoaXMud2lkdGggPT09IG90aGVyLndpZHRoICYmXG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9PT0gb3RoZXIuaGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLmRlZ3JlZXMgPT09IG90aGVyLmRlZ3JlZXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogTXVsdGlwbHkgYWxsIGRpbWVuc2lvbnMgKGV4Y2VwdCBkZWdyZWVzKSBpbiB0aGlzIFJlY3QgYnkgYSBmYWN0b3IgYW5kXG4gICAgKiByZXR1cm4gYSBuZXcgUmVjdC5cbiAgICAqIEBmdW5jdGlvblxuICAgICogQHBhcmFtIHtOdW1iZXJ9IGZhY3RvciBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHZlY3RvciBjb21wb25lbnRzLlxuICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUmVjdH0gQSBuZXcgcmVjdCByZXByZXNlbnRpbmcgdGhlIG11bHRpcGxpY2F0aW9uXG4gICAgKiAgb2YgdGhlIHZlY3RvciBjb21wb25lbnRzIGJ5IHRoZSBmYWN0b3JcbiAgICAqL1xuICAgIHRpbWVzOiBmdW5jdGlvbihmYWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlJlY3QoXG4gICAgICAgICAgICB0aGlzLnggKiBmYWN0b3IsXG4gICAgICAgICAgICB0aGlzLnkgKiBmYWN0b3IsXG4gICAgICAgICAgICB0aGlzLndpZHRoICogZmFjdG9yLFxuICAgICAgICAgICAgdGhpcy5oZWlnaHQgKiBmYWN0b3IsXG4gICAgICAgICAgICB0aGlzLmRlZ3JlZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAqIFRyYW5zbGF0ZS9tb3ZlIHRoaXMgUmVjdCBieSBhIHZlY3RvciBhbmQgcmV0dXJuIG5ldyBSZWN0LlxuICAgICogQGZ1bmN0aW9uXG4gICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGRlbHRhIFRoZSB0cmFuc2xhdGlvbiB2ZWN0b3IuXG4gICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBBIG5ldyByZWN0IHdpdGggYWx0ZXJlZCBwb3NpdGlvblxuICAgICovXG4gICAgdHJhbnNsYXRlOiBmdW5jdGlvbihkZWx0YSkge1xuICAgICAgICByZXR1cm4gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIHRoaXMueCArIGRlbHRhLngsXG4gICAgICAgICAgICB0aGlzLnkgKyBkZWx0YS55LFxuICAgICAgICAgICAgdGhpcy53aWR0aCxcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5kZWdyZWVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc21hbGxlc3QgcmVjdGFuZ2xlIHRoYXQgd2lsbCBjb250YWluIHRoaXMgYW5kIHRoZSBnaXZlblxuICAgICAqIHJlY3RhbmdsZSBib3VuZGluZyBib3hlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gcmVjdFxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uUmVjdH0gVGhlIG5ldyByZWN0YW5nbGUuXG4gICAgICovXG4gICAgdW5pb246IGZ1bmN0aW9uKHJlY3QpIHtcbiAgICAgICAgdmFyIHRoaXNCb3VuZGluZ0JveCA9IHRoaXMuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICAgICAgdmFyIG90aGVyQm91bmRpbmdCb3ggPSByZWN0LmdldEJvdW5kaW5nQm94KCk7XG5cbiAgICAgICAgdmFyIGxlZnQgPSBNYXRoLm1pbih0aGlzQm91bmRpbmdCb3gueCwgb3RoZXJCb3VuZGluZ0JveC54KTtcbiAgICAgICAgdmFyIHRvcCA9IE1hdGgubWluKHRoaXNCb3VuZGluZ0JveC55LCBvdGhlckJvdW5kaW5nQm94LnkpO1xuICAgICAgICB2YXIgcmlnaHQgPSBNYXRoLm1heChcbiAgICAgICAgICAgIHRoaXNCb3VuZGluZ0JveC54ICsgdGhpc0JvdW5kaW5nQm94LndpZHRoLFxuICAgICAgICAgICAgb3RoZXJCb3VuZGluZ0JveC54ICsgb3RoZXJCb3VuZGluZ0JveC53aWR0aCk7XG4gICAgICAgIHZhciBib3R0b20gPSBNYXRoLm1heChcbiAgICAgICAgICAgIHRoaXNCb3VuZGluZ0JveC55ICsgdGhpc0JvdW5kaW5nQm94LmhlaWdodCxcbiAgICAgICAgICAgIG90aGVyQm91bmRpbmdCb3gueSArIG90aGVyQm91bmRpbmdCb3guaGVpZ2h0KTtcblxuICAgICAgICByZXR1cm4gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICByaWdodCAtIGxlZnQsXG4gICAgICAgICAgICBib3R0b20gLSB0b3ApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGludGVyc2VjdGlvbiBvZiB0aGlzIHJlY3RhbmdsZSB3aXRoIHRoZVxuICAgICAqIGdpdmVuIHJlY3RhbmdsZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gcmVjdFxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uUmVjdH0gdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgaW50ZXJzZWN0aW9uXG4gICAgICogb3IgbnVsbCBpZiB0aGUgcmVjdGFuZ2xlcyBkb24ndCBpbnRlcnNlY3QuXG4gICAgICovXG4gICAgaW50ZXJzZWN0aW9uOiBmdW5jdGlvbihyZWN0KSB7XG4gICAgICAgIC8vIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiBXZWlsZXIgQXRoZXJ0b24gY2xpcHBpbmcgYWxnb3JpdGhtXG4gICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlaWxlciVFMiU4MCU5M0F0aGVydG9uX2NsaXBwaW5nX2FsZ29yaXRobVxuICAgICAgICAvLyBCZWNhdXNlIHdlIGp1c3Qgd2FudCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBpbnRlcnNlY3Rpb24sXG4gICAgICAgIC8vIHdlIGNhbiBqdXN0IGNvbXB1dGUgdGhlIGJvdW5kaW5nIGJveCBvZjpcbiAgICAgICAgLy8gMS4gYWxsIHRoZSBzdW1taXRzIG9mIHRoaXMgd2hpY2ggYXJlIGluc2lkZSByZWN0XG4gICAgICAgIC8vIDIuIGFsbCB0aGUgc3VtbWl0cyBvZiByZWN0IHdoaWNoIGFyZSBpbnNpZGUgdGhpc1xuICAgICAgICAvLyAzLiBhbGwgdGhlIGludGVyc2VjdGlvbnMgb2YgcmVjdCBhbmQgdGhpc1xuICAgICAgICB2YXIgRVBTSUxPTiA9IDAuMDAwMDAwMDAwMTtcblxuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uUG9pbnRzID0gW107XG5cbiAgICAgICAgdmFyIHRoaXNUb3BMZWZ0ID0gdGhpcy5nZXRUb3BMZWZ0KCk7XG4gICAgICAgIGlmIChyZWN0LmNvbnRhaW5zUG9pbnQodGhpc1RvcExlZnQsIEVQU0lMT04pKSB7XG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludHMucHVzaCh0aGlzVG9wTGVmdCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNUb3BSaWdodCA9IHRoaXMuZ2V0VG9wUmlnaHQoKTtcbiAgICAgICAgaWYgKHJlY3QuY29udGFpbnNQb2ludCh0aGlzVG9wUmlnaHQsIEVQU0lMT04pKSB7XG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludHMucHVzaCh0aGlzVG9wUmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQm90dG9tTGVmdCA9IHRoaXMuZ2V0Qm90dG9tTGVmdCgpO1xuICAgICAgICBpZiAocmVjdC5jb250YWluc1BvaW50KHRoaXNCb3R0b21MZWZ0LCBFUFNJTE9OKSkge1xuICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnRzLnB1c2godGhpc0JvdHRvbUxlZnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQm90dG9tUmlnaHQgPSB0aGlzLmdldEJvdHRvbVJpZ2h0KCk7XG4gICAgICAgIGlmIChyZWN0LmNvbnRhaW5zUG9pbnQodGhpc0JvdHRvbVJpZ2h0LCBFUFNJTE9OKSkge1xuICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnRzLnB1c2godGhpc0JvdHRvbVJpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZWN0VG9wTGVmdCA9IHJlY3QuZ2V0VG9wTGVmdCgpO1xuICAgICAgICBpZiAodGhpcy5jb250YWluc1BvaW50KHJlY3RUb3BMZWZ0LCBFUFNJTE9OKSkge1xuICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnRzLnB1c2gocmVjdFRvcExlZnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWN0VG9wUmlnaHQgPSByZWN0LmdldFRvcFJpZ2h0KCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5zUG9pbnQocmVjdFRvcFJpZ2h0LCBFUFNJTE9OKSkge1xuICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnRzLnB1c2gocmVjdFRvcFJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVjdEJvdHRvbUxlZnQgPSByZWN0LmdldEJvdHRvbUxlZnQoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbnNQb2ludChyZWN0Qm90dG9tTGVmdCwgRVBTSUxPTikpIHtcbiAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50cy5wdXNoKHJlY3RCb3R0b21MZWZ0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVjdEJvdHRvbVJpZ2h0ID0gcmVjdC5nZXRCb3R0b21SaWdodCgpO1xuICAgICAgICBpZiAodGhpcy5jb250YWluc1BvaW50KHJlY3RCb3R0b21SaWdodCwgRVBTSUxPTikpIHtcbiAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50cy5wdXNoKHJlY3RCb3R0b21SaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGhpc1NlZ21lbnRzID0gdGhpcy5fZ2V0U2VnbWVudHMoKTtcbiAgICAgICAgdmFyIHJlY3RTZWdtZW50cyA9IHJlY3QuX2dldFNlZ21lbnRzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpc1NlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdGhpc1NlZ21lbnQgPSB0aGlzU2VnbWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlY3RTZWdtZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciByZWN0U2VnbWVudCA9IHJlY3RTZWdtZW50c1tqXTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0ID0gZ2V0SW50ZXJzZWN0aW9uKHRoaXNTZWdtZW50WzBdLCB0aGlzU2VnbWVudFsxXSxcbiAgICAgICAgICAgICAgICAgICAgcmVjdFNlZ21lbnRbMF0sIHJlY3RTZWdtZW50WzFdKTtcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50cy5wdXNoKGludGVyc2VjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IGludGVyc2VjdGlvbiBwb2ludCBvZiBzZWdtZW50cyBbYSxiXSBhbmQgW2MsZF1cbiAgICAgICAgZnVuY3Rpb24gZ2V0SW50ZXJzZWN0aW9uKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5NjgzNDUvMTQ0MDQwM1xuICAgICAgICAgICAgdmFyIGFiVmVjdG9yID0gYi5taW51cyhhKTtcbiAgICAgICAgICAgIHZhciBjZFZlY3RvciA9IGQubWludXMoYyk7XG5cbiAgICAgICAgICAgIHZhciBkZW5vbSA9IC1jZFZlY3Rvci54ICogYWJWZWN0b3IueSArIGFiVmVjdG9yLnggKiBjZFZlY3Rvci55O1xuICAgICAgICAgICAgaWYgKGRlbm9tID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBzID0gKGFiVmVjdG9yLnggKiAoYS55IC0gYy55KSAtIGFiVmVjdG9yLnkgKiAoYS54IC0gYy54KSkgLyBkZW5vbTtcbiAgICAgICAgICAgIHZhciB0ID0gKGNkVmVjdG9yLnggKiAoYS55IC0gYy55KSAtIGNkVmVjdG9yLnkgKiAoYS54IC0gYy54KSkgLyBkZW5vbTtcblxuICAgICAgICAgICAgaWYgKC1FUFNJTE9OIDw9IHMgJiYgcyA8PSAxIC0gRVBTSUxPTiAmJlxuICAgICAgICAgICAgICAgIC1FUFNJTE9OIDw9IHQgJiYgdCA8PSAxIC0gRVBTSUxPTikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChhLnggKyB0ICogYWJWZWN0b3IueCwgYS55ICsgdCAqIGFiVmVjdG9yLnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50ZXJzZWN0aW9uUG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbWluWCA9IGludGVyc2VjdGlvblBvaW50c1swXS54O1xuICAgICAgICB2YXIgbWF4WCA9IGludGVyc2VjdGlvblBvaW50c1swXS54O1xuICAgICAgICB2YXIgbWluWSA9IGludGVyc2VjdGlvblBvaW50c1swXS55O1xuICAgICAgICB2YXIgbWF4WSA9IGludGVyc2VjdGlvblBvaW50c1swXS55O1xuICAgICAgICBmb3IgKHZhciBrID0gMTsgayA8IGludGVyc2VjdGlvblBvaW50cy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gaW50ZXJzZWN0aW9uUG9pbnRzW2tdO1xuICAgICAgICAgICAgaWYgKHBvaW50LnggPCBtaW5YKSB7XG4gICAgICAgICAgICAgICAgbWluWCA9IHBvaW50Lng7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9pbnQueCA+IG1heFgpIHtcbiAgICAgICAgICAgICAgICBtYXhYID0gcG9pbnQueDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb2ludC55IDwgbWluWSkge1xuICAgICAgICAgICAgICAgIG1pblkgPSBwb2ludC55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvaW50LnkgPiBtYXhZKSB7XG4gICAgICAgICAgICAgICAgbWF4WSA9IHBvaW50Lnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyAkLlJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9nZXRTZWdtZW50czogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB0b3BMZWZ0ID0gdGhpcy5nZXRUb3BMZWZ0KCk7XG4gICAgICAgIHZhciB0b3BSaWdodCA9IHRoaXMuZ2V0VG9wUmlnaHQoKTtcbiAgICAgICAgdmFyIGJvdHRvbUxlZnQgPSB0aGlzLmdldEJvdHRvbUxlZnQoKTtcbiAgICAgICAgdmFyIGJvdHRvbVJpZ2h0ID0gdGhpcy5nZXRCb3R0b21SaWdodCgpO1xuICAgICAgICByZXR1cm4gW1t0b3BMZWZ0LCB0b3BSaWdodF0sXG4gICAgICAgICAgICBbdG9wUmlnaHQsIGJvdHRvbVJpZ2h0XSxcbiAgICAgICAgICAgIFtib3R0b21SaWdodCwgYm90dG9tTGVmdF0sXG4gICAgICAgICAgICBbYm90dG9tTGVmdCwgdG9wTGVmdF1dO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSb3RhdGVzIGEgcmVjdGFuZ2xlIGFyb3VuZCBhIHBvaW50LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBkZWdyZWVzIFRoZSBhbmdsZSBpbiBkZWdyZWVzIHRvIHJvdGF0ZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IFtwaXZvdF0gVGhlIHBvaW50IGFib3V0IHdoaWNoIHRvIHJvdGF0ZS5cbiAgICAgKiBEZWZhdWx0cyB0byB0aGUgY2VudGVyIG9mIHRoZSByZWN0YW5nbGUuXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5SZWN0fVxuICAgICAqL1xuICAgIHJvdGF0ZTogZnVuY3Rpb24oZGVncmVlcywgcGl2b3QpIHtcbiAgICAgICAgZGVncmVlcyA9IGRlZ3JlZXMgJSAzNjA7XG4gICAgICAgIGlmIChkZWdyZWVzID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWdyZWVzIDwgMCkge1xuICAgICAgICAgICAgZGVncmVlcyArPSAzNjA7XG4gICAgICAgIH1cblxuICAgICAgICBwaXZvdCA9IHBpdm90IHx8IHRoaXMuZ2V0Q2VudGVyKCk7XG4gICAgICAgIHZhciBuZXdUb3BMZWZ0ID0gdGhpcy5nZXRUb3BMZWZ0KCkucm90YXRlKGRlZ3JlZXMsIHBpdm90KTtcbiAgICAgICAgdmFyIG5ld1RvcFJpZ2h0ID0gdGhpcy5nZXRUb3BSaWdodCgpLnJvdGF0ZShkZWdyZWVzLCBwaXZvdCk7XG5cbiAgICAgICAgdmFyIGRpZmYgPSBuZXdUb3BSaWdodC5taW51cyhuZXdUb3BMZWZ0KTtcbiAgICAgICAgdmFyIHJhZGlhbnMgPSBNYXRoLmF0YW4oZGlmZi55IC8gZGlmZi54KTtcbiAgICAgICAgaWYgKGRpZmYueCA8IDApIHtcbiAgICAgICAgICAgIHJhZGlhbnMgKz0gTWF0aC5QSTtcbiAgICAgICAgfSBlbHNlIGlmIChkaWZmLnkgPCAwKSB7XG4gICAgICAgICAgICByYWRpYW5zICs9IDIgKiBNYXRoLlBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgbmV3VG9wTGVmdC54LFxuICAgICAgICAgICAgbmV3VG9wTGVmdC55LFxuICAgICAgICAgICAgdGhpcy53aWR0aCxcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0LFxuICAgICAgICAgICAgcmFkaWFucyAvIE1hdGguUEkgKiAxODApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHNtYWxsZXN0IGhvcml6b250YWwgKGRlZ3JlZXM9MCkgcmVjdGFuZ2xlIHdoaWNoIGNvbnRhaW5zXG4gICAgICogdGhpcyByZWN0YW5nbGUuXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUmVjdH1cbiAgICAgKi9cbiAgICBnZXRCb3VuZGluZ0JveDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZ3JlZXMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvcExlZnQgPSB0aGlzLmdldFRvcExlZnQoKTtcbiAgICAgICAgdmFyIHRvcFJpZ2h0ID0gdGhpcy5nZXRUb3BSaWdodCgpO1xuICAgICAgICB2YXIgYm90dG9tTGVmdCA9IHRoaXMuZ2V0Qm90dG9tTGVmdCgpO1xuICAgICAgICB2YXIgYm90dG9tUmlnaHQgPSB0aGlzLmdldEJvdHRvbVJpZ2h0KCk7XG4gICAgICAgIHZhciBtaW5YID0gTWF0aC5taW4odG9wTGVmdC54LCB0b3BSaWdodC54LCBib3R0b21MZWZ0LngsIGJvdHRvbVJpZ2h0LngpO1xuICAgICAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHRvcExlZnQueCwgdG9wUmlnaHQueCwgYm90dG9tTGVmdC54LCBib3R0b21SaWdodC54KTtcbiAgICAgICAgdmFyIG1pblkgPSBNYXRoLm1pbih0b3BMZWZ0LnksIHRvcFJpZ2h0LnksIGJvdHRvbUxlZnQueSwgYm90dG9tUmlnaHQueSk7XG4gICAgICAgIHZhciBtYXhZID0gTWF0aC5tYXgodG9wTGVmdC55LCB0b3BSaWdodC55LCBib3R0b21MZWZ0LnksIGJvdHRvbVJpZ2h0LnkpO1xuICAgICAgICByZXR1cm4gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIG1pblgsXG4gICAgICAgICAgICBtaW5ZLFxuICAgICAgICAgICAgbWF4WCAtIG1pblgsXG4gICAgICAgICAgICBtYXhZIC0gbWluWSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgc21hbGxlc3QgaG9yaXpvbnRhbCAoZGVncmVlcz0wKSByZWN0YW5nbGUgd2hpY2ggY29udGFpbnNcbiAgICAgKiB0aGlzIHJlY3RhbmdsZSBhbmQgaGFzIGludGVnZXJzIHgsIHksIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fVxuICAgICAqL1xuICAgIGdldEludGVnZXJCb3VuZGluZ0JveDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBib3VuZGluZ0JveCA9IHRoaXMuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKGJvdW5kaW5nQm94LngpO1xuICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IoYm91bmRpbmdCb3gueSk7XG4gICAgICAgIHZhciB3aWR0aCA9IE1hdGguY2VpbChib3VuZGluZ0JveC53aWR0aCArIGJvdW5kaW5nQm94LnggLSB4KTtcbiAgICAgICAgdmFyIGhlaWdodCA9IE1hdGguY2VpbChib3VuZGluZ0JveC5oZWlnaHQgKyBib3VuZGluZ0JveC55IC0geSk7XG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwb2ludCBpcyBpbnNpZGUgdGhpcyByZWN0YW5nbGUgKGVkZ2UgaW5jbHVkZWQpLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9pbnRcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW2Vwc2lsb249MF0gdGhlIG1hcmdpbiBvZiBlcnJvciBhbGxvd2VkXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdGhlIHBvaW50IGlzIGluc2lkZSB0aGlzIHJlY3RhbmdsZSwgZmFsc2VcbiAgICAgKiBvdGhlcndpc2UuXG4gICAgICovXG4gICAgY29udGFpbnNQb2ludDogZnVuY3Rpb24ocG9pbnQsIGVwc2lsb24pIHtcbiAgICAgICAgZXBzaWxvbiA9IGVwc2lsb24gfHwgMDtcblxuICAgICAgICAvLyBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjc1Mjc1NC8xNDQwNDAzIGZvciBleHBsYW5hdGlvblxuICAgICAgICB2YXIgdG9wTGVmdCA9IHRoaXMuZ2V0VG9wTGVmdCgpO1xuICAgICAgICB2YXIgdG9wUmlnaHQgPSB0aGlzLmdldFRvcFJpZ2h0KCk7XG4gICAgICAgIHZhciBib3R0b21MZWZ0ID0gdGhpcy5nZXRCb3R0b21MZWZ0KCk7XG4gICAgICAgIHZhciB0b3BEaWZmID0gdG9wUmlnaHQubWludXModG9wTGVmdCk7XG4gICAgICAgIHZhciBsZWZ0RGlmZiA9IGJvdHRvbUxlZnQubWludXModG9wTGVmdCk7XG5cbiAgICAgICAgcmV0dXJuICgocG9pbnQueCAtIHRvcExlZnQueCkgKiB0b3BEaWZmLnggK1xuICAgICAgICAgICAgKHBvaW50LnkgLSB0b3BMZWZ0LnkpICogdG9wRGlmZi55ID49IC1lcHNpbG9uKSAmJlxuXG4gICAgICAgICAgICAoKHBvaW50LnggLSB0b3BSaWdodC54KSAqIHRvcERpZmYueCArXG4gICAgICAgICAgICAocG9pbnQueSAtIHRvcFJpZ2h0LnkpICogdG9wRGlmZi55IDw9IGVwc2lsb24pICYmXG5cbiAgICAgICAgICAgICgocG9pbnQueCAtIHRvcExlZnQueCkgKiBsZWZ0RGlmZi54ICtcbiAgICAgICAgICAgIChwb2ludC55IC0gdG9wTGVmdC55KSAqIGxlZnREaWZmLnkgPj0gLWVwc2lsb24pICYmXG5cbiAgICAgICAgICAgICgocG9pbnQueCAtIGJvdHRvbUxlZnQueCkgKiBsZWZ0RGlmZi54ICtcbiAgICAgICAgICAgIChwb2ludC55IC0gYm90dG9tTGVmdC55KSAqIGxlZnREaWZmLnkgPD0gZXBzaWxvbik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWN0YW5nbGUgd2hpY2ggaXMgdXNlZnVsIGZvclxuICAgICAqIGRlYnVnZ2luZy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAqL1xuICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFwiW1wiICtcbiAgICAgICAgICAgIChNYXRoLnJvdW5kKHRoaXMueCAqIDEwMCkgLyAxMDApICsgXCIsIFwiICtcbiAgICAgICAgICAgIChNYXRoLnJvdW5kKHRoaXMueSAqIDEwMCkgLyAxMDApICsgXCIsIFwiICtcbiAgICAgICAgICAgIChNYXRoLnJvdW5kKHRoaXMud2lkdGggKiAxMDApIC8gMTAwKSArIFwieFwiICtcbiAgICAgICAgICAgIChNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0ICogMTAwKSAvIDEwMCkgKyBcIiwgXCIgK1xuICAgICAgICAgICAgKE1hdGgucm91bmQodGhpcy5kZWdyZWVzICogMTAwKSAvIDEwMCkgKyBcImRlZ1wiICtcbiAgICAgICAgICAgIFwiXVwiO1xuICAgIH1cbn07XG5cblxufShPcGVuU2VhZHJhZ29uKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gUmVmZXJlbmNlU3RyaXBcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uICggJCApIHtcblxuLy8gZGljdGlvbmFyeSBmcm9tIGlkIHRvIHByaXZhdGUgcHJvcGVydGllc1xudmFyIFRISVMgPSB7fTtcblxuLyoqXG4gKiAgVGhlIENvbGxlY3Rpb25EcmF3ZXIgaXMgYSByZWltcGxlbWVudGF0aW9uIGlmIHRoZSBEcmF3ZXIgQVBJIHRoYXRcbiAqICBmb2N1c2VzIG9uIGFsbG93aW5nIGEgdmlld3BvcnQgdG8gYmUgcmVkZWZpbmVkIGFzIGEgY29sbGVjdGlvblxuICogIG9mIHNtYWxsZXIgdmlld3BvcnRzLCBkZWZpbmVkIGJ5IGEgY2xlYXIgbnVtYmVyIG9mIHJvd3MgYW5kIC8gb3JcbiAqICBjb2x1bW5zIG9mIHdoaWNoIGVhY2ggaXRlbSBpbiB0aGUgbWF0cml4IG9mIHZpZXdwb3J0cyBoYXMgaXRzIG93blxuICogIHNvdXJjZS5cbiAqXG4gKiAgVGhpcyBpZGVhIGlzIGEgcmVleHByZXNzaW9uIG9mIHRoZSBpZGVhIG9mIGR6aSBjb2xsZWN0aW9uc1xuICogIHdoaWNoIGFsbG93cyBhIGNsZWFyZXIgYWxnb3JpdGhtIHRvIHJldXNlIHRoZSB0aWxlIHNvdXJjZXMgYWxyZWFkeVxuICogIHN1cHBvcnRlZCBieSBPcGVuU2VhZHJhZ29uLCBpbiBoZXRlcm9nZW5pb3VzIG9yIGhvbW9nZW5pb3VzXG4gKiAgc2VxdWVuY2VzIGp1c3QgbGlrZSBtaXhlZCBncm91cHMgYWxyZWFkeSBzdXBwb3J0ZWQgYnkgdGhlIHZpZXdlclxuICogIGZvciB0aGUgcHVycG9zZSBvZiBpbWFnZSBzZXF1bmNlcy5cbiAqXG4gKiAgVE9ETzogICBUaGUgZGlmZmljdWx0IHBhcnQgb2YgdGhpcyBmZWF0dXJlIGlzIGZpZ3VyaW5nIG91dCBob3cgdG8gZXhwcmVzc1xuICogICAgICAgICAgdGhpcyBmdW5jdGlvbmFsaXR5IGFzIGEgY29tYmluYXRpb24gb2YgdGhlIGZ1bmN0aW9uYWxpdHkgYWxyZWFkeVxuICogICAgICAgICAgcHJvdmlkZWQgYnkgRHJhd2VyLCBWaWV3cG9ydCwgVGlsZVNvdXJjZSwgYW5kIE5hdmlnYXRvci4gIEl0IG1heVxuICogICAgICAgICAgcmVxdWlyZSBiZXR0ZXIgYWJzdHJhY3Rpb24gYXQgdGhvc2UgcG9pbnRzIGluIG9yZGVyIHRvIGVmZmVjaWVudGx5XG4gKiAgICAgICAgICByZXVzZSB0aG9zZSBwYXJhZGlnbXMuXG4gKi9cbi8qKlxuICogQGNsYXNzIFJlZmVyZW5jZVN0cmlwXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqL1xuJC5SZWZlcmVuY2VTdHJpcCA9IGZ1bmN0aW9uICggb3B0aW9ucyApIHtcblxuICAgIHZhciBfdGhpcyAgICAgICA9IHRoaXMsXG4gICAgICAgIHZpZXdlciAgICAgID0gb3B0aW9ucy52aWV3ZXIsXG4gICAgICAgIHZpZXdlclNpemUgID0gJC5nZXRFbGVtZW50U2l6ZSggdmlld2VyLmVsZW1lbnQgKSxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIGk7XG5cbiAgICAvL1dlIG1heSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50IGFuZCBpZCBpZiB0aGV5IGRpZCBub3RcbiAgICAvL3Byb3ZpZGUgdGhlIGlkIGZvciB0aGUgZXhpc3RpbmcgZWxlbWVudFxuICAgIGlmICggIW9wdGlvbnMuaWQgKSB7XG4gICAgICAgIG9wdGlvbnMuaWQgICAgICAgICAgICAgID0gJ3JlZmVyZW5jZXN0cmlwLScgKyAkLm5vdygpO1xuICAgICAgICB0aGlzLmVsZW1lbnQgICAgICAgICAgICA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCBcImRpdlwiICk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5pZCAgICAgICAgID0gb3B0aW9ucy5pZDtcbiAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSAgPSAncmVmZXJlbmNlc3RyaXAnO1xuICAgIH1cblxuICAgIG9wdGlvbnMgPSAkLmV4dGVuZCggdHJ1ZSwge1xuICAgICAgICBzaXplUmF0aW86ICAkLkRFRkFVTFRfU0VUVElOR1MucmVmZXJlbmNlU3RyaXBTaXplUmF0aW8sXG4gICAgICAgIHBvc2l0aW9uOiAgICQuREVGQVVMVF9TRVRUSU5HUy5yZWZlcmVuY2VTdHJpcFBvc2l0aW9uLFxuICAgICAgICBzY3JvbGw6ICAgICAkLkRFRkFVTFRfU0VUVElOR1MucmVmZXJlbmNlU3RyaXBTY3JvbGwsXG4gICAgICAgIGNsaWNrVGltZVRocmVzaG9sZDogICQuREVGQVVMVF9TRVRUSU5HUy5jbGlja1RpbWVUaHJlc2hvbGRcbiAgICB9LCBvcHRpb25zLCB7XG4gICAgICAgIC8vcmVxdWlyZWQgb3ZlcnJpZGVzXG4gICAgICAgIGVsZW1lbnQ6ICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgLy9UaGVzZSBuZWVkIHRvIGJlIG92ZXJyaWRkZW4gdG8gcHJldmVudCByZWN1cnNpb24gc2luY2VcbiAgICAgICAgLy90aGUgbmF2aWdhdG9yIGlzIGEgdmlld2VyIGFuZCBhIHZpZXdlciBoYXMgYSBuYXZpZ2F0b3JcbiAgICAgICAgc2hvd05hdmlnYXRvcjogICAgICAgICAgZmFsc2UsXG4gICAgICAgIG1vdXNlTmF2RW5hYmxlZDogICAgICAgIGZhbHNlLFxuICAgICAgICBzaG93TmF2aWdhdGlvbkNvbnRyb2w6ICBmYWxzZSxcbiAgICAgICAgc2hvd1NlcXVlbmNlQ29udHJvbDogICAgZmFsc2VcbiAgICB9ICk7XG5cbiAgICAkLmV4dGVuZCggdGhpcywgb3B0aW9ucyApO1xuICAgIC8vUHJpdmF0ZSBzdGF0ZSBwcm9wZXJ0aWVzXG4gICAgVEhJU1t0aGlzLmlkXSA9IHtcbiAgICAgICAgXCJhbmltYXRpbmdcIjogICAgICAgICAgIGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMubWluUGl4ZWxSYXRpbyA9IHRoaXMudmlld2VyLm1pblBpeGVsUmF0aW87XG5cbiAgICBzdHlsZSA9IHRoaXMuZWxlbWVudC5zdHlsZTtcbiAgICBzdHlsZS5tYXJnaW5Ub3AgICAgID0gJzBweCc7XG4gICAgc3R5bGUubWFyZ2luUmlnaHQgICA9ICcwcHgnO1xuICAgIHN0eWxlLm1hcmdpbkJvdHRvbSAgPSAnMHB4JztcbiAgICBzdHlsZS5tYXJnaW5MZWZ0ICAgID0gJzBweCc7XG4gICAgc3R5bGUubGVmdCAgICAgICAgICA9ICcwcHgnO1xuICAgIHN0eWxlLmJvdHRvbSAgICAgICAgPSAnMHB4JztcbiAgICBzdHlsZS5ib3JkZXIgICAgICAgID0gJzBweCc7XG4gICAgc3R5bGUuYmFja2dyb3VuZCAgICA9ICcjMDAwJztcbiAgICBzdHlsZS5wb3NpdGlvbiAgICAgID0gJ3JlbGF0aXZlJztcblxuICAgICQuc2V0RWxlbWVudFRvdWNoQWN0aW9uTm9uZSggdGhpcy5lbGVtZW50ICk7XG5cbiAgICAkLnNldEVsZW1lbnRPcGFjaXR5KCB0aGlzLmVsZW1lbnQsIDAuOCApO1xuXG4gICAgdGhpcy52aWV3ZXIgPSB2aWV3ZXI7XG4gICAgdGhpcy5pbm5lclRyYWNrZXIgPSBuZXcgJC5Nb3VzZVRyYWNrZXIoIHtcbiAgICAgICAgZWxlbWVudDogICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgZHJhZ0hhbmRsZXI6ICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uU3RyaXBEcmFnICksXG4gICAgICAgIHNjcm9sbEhhbmRsZXI6ICAkLmRlbGVnYXRlKCB0aGlzLCBvblN0cmlwU2Nyb2xsICksXG4gICAgICAgIGVudGVySGFuZGxlcjogICAkLmRlbGVnYXRlKCB0aGlzLCBvblN0cmlwRW50ZXIgKSxcbiAgICAgICAgZXhpdEhhbmRsZXI6ICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uU3RyaXBFeGl0ICksXG4gICAgICAgIGtleURvd25IYW5kbGVyOiAkLmRlbGVnYXRlKCB0aGlzLCBvbktleURvd24gKSxcbiAgICAgICAga2V5SGFuZGxlcjogICAgICQuZGVsZWdhdGUoIHRoaXMsIG9uS2V5UHJlc3MgKVxuICAgIH0gKTtcblxuICAgIC8vQ29udHJvbHMgdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgcmVmZXJlbmNlIHN0cmlwIGFuZCBzZXRzIHRoZVxuICAgIC8vYXBwcm9wcmlhdGUgd2lkdGggYW5kIGhlaWdodFxuICAgIGlmICggb3B0aW9ucy53aWR0aCAmJiBvcHRpb25zLmhlaWdodCApIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoICA9IG9wdGlvbnMud2lkdGggKyAncHgnO1xuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQgKyAncHgnO1xuICAgICAgICB2aWV3ZXIuYWRkQ29udHJvbChcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIHsgYW5jaG9yOiAkLkNvbnRyb2xBbmNob3IuQk9UVE9NX0xFRlQgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICggXCJob3Jpem9udGFsXCIgPT0gb3B0aW9ucy5zY3JvbGwgKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSAoXG4gICAgICAgICAgICAgICAgdmlld2VyU2l6ZS54ICpcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVSYXRpbyAqXG4gICAgICAgICAgICAgICAgdmlld2VyLnRpbGVTb3VyY2VzLmxlbmd0aFxuICAgICAgICAgICAgKSArICggMTIgKiB2aWV3ZXIudGlsZVNvdXJjZXMubGVuZ3RoICkgKyAncHgnO1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKFxuICAgICAgICAgICAgICAgIHZpZXdlclNpemUueSAqXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplUmF0aW9cbiAgICAgICAgICAgICkgKyAncHgnO1xuXG4gICAgICAgICAgICB2aWV3ZXIuYWRkQ29udHJvbChcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgeyBhbmNob3I6ICQuQ29udHJvbEFuY2hvci5CT1RUT01fTEVGVCB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IChcbiAgICAgICAgICAgICAgICB2aWV3ZXJTaXplLnkgKlxuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZVJhdGlvICpcbiAgICAgICAgICAgICAgICB2aWV3ZXIudGlsZVNvdXJjZXMubGVuZ3RoXG4gICAgICAgICAgICApICsgKCAxMiAqIHZpZXdlci50aWxlU291cmNlcy5sZW5ndGggKSArICdweCc7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IChcbiAgICAgICAgICAgICAgICB2aWV3ZXJTaXplLnggKlxuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZVJhdGlvXG4gICAgICAgICAgICApICsgJ3B4JztcblxuICAgICAgICAgICAgdmlld2VyLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICAgICAgICAgIHsgYW5jaG9yOiAkLkNvbnRyb2xBbmNob3IuVE9QX0xFRlQgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wYW5lbFdpZHRoID0gKCB2aWV3ZXJTaXplLnggKiB0aGlzLnNpemVSYXRpbyApICsgODtcbiAgICB0aGlzLnBhbmVsSGVpZ2h0ID0gKCB2aWV3ZXJTaXplLnkgKiB0aGlzLnNpemVSYXRpbyApICsgODtcbiAgICB0aGlzLnBhbmVscyA9IFtdO1xuXG4gICAgLypqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSovXG4gICAgZm9yICggaSA9IDA7IGkgPCB2aWV3ZXIudGlsZVNvdXJjZXMubGVuZ3RoOyBpKysgKSB7XG5cbiAgICAgICAgZWxlbWVudCA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCAnZGl2JyApO1xuICAgICAgICBlbGVtZW50LmlkID0gdGhpcy5lbGVtZW50LmlkICsgXCItXCIgKyBpO1xuXG4gICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggICAgICAgICA9IF90aGlzLnBhbmVsV2lkdGggKyAncHgnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCAgICAgICAgPSBfdGhpcy5wYW5lbEhlaWdodCArICdweCc7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSAgICAgICA9ICdpbmxpbmUnO1xuICAgICAgICBlbGVtZW50LnN0eWxlLmZsb2F0ICAgICAgICAgPSAnbGVmdCc7IC8vV2Via2l0XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgICAgICA9ICdsZWZ0JzsgLy9GaXJlZm94XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc3R5bGVGbG9hdCAgICA9ICdsZWZ0JzsgLy9JRVxuICAgICAgICBlbGVtZW50LnN0eWxlLnBhZGRpbmcgICAgICAgPSAnMnB4JztcbiAgICAgICAgJC5zZXRFbGVtZW50VG91Y2hBY3Rpb25Ob25lKCBlbGVtZW50ICk7XG5cbiAgICAgICAgZWxlbWVudC5pbm5lclRyYWNrZXIgPSBuZXcgJC5Nb3VzZVRyYWNrZXIoIHtcbiAgICAgICAgICAgIGVsZW1lbnQ6ICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIGNsaWNrVGltZVRocmVzaG9sZDogdGhpcy5jbGlja1RpbWVUaHJlc2hvbGQsXG4gICAgICAgICAgICBjbGlja0Rpc3RUaHJlc2hvbGQ6IHRoaXMuY2xpY2tEaXN0VGhyZXNob2xkLFxuICAgICAgICAgICAgcHJlc3NIYW5kbGVyOiBmdW5jdGlvbiAoIGV2ZW50ICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmV2ZW50U291cmNlLmRyYWdnaW5nID0gJC5ub3coKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWxlYXNlSGFuZGxlcjogZnVuY3Rpb24gKCBldmVudCApIHtcbiAgICAgICAgICAgICAgICB2YXIgdHJhY2tlciA9IGV2ZW50LmV2ZW50U291cmNlLFxuICAgICAgICAgICAgICAgICAgICBpZCAgICAgID0gdHJhY2tlci5lbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBwYWdlICAgID0gTnVtYmVyKCBpZC5zcGxpdCggJy0nIClbMl0gKSxcbiAgICAgICAgICAgICAgICAgICAgbm93ICAgICA9ICQubm93KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIGV2ZW50Lmluc2lkZUVsZW1lbnRQcmVzc2VkICYmXG4gICAgICAgICAgICAgICAgICAgICBldmVudC5pbnNpZGVFbGVtZW50UmVsZWFzZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIHRyYWNrZXIuZHJhZ2dpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICggbm93IC0gdHJhY2tlci5kcmFnZ2luZyApIDwgdHJhY2tlci5jbGlja1RpbWVUaHJlc2hvbGQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrZXIuZHJhZ2dpbmcgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB2aWV3ZXIuZ29Ub1BhZ2UoIHBhZ2UgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKTtcblxuICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoIGVsZW1lbnQgKTtcblxuICAgICAgICBlbGVtZW50LmFjdGl2ZVBhbmVsID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5wYW5lbHMucHVzaCggZWxlbWVudCApO1xuXG4gICAgfVxuICAgIGxvYWRQYW5lbHMoIHRoaXMsIHRoaXMuc2Nyb2xsID09ICd2ZXJ0aWNhbCcgPyB2aWV3ZXJTaXplLnkgOiB2aWV3ZXJTaXplLngsIDAgKTtcbiAgICB0aGlzLnNldEZvY3VzKCAwICk7XG5cbn07XG5cbiQuZXh0ZW5kKCAkLlJlZmVyZW5jZVN0cmlwLnByb3RvdHlwZSwgJC5FdmVudFNvdXJjZS5wcm90b3R5cGUsICQuVmlld2VyLnByb3RvdHlwZSwgLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLlJlZmVyZW5jZVN0cmlwLnByb3RvdHlwZSAqL3tcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHNldEZvY3VzOiBmdW5jdGlvbiAoIHBhZ2UgKSB7XG4gICAgICAgIHZhciBlbGVtZW50ICAgICAgPSAkLmdldEVsZW1lbnQoIHRoaXMuZWxlbWVudC5pZCArICctJyArIHBhZ2UgKSxcbiAgICAgICAgICAgIHZpZXdlclNpemUgICA9ICQuZ2V0RWxlbWVudFNpemUoIHRoaXMudmlld2VyLmNhbnZhcyApLFxuICAgICAgICAgICAgc2Nyb2xsV2lkdGggID0gTnVtYmVyKCB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGgucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gTnVtYmVyKCB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0LnJlcGxhY2UoICdweCcsICcnICkgKSxcbiAgICAgICAgICAgIG9mZnNldExlZnQgICA9IC1OdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0LnJlcGxhY2UoICdweCcsICcnICkgKSxcbiAgICAgICAgICAgIG9mZnNldFRvcCAgICA9IC1OdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICAgICAgb2Zmc2V0O1xuXG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50U2VsZWN0ZWQgIT09IGVsZW1lbnQgKSB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuY3VycmVudFNlbGVjdGVkICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkLnN0eWxlLmJhY2tncm91bmQgPSAnIzAwMCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZC5zdHlsZS5iYWNrZ3JvdW5kID0gJyM5OTknO1xuXG4gICAgICAgICAgICBpZiAoICdob3Jpem9udGFsJyA9PSB0aGlzLnNjcm9sbCApIHtcbiAgICAgICAgICAgICAgICAvL3JpZ2h0IGxlZnRcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSAoIE51bWJlciggcGFnZSApICkgKiAoIHRoaXMucGFuZWxXaWR0aCArIDMgKTtcbiAgICAgICAgICAgICAgICBpZiAoIG9mZnNldCA+IG9mZnNldExlZnQgKyB2aWV3ZXJTaXplLnggLSB0aGlzLnBhbmVsV2lkdGggKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IE1hdGgubWluKCBvZmZzZXQsICggc2Nyb2xsV2lkdGggLSB2aWV3ZXJTaXplLnggKSApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IC1vZmZzZXQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICBsb2FkUGFuZWxzKCB0aGlzLCB2aWV3ZXJTaXplLngsIC1vZmZzZXQgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvZmZzZXQgPCBvZmZzZXRMZWZ0ICkge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBNYXRoLm1heCggMCwgb2Zmc2V0IC0gdmlld2VyU2l6ZS54IC8gMiApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IC1vZmZzZXQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICBsb2FkUGFuZWxzKCB0aGlzLCB2aWV3ZXJTaXplLngsIC1vZmZzZXQgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9ICggTnVtYmVyKCBwYWdlICkgKSAqICggdGhpcy5wYW5lbEhlaWdodCArIDMgKTtcbiAgICAgICAgICAgICAgICBpZiAoIG9mZnNldCA+IG9mZnNldFRvcCArIHZpZXdlclNpemUueSAtIHRoaXMucGFuZWxIZWlnaHQgKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IE1hdGgubWluKCBvZmZzZXQsICggc2Nyb2xsSGVpZ2h0IC0gdmlld2VyU2l6ZS55ICkgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpblRvcCA9IC1vZmZzZXQgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICBsb2FkUGFuZWxzKCB0aGlzLCB2aWV3ZXJTaXplLnksIC1vZmZzZXQgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBvZmZzZXQgPCBvZmZzZXRUb3AgKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IE1hdGgubWF4KCAwLCBvZmZzZXQgLSB2aWV3ZXJTaXplLnkgLyAyICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSAtb2Zmc2V0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS55LCAtb2Zmc2V0ICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgICAgICAgIG9uU3RyaXBFbnRlci5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLmlubmVyVHJhY2tlciB9ICk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICggVEhJU1t0aGlzLmlkXS5hbmltYXRpbmcgKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUubG9nKCAnaW1hZ2UgcmVmZXJlbmNlIHN0cmlwIHVwZGF0ZScgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgLy8gT3ZlcnJpZGVzIFZpZXdlci5kZXN0cm95XG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn0gKTtcblxuXG5cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gb25TdHJpcERyYWcoIGV2ZW50ICkge1xuXG4gICAgdmFyIG9mZnNldExlZnQgICA9IE51bWJlciggdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICBvZmZzZXRUb3AgICAgPSBOdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICBzY3JvbGxXaWR0aCAgPSBOdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aC5yZXBsYWNlKCAncHgnLCAnJyApICksXG4gICAgICAgIHNjcm9sbEhlaWdodCA9IE51bWJlciggdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodC5yZXBsYWNlKCAncHgnLCAnJyApICksXG4gICAgICAgIHZpZXdlclNpemUgICA9ICQuZ2V0RWxlbWVudFNpemUoIHRoaXMudmlld2VyLmNhbnZhcyApO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIGlmICggdGhpcy5lbGVtZW50ICkge1xuICAgICAgICBpZiAoICdob3Jpem9udGFsJyA9PSB0aGlzLnNjcm9sbCApIHtcbiAgICAgICAgICAgIGlmICggLWV2ZW50LmRlbHRhLnggPiAwICkge1xuICAgICAgICAgICAgICAgIC8vZm9yd2FyZFxuICAgICAgICAgICAgICAgIGlmICggb2Zmc2V0TGVmdCA+IC0oIHNjcm9sbFdpZHRoIC0gdmlld2VyU2l6ZS54ICkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gKCBvZmZzZXRMZWZ0ICsgKCBldmVudC5kZWx0YS54ICogMiApICkgKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICBsb2FkUGFuZWxzKCB0aGlzLCB2aWV3ZXJTaXplLngsIG9mZnNldExlZnQgKyAoIGV2ZW50LmRlbHRhLnggKiAyICkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCAtZXZlbnQuZGVsdGEueCA8IDAgKSB7XG4gICAgICAgICAgICAgICAgLy9yZXZlcnNlXG4gICAgICAgICAgICAgICAgaWYgKCBvZmZzZXRMZWZ0IDwgMCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoIG9mZnNldExlZnQgKyAoIGV2ZW50LmRlbHRhLnggKiAyICkgKSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRQYW5lbHMoIHRoaXMsIHZpZXdlclNpemUueCwgb2Zmc2V0TGVmdCArICggZXZlbnQuZGVsdGEueCAqIDIgKSApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICggLWV2ZW50LmRlbHRhLnkgPiAwICkge1xuICAgICAgICAgICAgICAgIC8vZm9yd2FyZFxuICAgICAgICAgICAgICAgIGlmICggb2Zmc2V0VG9wID4gLSggc2Nyb2xsSGVpZ2h0IC0gdmlld2VyU2l6ZS55ICkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSAoIG9mZnNldFRvcCArICggZXZlbnQuZGVsdGEueSAqIDIgKSApICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS55LCBvZmZzZXRUb3AgKyAoIGV2ZW50LmRlbHRhLnkgKiAyICkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCAtZXZlbnQuZGVsdGEueSA8IDAgKSB7XG4gICAgICAgICAgICAgICAgLy9yZXZlcnNlXG4gICAgICAgICAgICAgICAgaWYgKCBvZmZzZXRUb3AgPCAwICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luVG9wID0gKCBvZmZzZXRUb3AgKyAoIGV2ZW50LmRlbHRhLnkgKiAyICkgKSArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRQYW5lbHMoIHRoaXMsIHZpZXdlclNpemUueSwgb2Zmc2V0VG9wICsgKCBldmVudC5kZWx0YS55ICogMiApICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcblxufVxuXG5cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gb25TdHJpcFNjcm9sbCggZXZlbnQgKSB7XG4gICAgdmFyIG9mZnNldExlZnQgICA9IE51bWJlciggdGhpcy5lbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICBvZmZzZXRUb3AgICAgPSBOdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSggJ3B4JywgJycgKSApLFxuICAgICAgICBzY3JvbGxXaWR0aCAgPSBOdW1iZXIoIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aC5yZXBsYWNlKCAncHgnLCAnJyApICksXG4gICAgICAgIHNjcm9sbEhlaWdodCA9IE51bWJlciggdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodC5yZXBsYWNlKCAncHgnLCAnJyApICksXG4gICAgICAgIHZpZXdlclNpemUgICA9ICQuZ2V0RWxlbWVudFNpemUoIHRoaXMudmlld2VyLmNhbnZhcyApO1xuICAgIGlmICggdGhpcy5lbGVtZW50ICkge1xuICAgICAgICBpZiAoICdob3Jpem9udGFsJyA9PSB0aGlzLnNjcm9sbCApIHtcbiAgICAgICAgICAgIGlmICggZXZlbnQuc2Nyb2xsID4gMCApIHtcbiAgICAgICAgICAgICAgICAvL2ZvcndhcmRcbiAgICAgICAgICAgICAgICBpZiAoIG9mZnNldExlZnQgPiAtKCBzY3JvbGxXaWR0aCAtIHZpZXdlclNpemUueCApICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICggb2Zmc2V0TGVmdCAtICggZXZlbnQuc2Nyb2xsICogNjAgKSApICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS54LCBvZmZzZXRMZWZ0IC0gKCBldmVudC5zY3JvbGwgKiA2MCApICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICggZXZlbnQuc2Nyb2xsIDwgMCApIHtcbiAgICAgICAgICAgICAgICAvL3JldmVyc2VcbiAgICAgICAgICAgICAgICBpZiAoIG9mZnNldExlZnQgPCAwICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICggb2Zmc2V0TGVmdCAtICggZXZlbnQuc2Nyb2xsICogNjAgKSApICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS54LCBvZmZzZXRMZWZ0IC0gKCBldmVudC5zY3JvbGwgKiA2MCApICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCBldmVudC5zY3JvbGwgPCAwICkge1xuICAgICAgICAgICAgICAgIC8vc2Nyb2xsIHVwXG4gICAgICAgICAgICAgICAgaWYgKCBvZmZzZXRUb3AgPiB2aWV3ZXJTaXplLnkgLSBzY3JvbGxIZWlnaHQgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSAoIG9mZnNldFRvcCArICggZXZlbnQuc2Nyb2xsICogNjAgKSApICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS55LCBvZmZzZXRUb3AgKyAoIGV2ZW50LnNjcm9sbCAqIDYwICkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBldmVudC5zY3JvbGwgPiAwICkge1xuICAgICAgICAgICAgICAgIC8vc2Nyb2xsIGRvd21cbiAgICAgICAgICAgICAgICBpZiAoIG9mZnNldFRvcCA8IDAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSAoIG9mZnNldFRvcCArICggZXZlbnQuc2Nyb2xsICogNjAgKSApICsgJ3B4JztcbiAgICAgICAgICAgICAgICAgICAgbG9hZFBhbmVscyggdGhpcywgdmlld2VyU2l6ZS55LCBvZmZzZXRUb3AgKyAoIGV2ZW50LnNjcm9sbCAqIDYwICkgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9jYW5jZWxzIGV2ZW50XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5cbmZ1bmN0aW9uIGxvYWRQYW5lbHMoIHN0cmlwLCB2aWV3ZXJTaXplLCBzY3JvbGwgKSB7XG4gICAgdmFyIHBhbmVsU2l6ZSxcbiAgICAgICAgYWN0aXZlUGFuZWxzU3RhcnQsXG4gICAgICAgIGFjdGl2ZVBhbmVsc0VuZCxcbiAgICAgICAgbWluaVZpZXdlcixcbiAgICAgICAgc3R5bGUsXG4gICAgICAgIGksXG4gICAgICAgIGVsZW1lbnQ7XG4gICAgaWYgKCAnaG9yaXpvbnRhbCcgPT0gc3RyaXAuc2Nyb2xsICkge1xuICAgICAgICBwYW5lbFNpemUgPSBzdHJpcC5wYW5lbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHBhbmVsU2l6ZSA9IHN0cmlwLnBhbmVsSGVpZ2h0O1xuICAgIH1cbiAgICBhY3RpdmVQYW5lbHNTdGFydCA9IE1hdGguY2VpbCggdmlld2VyU2l6ZSAvIHBhbmVsU2l6ZSApICsgNTtcbiAgICBhY3RpdmVQYW5lbHNFbmQgPSBNYXRoLmNlaWwoICggTWF0aC5hYnMoIHNjcm9sbCApICsgdmlld2VyU2l6ZSApIC8gcGFuZWxTaXplICkgKyAxO1xuICAgIGFjdGl2ZVBhbmVsc1N0YXJ0ID0gYWN0aXZlUGFuZWxzRW5kIC0gYWN0aXZlUGFuZWxzU3RhcnQ7XG4gICAgYWN0aXZlUGFuZWxzU3RhcnQgPSBhY3RpdmVQYW5lbHNTdGFydCA8IDAgPyAwIDogYWN0aXZlUGFuZWxzU3RhcnQ7XG5cbiAgICBmb3IgKCBpID0gYWN0aXZlUGFuZWxzU3RhcnQ7IGkgPCBhY3RpdmVQYW5lbHNFbmQgJiYgaSA8IHN0cmlwLnBhbmVscy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgZWxlbWVudCA9IHN0cmlwLnBhbmVsc1tpXTtcbiAgICAgICAgaWYgKCAhZWxlbWVudC5hY3RpdmVQYW5lbCApIHtcbiAgICAgICAgICAgIG1pbmlWaWV3ZXIgPSBuZXcgJC5WaWV3ZXIoIHtcbiAgICAgICAgICAgICAgICBpZDogICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIHRpbGVTb3VyY2VzOiAgICAgICAgICAgIFtzdHJpcC52aWV3ZXIudGlsZVNvdXJjZXNbaV1dLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yU2l6ZVJhdGlvOiAgICAgc3RyaXAuc2l6ZVJhdGlvLFxuICAgICAgICAgICAgICAgIHNob3dOYXZpZ2F0b3I6ICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIG1vdXNlTmF2RW5hYmxlZDogICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dOYXZpZ2F0aW9uQ29udHJvbDogIGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dTZXF1ZW5jZUNvbnRyb2w6ICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIGltbWVkaWF0ZVJlbmRlcjogICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgYmxlbmRUaW1lOiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25UaW1lOiAgICAgICAgICAwXG4gICAgICAgICAgICB9ICk7XG5cbiAgICAgICAgICAgIG1pbmlWaWV3ZXIuZGlzcGxheVJlZ2lvbiAgICAgICAgICAgPSAkLm1ha2VOZXV0cmFsRWxlbWVudCggXCJkaXZcIiApO1xuICAgICAgICAgICAgbWluaVZpZXdlci5kaXNwbGF5UmVnaW9uLmlkICAgICAgICA9IGVsZW1lbnQuaWQgKyAnLWRpc3BsYXlyZWdpb24nO1xuICAgICAgICAgICAgbWluaVZpZXdlci5kaXNwbGF5UmVnaW9uLmNsYXNzTmFtZSA9ICdkaXNwbGF5cmVnaW9uJztcblxuICAgICAgICAgICAgc3R5bGUgICAgICAgICAgICAgICA9IG1pbmlWaWV3ZXIuZGlzcGxheVJlZ2lvbi5zdHlsZTtcbiAgICAgICAgICAgIHN0eWxlLnBvc2l0aW9uICAgICAgPSAncmVsYXRpdmUnO1xuICAgICAgICAgICAgc3R5bGUudG9wICAgICAgICAgICA9ICcwcHgnO1xuICAgICAgICAgICAgc3R5bGUubGVmdCAgICAgICAgICA9ICcwcHgnO1xuICAgICAgICAgICAgc3R5bGUuZm9udFNpemUgICAgICA9ICcwcHgnO1xuICAgICAgICAgICAgc3R5bGUub3ZlcmZsb3cgICAgICA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgc3R5bGUuZmxvYXQgICAgICAgICA9ICdsZWZ0JzsgLy9XZWJraXRcbiAgICAgICAgICAgIHN0eWxlLmNzc0Zsb2F0ICAgICAgPSAnbGVmdCc7IC8vRmlyZWZveFxuICAgICAgICAgICAgc3R5bGUuc3R5bGVGbG9hdCAgICA9ICdsZWZ0JzsgLy9JRVxuICAgICAgICAgICAgc3R5bGUuekluZGV4ICAgICAgICA9IDk5OTk5OTk5OTtcbiAgICAgICAgICAgIHN0eWxlLmN1cnNvciAgICAgICAgPSAnZGVmYXVsdCc7XG4gICAgICAgICAgICBzdHlsZS53aWR0aCAgICAgICAgID0gKCBzdHJpcC5wYW5lbFdpZHRoIC0gNCApICsgJ3B4JztcbiAgICAgICAgICAgIHN0eWxlLmhlaWdodCAgICAgICAgPSAoIHN0cmlwLnBhbmVsSGVpZ2h0IC0gNCApICsgJ3B4JztcblxuICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpcyB0aGlzIGZvcj8gRnV0dXJlIGtleWJvYXJkIG5hdmlnYXRpb24gc3VwcG9ydD9cbiAgICAgICAgICAgIG1pbmlWaWV3ZXIuZGlzcGxheVJlZ2lvbi5pbm5lclRyYWNrZXIgPSBuZXcgJC5Nb3VzZVRyYWNrZXIoIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBtaW5pVmlld2VyLmRpc3BsYXlSZWdpb24sXG4gICAgICAgICAgICAgICAgc3RhcnREaXNhYmxlZDogdHJ1ZVxuICAgICAgICAgICAgfSApO1xuXG4gICAgICAgICAgICBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCAnZGl2JyApWzBdLmFwcGVuZENoaWxkKFxuICAgICAgICAgICAgICAgIG1pbmlWaWV3ZXIuZGlzcGxheVJlZ2lvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZWxlbWVudC5hY3RpdmVQYW5lbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBAZnVuY3Rpb25cbiAqL1xuZnVuY3Rpb24gb25TdHJpcEVudGVyKCBldmVudCApIHtcbiAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmV2ZW50U291cmNlLmVsZW1lbnQ7XG5cbiAgICAvLyQuc2V0RWxlbWVudE9wYWNpdHkoZWxlbWVudCwgMC44KTtcblxuICAgIC8vZWxlbWVudC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICM1NTUnO1xuICAgIC8vZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gJyMwMDAnO1xuXG4gICAgaWYgKCAnaG9yaXpvbnRhbCcgPT0gdGhpcy5zY3JvbGwgKSB7XG5cbiAgICAgICAgLy9lbGVtZW50LnN0eWxlLnBhZGRpbmdUb3AgPSBcIjBweFwiO1xuICAgICAgICBlbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IFwiMHB4XCI7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICAgIC8vZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBcIjBweFwiO1xuICAgICAgICBlbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSBcIjBweFwiO1xuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBvblN0cmlwRXhpdCggZXZlbnQgKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBldmVudC5ldmVudFNvdXJjZS5lbGVtZW50O1xuXG4gICAgaWYgKCAnaG9yaXpvbnRhbCcgPT0gdGhpcy5zY3JvbGwgKSB7XG5cbiAgICAgICAgLy9lbGVtZW50LnN0eWxlLnBhZGRpbmdUb3AgPSBcIjEwcHhcIjtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5tYXJnaW5Cb3R0b20gPSBcIi1cIiArICggJC5nZXRFbGVtZW50U2l6ZSggZWxlbWVudCApLnkgLyAyICkgKyBcInB4XCI7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICAgIC8vZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBcIjEwcHhcIjtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gXCItXCIgKyAoICQuZ2V0RWxlbWVudFNpemUoIGVsZW1lbnQgKS54IC8gMiApICsgXCJweFwiO1xuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBvbktleURvd24oIGV2ZW50ICkge1xuICAgIC8vY29uc29sZS5sb2coIGV2ZW50LmtleUNvZGUgKTtcblxuICAgIGlmICggIWV2ZW50LnByZXZlbnREZWZhdWx0QWN0aW9uICYmICFldmVudC5jdHJsICYmICFldmVudC5hbHQgJiYgIWV2ZW50Lm1ldGEgKSB7XG4gICAgICAgIHN3aXRjaCAoIGV2ZW50LmtleUNvZGUgKSB7XG4gICAgICAgICAgICBjYXNlIDM4OiAvL3VwIGFycm93XG4gICAgICAgICAgICAgICAgb25TdHJpcFNjcm9sbC5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIsIHBvc2l0aW9uOiBudWxsLCBzY3JvbGw6IDEsIHNoaWZ0OiBudWxsIH0gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDQwOiAvL2Rvd24gYXJyb3dcbiAgICAgICAgICAgICAgICBvblN0cmlwU2Nyb2xsLmNhbGwoIHRoaXMsIHsgZXZlbnRTb3VyY2U6IHRoaXMudHJhY2tlciwgcG9zaXRpb246IG51bGwsIHNjcm9sbDogLTEsIHNoaWZ0OiBudWxsIH0gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDM3OiAvL2xlZnQgYXJyb3dcbiAgICAgICAgICAgICAgICBvblN0cmlwU2Nyb2xsLmNhbGwoIHRoaXMsIHsgZXZlbnRTb3VyY2U6IHRoaXMudHJhY2tlciwgcG9zaXRpb246IG51bGwsIHNjcm9sbDogLTEsIHNoaWZ0OiBudWxsIH0gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIDM5OiAvL3JpZ2h0IGFycm93XG4gICAgICAgICAgICAgICAgb25TdHJpcFNjcm9sbC5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIsIHBvc2l0aW9uOiBudWxsLCBzY3JvbGw6IDEsIHNoaWZ0OiBudWxsIH0gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coICduYXZpZ2F0b3Iga2V5Y29kZSAlcycsIGV2ZW50LmtleUNvZGUgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIEBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBvbktleVByZXNzKCBldmVudCApIHtcbiAgICAvL2NvbnNvbGUubG9nKCBldmVudC5rZXlDb2RlICk7XG5cbiAgICBpZiAoICFldmVudC5wcmV2ZW50RGVmYXVsdEFjdGlvbiAmJiAhZXZlbnQuY3RybCAmJiAhZXZlbnQuYWx0ICYmICFldmVudC5tZXRhICkge1xuICAgICAgICBzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkge1xuICAgICAgICAgICAgY2FzZSA2MTogLy89fCtcbiAgICAgICAgICAgICAgICBvblN0cmlwU2Nyb2xsLmNhbGwoIHRoaXMsIHsgZXZlbnRTb3VyY2U6IHRoaXMudHJhY2tlciwgcG9zaXRpb246IG51bGwsIHNjcm9sbDogMSwgc2hpZnQ6IG51bGwgfSApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgNDU6IC8vLXxfXG4gICAgICAgICAgICAgICAgb25TdHJpcFNjcm9sbC5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIsIHBvc2l0aW9uOiBudWxsLCBzY3JvbGw6IC0xLCBzaGlmdDogbnVsbCB9ICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSA0ODogLy8wfClcbiAgICAgICAgICAgIGNhc2UgMTE5OiAvL3dcbiAgICAgICAgICAgIGNhc2UgODc6IC8vV1xuICAgICAgICAgICAgICAgIG9uU3RyaXBTY3JvbGwuY2FsbCggdGhpcywgeyBldmVudFNvdXJjZTogdGhpcy50cmFja2VyLCBwb3NpdGlvbjogbnVsbCwgc2Nyb2xsOiAxLCBzaGlmdDogbnVsbCB9ICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAxMTU6IC8vc1xuICAgICAgICAgICAgY2FzZSA4MzogLy9TXG4gICAgICAgICAgICAgICAgb25TdHJpcFNjcm9sbC5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIsIHBvc2l0aW9uOiBudWxsLCBzY3JvbGw6IC0xLCBzaGlmdDogbnVsbCB9ICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSA5NzogLy9hXG4gICAgICAgICAgICAgICAgb25TdHJpcFNjcm9sbC5jYWxsKCB0aGlzLCB7IGV2ZW50U291cmNlOiB0aGlzLnRyYWNrZXIsIHBvc2l0aW9uOiBudWxsLCBzY3JvbGw6IC0xLCBzaGlmdDogbnVsbCB9ICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSAxMDA6IC8vZFxuICAgICAgICAgICAgICAgIG9uU3RyaXBTY3JvbGwuY2FsbCggdGhpcywgeyBldmVudFNvdXJjZTogdGhpcy50cmFja2VyLCBwb3NpdGlvbjogbnVsbCwgc2Nyb2xsOiAxLCBzaGlmdDogbnVsbCB9ICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCAnbmF2aWdhdG9yIGtleWNvZGUgJXMnLCBldmVudC5rZXlDb2RlICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cblxuXG59ICggT3BlblNlYWRyYWdvbiApICk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gRGlzcGxheVJlY3RcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIERpc3BsYXlSZWN0XG4gKiBAY2xhc3NkZXNjIEEgZGlzcGxheSByZWN0YW5nbGUgaXMgdmVyeSBzaW1pbGFyIHRvIHtAbGluayBPcGVuU2VhZHJhZ29uLlJlY3R9IGJ1dCBhZGRzIHR3b1xuICogZmllbGRzLCAnbWluTGV2ZWwnIGFuZCAnbWF4TGV2ZWwnIHdoaWNoIGRlbm90ZSB0aGUgc3VwcG9ydGVkIHpvb20gbGV2ZWxzXG4gKiBmb3IgdGhpcyByZWN0YW5nbGUuXG4gKlxuICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb25cbiAqIEBleHRlbmRzIE9wZW5TZWFkcmFnb24uUmVjdFxuICogQHBhcmFtIHtOdW1iZXJ9IHggVGhlIHZlY3RvciBjb21wb25lbnQgJ3gnLlxuICogQHBhcmFtIHtOdW1iZXJ9IHkgVGhlIHZlY3RvciBjb21wb25lbnQgJ3knLlxuICogQHBhcmFtIHtOdW1iZXJ9IHdpZHRoIFRoZSB2ZWN0b3IgY29tcG9uZW50ICdoZWlnaHQnLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCBUaGUgdmVjdG9yIGNvbXBvbmVudCAnd2lkdGgnLlxuICogQHBhcmFtIHtOdW1iZXJ9IG1pbkxldmVsIFRoZSBsb3dlc3Qgem9vbSBsZXZlbCBzdXBwb3J0ZWQuXG4gKiBAcGFyYW0ge051bWJlcn0gbWF4TGV2ZWwgVGhlIGhpZ2hlc3Qgem9vbSBsZXZlbCBzdXBwb3J0ZWQuXG4gKi9cbiQuRGlzcGxheVJlY3QgPSBmdW5jdGlvbiggeCwgeSwgd2lkdGgsIGhlaWdodCwgbWluTGV2ZWwsIG1heExldmVsICkge1xuICAgICQuUmVjdC5hcHBseSggdGhpcywgWyB4LCB5LCB3aWR0aCwgaGVpZ2h0IF0gKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBsb3dlc3Qgem9vbSBsZXZlbCBzdXBwb3J0ZWQuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBtaW5MZXZlbFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkRpc3BsYXlSZWN0I1xuICAgICAqL1xuICAgIHRoaXMubWluTGV2ZWwgPSBtaW5MZXZlbDtcbiAgICAvKipcbiAgICAgKiBUaGUgaGlnaGVzdCB6b29tIGxldmVsIHN1cHBvcnRlZC5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IG1heExldmVsXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uRGlzcGxheVJlY3QjXG4gICAgICovXG4gICAgdGhpcy5tYXhMZXZlbCA9IG1heExldmVsO1xufTtcblxuJC5leHRlbmQoICQuRGlzcGxheVJlY3QucHJvdG90eXBlLCAkLlJlY3QucHJvdG90eXBlICk7XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gU3ByaW5nXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIEBjbGFzcyBTcHJpbmdcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFNwcmluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzLlxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMuc3ByaW5nU3RpZmZuZXNzIC0gU3ByaW5nIHN0aWZmbmVzcy4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby5cbiAqIFRoZSBjbG9zZXIgdG8gemVybywgdGhlIGNsb3NlciB0byBsaW5lYXIgYW5pbWF0aW9uLlxuICogQHBhcmFtIHtOdW1iZXJ9IG9wdGlvbnMuYW5pbWF0aW9uVGltZSAtIEFuaW1hdGlvbiBkdXJhdGlvbiBwZXIgc3ByaW5nLCBpbiBzZWNvbmRzLlxuICogTXVzdCBiZSB6ZXJvIG9yIGdyZWF0ZXIuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuaW5pdGlhbD0wXSAtIEluaXRpYWwgdmFsdWUgb2Ygc3ByaW5nLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5leHBvbmVudGlhbD1mYWxzZV0gLSBXaGV0aGVyIHRoaXMgc3ByaW5nIHJlcHJlc2VudHNcbiAqIGFuIGV4cG9uZW50aWFsIHNjYWxlIChzdWNoIGFzIHpvb20pIGFuZCBzaG91bGQgYmUgYW5pbWF0ZWQgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdFxuICogZXhwb25lbnRpYWwgc3ByaW5ncyBtdXN0IGhhdmUgbm9uLXplcm8gdmFsdWVzLlxuICovXG4kLlNwcmluZyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gICAgaWYoIHR5cGVvZiggb3B0aW9ucyApICE9ICdvYmplY3QnICl7XG4gICAgICAgIC8vYWxsb3dzIGJhY2t3YXJkIGNvbXBhdGlibGUgdXNlIG9mICggaW5pdGlhbFZhbHVlLCBjb25maWcgKSBhc1xuICAgICAgICAvL2NvbnN0cnVjdG9yIHBhcmFtZXRlcnNcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGluaXRpYWw6IGFyZ3MubGVuZ3RoICYmIHR5cGVvZiAoIGFyZ3NbIDAgXSApID09IFwibnVtYmVyXCIgP1xuICAgICAgICAgICAgICAgIGFyZ3NbIDAgXSA6XG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcHJpbmcgc3RpZmZuZXNzLlxuICAgICAgICAgICAgICogQG1lbWJlciB7TnVtYmVyfSBzcHJpbmdTdGlmZm5lc3NcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlNwcmluZyNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3ByaW5nU3RpZmZuZXNzOiBhcmdzLmxlbmd0aCA+IDEgP1xuICAgICAgICAgICAgICAgIGFyZ3NbIDEgXS5zcHJpbmdTdGlmZm5lc3MgOlxuICAgICAgICAgICAgICAgIDUuMCxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uIGR1cmF0aW9uIHBlciBzcHJpbmcuXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IGFuaW1hdGlvblRpbWVcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlNwcmluZyNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYW5pbWF0aW9uVGltZTogYXJncy5sZW5ndGggPiAxID9cbiAgICAgICAgICAgICAgICBhcmdzWyAxIF0uYW5pbWF0aW9uVGltZSA6XG4gICAgICAgICAgICAgICAgMS41XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgJC5jb25zb2xlLmFzc2VydCh0eXBlb2Ygb3B0aW9ucy5zcHJpbmdTdGlmZm5lc3MgPT09IFwibnVtYmVyXCIgJiYgb3B0aW9ucy5zcHJpbmdTdGlmZm5lc3MgIT09IDAsXG4gICAgICAgIFwiW09wZW5TZWFkcmFnb24uU3ByaW5nXSBvcHRpb25zLnNwcmluZ1N0aWZmbmVzcyBtdXN0IGJlIGEgbm9uLXplcm8gbnVtYmVyXCIpO1xuXG4gICAgJC5jb25zb2xlLmFzc2VydCh0eXBlb2Ygb3B0aW9ucy5hbmltYXRpb25UaW1lID09PSBcIm51bWJlclwiICYmIG9wdGlvbnMuYW5pbWF0aW9uVGltZSA+PSAwLFxuICAgICAgICBcIltPcGVuU2VhZHJhZ29uLlNwcmluZ10gb3B0aW9ucy5hbmltYXRpb25UaW1lIG11c3QgYmUgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDBcIik7XG5cbiAgICBpZiAob3B0aW9ucy5leHBvbmVudGlhbCkge1xuICAgICAgICB0aGlzLl9leHBvbmVudGlhbCA9IHRydWU7XG4gICAgICAgIGRlbGV0ZSBvcHRpb25zLmV4cG9uZW50aWFsO1xuICAgIH1cblxuICAgICQuZXh0ZW5kKCB0cnVlLCB0aGlzLCBvcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXIge09iamVjdH0gY3VycmVudFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlNwcmluZyNcbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gdmFsdWVcbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gdGltZVxuICAgICAqL1xuICAgIHRoaXMuY3VycmVudCA9IHtcbiAgICAgICAgdmFsdWU6IHR5cGVvZiAoIHRoaXMuaW5pdGlhbCApID09IFwibnVtYmVyXCIgP1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsIDpcbiAgICAgICAgICAgICh0aGlzLl9leHBvbmVudGlhbCA/IDAgOiAxKSxcbiAgICAgICAgdGltZTogICQubm93KCkgLy8gYWx3YXlzIHdvcmsgaW4gbWlsbGlzZWNvbmRzXG4gICAgfTtcblxuICAgICQuY29uc29sZS5hc3NlcnQoIXRoaXMuX2V4cG9uZW50aWFsIHx8IHRoaXMuY3VycmVudC52YWx1ZSAhPT0gMCxcbiAgICAgICAgXCJbT3BlblNlYWRyYWdvbi5TcHJpbmddIHZhbHVlIG11c3QgYmUgbm9uLXplcm8gZm9yIGV4cG9uZW50aWFsIHNwcmluZ3NcIik7XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyIHtPYmplY3R9IHN0YXJ0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uU3ByaW5nI1xuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB2YWx1ZVxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0aW1lXG4gICAgICovXG4gICAgdGhpcy5zdGFydCA9IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuY3VycmVudC52YWx1ZSxcbiAgICAgICAgdGltZTogIHRoaXMuY3VycmVudC50aW1lXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXIge09iamVjdH0gdGFyZ2V0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uU3ByaW5nI1xuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB2YWx1ZVxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0aW1lXG4gICAgICovXG4gICAgdGhpcy50YXJnZXQgPSB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmN1cnJlbnQudmFsdWUsXG4gICAgICAgIHRpbWU6ICB0aGlzLmN1cnJlbnQudGltZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5fZXhwb25lbnRpYWwpIHtcbiAgICAgICAgdGhpcy5zdGFydC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLnN0YXJ0LnZhbHVlKTtcbiAgICAgICAgdGhpcy50YXJnZXQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy50YXJnZXQudmFsdWUpO1xuICAgICAgICB0aGlzLmN1cnJlbnQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy5jdXJyZW50LnZhbHVlKTtcbiAgICB9XG59O1xuXG4vKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uU3ByaW5nLnByb3RvdHlwZSAqL1xuJC5TcHJpbmcucHJvdG90eXBlID0ge1xuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHRhcmdldFxuICAgICAqL1xuICAgIHJlc2V0VG86IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoIXRoaXMuX2V4cG9uZW50aWFsIHx8IHRhcmdldCAhPT0gMCxcbiAgICAgICAgICAgIFwiW09wZW5TZWFkcmFnb24uU3ByaW5nLnJlc2V0VG9dIHRhcmdldCBtdXN0IGJlIG5vbi16ZXJvIGZvciBleHBvbmVudGlhbCBzcHJpbmdzXCIpO1xuXG4gICAgICAgIHRoaXMuc3RhcnQudmFsdWUgPSB0aGlzLnRhcmdldC52YWx1ZSA9IHRoaXMuY3VycmVudC52YWx1ZSA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5zdGFydC50aW1lID0gdGhpcy50YXJnZXQudGltZSA9IHRoaXMuY3VycmVudC50aW1lID0gJC5ub3coKTtcblxuICAgICAgICBpZiAodGhpcy5fZXhwb25lbnRpYWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy5zdGFydC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy5jdXJyZW50LnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdGFyZ2V0XG4gICAgICovXG4gICAgc3ByaW5nVG86IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoIXRoaXMuX2V4cG9uZW50aWFsIHx8IHRhcmdldCAhPT0gMCxcbiAgICAgICAgICAgIFwiW09wZW5TZWFkcmFnb24uU3ByaW5nLnNwcmluZ1RvXSB0YXJnZXQgbXVzdCBiZSBub24temVybyBmb3IgZXhwb25lbnRpYWwgc3ByaW5nc1wiKTtcblxuICAgICAgICB0aGlzLnN0YXJ0LnZhbHVlICA9IHRoaXMuY3VycmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5zdGFydC50aW1lICAgPSB0aGlzLmN1cnJlbnQudGltZTtcbiAgICAgICAgdGhpcy50YXJnZXQudmFsdWUgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWUgID0gdGhpcy5zdGFydC50aW1lICsgMTAwMCAqIHRoaXMuYW5pbWF0aW9uVGltZTtcblxuICAgICAgICBpZiAodGhpcy5fZXhwb25lbnRpYWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy5zdGFydC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGRlbHRhXG4gICAgICovXG4gICAgc2hpZnRCeTogZnVuY3Rpb24oIGRlbHRhICkge1xuICAgICAgICB0aGlzLnN0YXJ0LnZhbHVlICArPSBkZWx0YTtcbiAgICAgICAgdGhpcy50YXJnZXQudmFsdWUgKz0gZGVsdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuX2V4cG9uZW50aWFsKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KHRoaXMudGFyZ2V0LnZhbHVlICE9PSAwICYmIHRoaXMuc3RhcnQudmFsdWUgIT09IDAsXG4gICAgICAgICAgICAgICAgXCJbT3BlblNlYWRyYWdvbi5TcHJpbmcuc2hpZnRCeV0gc3ByaW5nIHZhbHVlIG11c3QgYmUgbm9uLXplcm8gZm9yIGV4cG9uZW50aWFsIHNwcmluZ3NcIik7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhcnQuX2xvZ1ZhbHVlID0gTWF0aC5sb2codGhpcy5zdGFydC52YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgc2V0RXhwb25lbnRpYWw6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2V4cG9uZW50aWFsID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2V4cG9uZW50aWFsKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KHRoaXMuY3VycmVudC52YWx1ZSAhPT0gMCAmJiB0aGlzLnRhcmdldC52YWx1ZSAhPT0gMCAmJiB0aGlzLnN0YXJ0LnZhbHVlICE9PSAwLFxuICAgICAgICAgICAgICAgIFwiW09wZW5TZWFkcmFnb24uU3ByaW5nLnNldEV4cG9uZW50aWFsXSBzcHJpbmcgdmFsdWUgbXVzdCBiZSBub24temVybyBmb3IgZXhwb25lbnRpYWwgc3ByaW5nc1wiKTtcblxuICAgICAgICAgICAgdGhpcy5zdGFydC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLnN0YXJ0LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Ll9sb2dWYWx1ZSA9IE1hdGgubG9nKHRoaXMudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5fbG9nVmFsdWUgPSBNYXRoLmxvZyh0aGlzLmN1cnJlbnQudmFsdWUpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudC50aW1lICA9ICQubm93KCk7XG5cbiAgICAgICAgdmFyIHN0YXJ0VmFsdWUsIHRhcmdldFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fZXhwb25lbnRpYWwpIHtcbiAgICAgICAgICAgIHN0YXJ0VmFsdWUgPSB0aGlzLnN0YXJ0Ll9sb2dWYWx1ZTtcbiAgICAgICAgICAgIHRhcmdldFZhbHVlID0gdGhpcy50YXJnZXQuX2xvZ1ZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhcnRWYWx1ZSA9IHRoaXMuc3RhcnQudmFsdWU7XG4gICAgICAgICAgICB0YXJnZXRWYWx1ZSA9IHRoaXMudGFyZ2V0LnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9ICh0aGlzLmN1cnJlbnQudGltZSA+PSB0aGlzLnRhcmdldC50aW1lKSA/XG4gICAgICAgICAgICB0YXJnZXRWYWx1ZSA6XG4gICAgICAgICAgICBzdGFydFZhbHVlICtcbiAgICAgICAgICAgICAgICAoIHRhcmdldFZhbHVlIC0gc3RhcnRWYWx1ZSApICpcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3ByaW5nU3RpZmZuZXNzLFxuICAgICAgICAgICAgICAgICAgICAoIHRoaXMuY3VycmVudC50aW1lIC0gdGhpcy5zdGFydC50aW1lICkgL1xuICAgICAgICAgICAgICAgICAgICAoIHRoaXMudGFyZ2V0LnRpbWUgIC0gdGhpcy5zdGFydC50aW1lIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLl9leHBvbmVudGlhbCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnZhbHVlID0gTWF0aC5leHAoY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC52YWx1ZSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHNwcmluZyBpcyBhdCB0aGUgdGFyZ2V0IHZhbHVlXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgYXQgdGFyZ2V0IHZhbHVlLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBpc0F0VGFyZ2V0VmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50LnZhbHVlID09PSB0aGlzLnRhcmdldC52YWx1ZTtcbiAgICB9XG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybSggc3RpZmZuZXNzLCB4ICkge1xuICAgIHJldHVybiAoIDEuMCAtIE1hdGguZXhwKCBzdGlmZm5lc3MgKiAteCApICkgL1xuICAgICAgICAoIDEuMCAtIE1hdGguZXhwKCAtc3RpZmZuZXNzICkgKTtcbn1cblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBJbWFnZUxvYWRlclxuICpcbiAqIENvcHlyaWdodCAoQykgMjAwOSBDb2RlUGxleCBGb3VuZGF0aW9uXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMyBPcGVuU2VhZHJhZ29uIGNvbnRyaWJ1dG9yc1xuXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8vIHByaXZhdGUgY2xhc3NcbmZ1bmN0aW9uIEltYWdlSm9iICggb3B0aW9ucyApIHtcblxuICAgICQuZXh0ZW5kKCB0cnVlLCB0aGlzLCB7XG4gICAgICAgIHRpbWVvdXQ6ICAgICAgICAkLkRFRkFVTFRfU0VUVElOR1MudGltZW91dCxcbiAgICAgICAgam9iSWQ6ICAgICAgICAgIG51bGxcbiAgICB9LCBvcHRpb25zICk7XG5cbiAgICAvKipcbiAgICAgKiBJbWFnZSBvYmplY3Qgd2hpY2ggd2lsbCBjb250YWluIGRvd25sb2FkZWQgaW1hZ2UuXG4gICAgICogQG1lbWJlciB7SW1hZ2V9IGltYWdlXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uSW1hZ2VKb2IjXG4gICAgICovXG4gICAgdGhpcy5pbWFnZSA9IG51bGw7XG59XG5cbkltYWdlSm9iLnByb3RvdHlwZSA9IHtcbiAgICBlcnJvck1zZzogbnVsbCxcbiAgICBzdGFydDogZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB0aGlzLmltYWdlID0gbmV3IEltYWdlKCk7XG5cbiAgICAgICAgaWYgKCB0aGlzLmNyb3NzT3JpZ2luUG9saWN5ICE9PSBmYWxzZSApIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2UuY3Jvc3NPcmlnaW4gPSB0aGlzLmNyb3NzT3JpZ2luUG9saWN5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgX3RoaXMuZmluaXNoKCB0cnVlICk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW1hZ2Uub25hYm9ydCA9IHRoaXMuaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBfdGhpcy5lcnJvck1zZyA9IFwiSW1hZ2UgbG9hZCBhYm9ydGVkXCI7XG4gICAgICAgICAgICBfdGhpcy5maW5pc2goIGZhbHNlICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5qb2JJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgX3RoaXMuZXJyb3JNc2cgPSBcIkltYWdlIGxvYWQgZXhjZWVkZWQgdGltZW91dFwiO1xuICAgICAgICAgICAgX3RoaXMuZmluaXNoKCBmYWxzZSApO1xuICAgICAgICB9LCB0aGlzLnRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuaW1hZ2Uuc3JjID0gdGhpcy5zcmM7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oIHN1Y2Nlc3NmdWwgKSB7XG4gICAgICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gdGhpcy5pbWFnZS5vbmVycm9yID0gdGhpcy5pbWFnZS5vbmFib3J0ID0gbnVsbDtcbiAgICAgICAgaWYgKCFzdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdGhpcy5qb2JJZCApIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoIHRoaXMuam9iSWQgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbGJhY2soIHRoaXMgKTtcbiAgICB9XG5cbn07XG5cbi8qKlxuICogQGNsYXNzIEltYWdlTG9hZGVyXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGNsYXNzZGVzYyBIYW5kbGVzIGRvd25sb2FkaW5nIG9mIGEgc2V0IG9mIGltYWdlcyB1c2luZyBhc3luY2hyb25vdXMgcXVldWUgcGF0dGVybi5cbiAqIFlvdSBnZW5lcmFsbHkgd29uJ3QgaGF2ZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBJbWFnZUxvYWRlciBkaXJlY3RseS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhpcyBJbWFnZUxvYWRlci5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5qb2JMaW1pdF0gLSBUaGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgaW1hZ2UgcmVxdWVzdHMuIFNlZSBpbWFnZUxvYWRlckxpbWl0IGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9IGZvciBkZXRhaWxzLlxuICovXG4kLkltYWdlTG9hZGVyID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cbiAgICAkLmV4dGVuZCggdHJ1ZSwgdGhpcywge1xuICAgICAgICBqb2JMaW1pdDogICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmltYWdlTG9hZGVyTGltaXQsXG4gICAgICAgIGpvYlF1ZXVlOiAgICAgICBbXSxcbiAgICAgICAgam9ic0luUHJvZ3Jlc3M6IDBcbiAgICB9LCBvcHRpb25zICk7XG5cbn07XG5cbi8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5JbWFnZUxvYWRlci5wcm90b3R5cGUgKi9cbiQuSW1hZ2VMb2FkZXIucHJvdG90eXBlID0ge1xuXG4gICAgLyoqXG4gICAgICogQWRkIGFuIHVubG9hZGVkIGltYWdlIHRvIHRoZSBsb2FkZXIgcXVldWUuXG4gICAgICogQG1ldGhvZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBzcmMgLSBVUkwgb2YgaW1hZ2UgdG8gZG93bmxvYWQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNyb3NzT3JpZ2luUG9saWN5IC0gQ09SUyBwb2xpY3kgdG8gdXNlIGZvciBkb3dubG9hZHNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIENhbGxlZCBvbmNlIGltYWdlIGhhcyBiZWVuIGRvd25sb2FkZWQuXG4gICAgICovXG4gICAgYWRkSm9iOiBmdW5jdGlvbiggb3B0aW9ucyApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgICAgIGNvbXBsZXRlID0gZnVuY3Rpb24oIGpvYiApIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUpvYiggX3RoaXMsIGpvYiwgb3B0aW9ucy5jYWxsYmFjayApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGpvYk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgc3JjOiBvcHRpb25zLnNyYyxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpblBvbGljeTogb3B0aW9ucy5jcm9zc09yaWdpblBvbGljeSxcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogY29tcGxldGUsXG4gICAgICAgICAgICAgICAgYWJvcnQ6IG9wdGlvbnMuYWJvcnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXdKb2IgPSBuZXcgSW1hZ2VKb2IoIGpvYk9wdGlvbnMgKTtcblxuICAgICAgICBpZiAoICF0aGlzLmpvYkxpbWl0IHx8IHRoaXMuam9ic0luUHJvZ3Jlc3MgPCB0aGlzLmpvYkxpbWl0ICkge1xuICAgICAgICAgICAgbmV3Sm9iLnN0YXJ0KCk7XG4gICAgICAgICAgICB0aGlzLmpvYnNJblByb2dyZXNzKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmpvYlF1ZXVlLnB1c2goIG5ld0pvYiApO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENsZWFyIGFueSB1bnN0YXJ0ZWQgaW1hZ2UgbG9hZGluZyBqb2JzIGZyb20gdGhlIHF1ZXVlLlxuICAgICAqIEBtZXRob2RcbiAgICAgKi9cbiAgICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciggdmFyIGkgPSAwOyBpIDwgdGhpcy5qb2JRdWV1ZS5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIHZhciBqb2IgPSB0aGlzLmpvYlF1ZXVlW2ldO1xuICAgICAgICAgICAgaWYgKCB0eXBlb2Ygam9iLmFib3J0ID09PSBcImZ1bmN0aW9uXCIgKSB7XG4gICAgICAgICAgICAgICAgam9iLmFib3J0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmpvYlF1ZXVlID0gW107XG4gICAgfVxufTtcblxuLyoqXG4gKiBDbGVhbnMgdXAgSW1hZ2VKb2Igb25jZSBjb21wbGV0ZWQuXG4gKiBAbWV0aG9kXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGxvYWRlciAtIEltYWdlTG9hZGVyIHVzZWQgdG8gc3RhcnQgam9iLlxuICogQHBhcmFtIGpvYiAtIFRoZSBJbWFnZUpvYiB0aGF0IGhhcyBjb21wbGV0ZWQuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsZWQgb25jZSBjbGVhbnVwIGlzIGZpbmlzaGVkLlxuICovXG5mdW5jdGlvbiBjb21wbGV0ZUpvYiggbG9hZGVyLCBqb2IsIGNhbGxiYWNrICkge1xuICAgIHZhciBuZXh0Sm9iO1xuXG4gICAgbG9hZGVyLmpvYnNJblByb2dyZXNzLS07XG5cbiAgICBpZiAoICghbG9hZGVyLmpvYkxpbWl0IHx8IGxvYWRlci5qb2JzSW5Qcm9ncmVzcyA8IGxvYWRlci5qb2JMaW1pdCkgJiYgbG9hZGVyLmpvYlF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbmV4dEpvYiA9IGxvYWRlci5qb2JRdWV1ZS5zaGlmdCgpO1xuICAgICAgICBuZXh0Sm9iLnN0YXJ0KCk7XG4gICAgICAgIGxvYWRlci5qb2JzSW5Qcm9ncmVzcysrO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKCBqb2IuaW1hZ2UsIGpvYi5lcnJvck1zZyApO1xufVxuXG59KCBPcGVuU2VhZHJhZ29uICkpO1xuXG4vKlxuICogT3BlblNlYWRyYWdvbiAtIFRpbGVcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIFRpbGVcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAcGFyYW0ge051bWJlcn0gbGV2ZWwgVGhlIHpvb20gbGV2ZWwgdGhpcyB0aWxlIGJlbG9uZ3MgdG8uXG4gKiBAcGFyYW0ge051bWJlcn0geCBUaGUgdmVjdG9yIGNvbXBvbmVudCAneCcuXG4gKiBAcGFyYW0ge051bWJlcn0geSBUaGUgdmVjdG9yIGNvbXBvbmVudCAneScuXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGJvdW5kcyBXaGVyZSB0aGlzIHRpbGUgZml0cywgaW4gbm9ybWFsaXplZFxuICogICAgICBjb29yZGluYXRlcy5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZXhpc3RzIElzIHRoaXMgdGlsZSBhIHBhcnQgb2YgYSBzcGFyc2UgaW1hZ2U/ICggQWxzbyBoYXNcbiAqICAgICAgdGhpcyB0aWxlIGZhaWxlZCB0byBsb2FkPyApXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgb2YgdGhpcyB0aWxlJ3MgaW1hZ2UuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dDJEIFRoZSBjb250ZXh0MkQgb2YgdGhpcyB0aWxlIGlmIGl0XG4gKiBpcyBwcm92aWRlZCBkaXJlY3RseSBieSB0aGUgdGlsZSBzb3VyY2UuXG4gKi9cbiQuVGlsZSA9IGZ1bmN0aW9uKGxldmVsLCB4LCB5LCBib3VuZHMsIGV4aXN0cywgdXJsLCBjb250ZXh0MkQpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgem9vbSBsZXZlbCB0aGlzIHRpbGUgYmVsb25ncyB0by5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IGxldmVsXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLmxldmVsICAgPSBsZXZlbDtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVjdG9yIGNvbXBvbmVudCAneCcuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSB4XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLnggICAgICAgPSB4O1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZWN0b3IgY29tcG9uZW50ICd5Jy5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IHlcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMueSAgICAgICA9IHk7XG4gICAgLyoqXG4gICAgICogV2hlcmUgdGhpcyB0aWxlIGZpdHMsIGluIG5vcm1hbGl6ZWQgY29vcmRpbmF0ZXNcbiAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLlJlY3R9IGJvdW5kc1xuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5ib3VuZHMgID0gYm91bmRzO1xuICAgIC8qKlxuICAgICAqIElzIHRoaXMgdGlsZSBhIHBhcnQgb2YgYSBzcGFyc2UgaW1hZ2U/IEFsc28gaGFzIHRoaXMgdGlsZSBmYWlsZWQgdG8gbG9hZD9cbiAgICAgKiBAbWVtYmVyIHtCb29sZWFufSBleGlzdHNcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMuZXhpc3RzICA9IGV4aXN0cztcbiAgICAvKipcbiAgICAgKiBUaGUgVVJMIG9mIHRoaXMgdGlsZSdzIGltYWdlLlxuICAgICAqIEBtZW1iZXIge1N0cmluZ30gdXJsXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLnVybCAgICAgPSB1cmw7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbnRleHQyRCBvZiB0aGlzIHRpbGUgaWYgaXQgaXMgcHJvdmlkZWQgZGlyZWN0bHkgYnkgdGhlIHRpbGUgc291cmNlLlxuICAgICAqIEBtZW1iZXIge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dDJEXG4gICAgICogQG1lbWJlck9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLmNvbnRleHQyRCA9IGNvbnRleHQyRDtcbiAgICAvKipcbiAgICAgKiBJcyB0aGlzIHRpbGUgbG9hZGVkP1xuICAgICAqIEBtZW1iZXIge0Jvb2xlYW59IGxvYWRlZFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5sb2FkZWQgID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSXMgdGhpcyB0aWxlIGxvYWRpbmc/XG4gICAgICogQG1lbWJlciB7Qm9vbGVhbn0gbG9hZGluZ1xuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgSFRNTCBkaXYgZWxlbWVudCBmb3IgdGhpcyB0aWxlXG4gICAgICogQG1lbWJlciB7RWxlbWVudH0gZWxlbWVudFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5lbGVtZW50ICAgID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBUaGUgSFRNTCBpbWcgZWxlbWVudCBmb3IgdGhpcyB0aWxlLlxuICAgICAqIEBtZW1iZXIge0VsZW1lbnR9IGltZ0VsZW1lbnRcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMuaW1nRWxlbWVudCA9IG51bGw7XG4gICAgLyoqXG4gICAgICogVGhlIEltYWdlIG9iamVjdCBmb3IgdGhpcyB0aWxlLlxuICAgICAqIEBtZW1iZXIge09iamVjdH0gaW1hZ2VcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMuaW1hZ2UgICAgICA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYWxpYXMgb2YgdGhpcy5lbGVtZW50LnN0eWxlLlxuICAgICAqIEBtZW1iZXIge1N0cmluZ30gc3R5bGVcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMuc3R5bGUgICAgICA9IG51bGw7XG4gICAgLyoqXG4gICAgICogVGhpcyB0aWxlJ3MgcG9zaXRpb24gb24gc2NyZWVuLCBpbiBwaXhlbHMuXG4gICAgICogQG1lbWJlciB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9zaXRpb25cbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMucG9zaXRpb24gICA9IG51bGw7XG4gICAgLyoqXG4gICAgICogVGhpcyB0aWxlJ3Mgc2l6ZSBvbiBzY3JlZW4sIGluIHBpeGVscy5cbiAgICAgKiBAbWVtYmVyIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBzaXplXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLnNpemUgICAgICAgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSBzdGFydCB0aW1lIG9mIHRoaXMgdGlsZSdzIGJsZW5kaW5nLlxuICAgICAqIEBtZW1iZXIge051bWJlcn0gYmxlbmRTdGFydFxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5ibGVuZFN0YXJ0ID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudCBvcGFjaXR5IHRoaXMgdGlsZSBzaG91bGQgYmUuXG4gICAgICogQG1lbWJlciB7TnVtYmVyfSBvcGFjaXR5XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLm9wYWNpdHkgICAgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSBkaXN0YW5jZSBvZiB0aGlzIHRpbGUgdG8gdGhlIHZpZXdwb3J0IGNlbnRlci5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IGRpc3RhbmNlXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVGlsZSNcbiAgICAgKi9cbiAgICB0aGlzLmRpc3RhbmNlICAgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFRoZSB2aXNpYmlsaXR5IHNjb3JlIG9mIHRoaXMgdGlsZS5cbiAgICAgKiBAbWVtYmVyIHtOdW1iZXJ9IHZpc2liaWxpdHlcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5UaWxlI1xuICAgICAqL1xuICAgIHRoaXMudmlzaWJpbGl0eSA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgdGlsZSBpcyBjdXJyZW50bHkgYmVpbmcgZHJhd24uXG4gICAgICogQG1lbWJlciB7Qm9vbGVhbn0gYmVpbmdEcmF3blxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5iZWluZ0RyYXduICAgICA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRpbWVzdGFtcCB0aGUgdGlsZSB3YXMgbGFzdCB0b3VjaGVkLlxuICAgICAqIEBtZW1iZXIge051bWJlcn0gbGFzdFRvdWNoVGltZVxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlRpbGUjXG4gICAgICovXG4gICAgdGhpcy5sYXN0VG91Y2hUaW1lICA9IDA7XG59O1xuXG4vKiogQGxlbmRzIE9wZW5TZWFkcmFnb24uVGlsZS5wcm90b3R5cGUgKi9cbiQuVGlsZS5wcm90b3R5cGUgPSB7XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRpbGVzIGxldmVsIGFuZCAoeCx5KVxuICAgICAqIGNvbXBvbmVudHMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge1N0cmluZ31cbiAgICAgKi9cbiAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxldmVsICsgXCIvXCIgKyB0aGlzLnggKyBcIl9cIiArIHRoaXMueTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9oYXNUcmFuc3BhcmVuY3lDaGFubmVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb250ZXh0MkQgfHwgdGhpcy51cmwubWF0Y2goJy5wbmcnKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgdGlsZSBpbiBhbiBodG1sIGNvbnRhaW5lci5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRhaW5lclxuICAgICAqL1xuICAgIGRyYXdIVE1MOiBmdW5jdGlvbiggY29udGFpbmVyICkge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGVJbWFnZVJlY29yZCkge1xuICAgICAgICAgICAgJC5jb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1tUaWxlLmRyYXdIVE1MXSBhdHRlbXB0aW5nIHRvIGRyYXcgdGlsZSAlcyB3aGVuIGl0XFwncyBub3QgY2FjaGVkJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhdGhpcy5sb2FkZWQgKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBcIkF0dGVtcHRpbmcgdG8gZHJhdyB0aWxlICVzIHdoZW4gaXQncyBub3QgeWV0IGxvYWRlZC5cIixcbiAgICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvL0VYUEVSSU1FTlRBTCAtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBzY2FsZSB0aGUgY29udGFpbmVyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgY29udGVudCBkdXJpbmcgYW5pbWF0aW9uIG9mIHRoZSBjb250YWluZXIgc2l6ZS5cblxuICAgICAgICBpZiAoICF0aGlzLmVsZW1lbnQgKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCBcImRpdlwiICk7XG4gICAgICAgICAgICB0aGlzLmltZ0VsZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRoaXMuY2FjaGVJbWFnZVJlY29yZC5nZXRJbWFnZSgpLmNsb25lTm9kZSgpO1xuICAgICAgICAgICAgdGhpcy5pbWdFbGVtZW50LnN0eWxlLm1zSW50ZXJwb2xhdGlvbk1vZGUgPSBcIm5lYXJlc3QtbmVpZ2hib3JcIjtcbiAgICAgICAgICAgIHRoaXMuaW1nRWxlbWVudC5zdHlsZS53aWR0aCAgICAgICAgICAgICAgID0gXCIxMDAlXCI7XG4gICAgICAgICAgICB0aGlzLmltZ0VsZW1lbnQuc3R5bGUuaGVpZ2h0ICAgICAgICAgICAgICA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgICB0aGlzLnN0eWxlICAgICAgICAgICAgICAgICAgICAgPSB0aGlzLmVsZW1lbnQuc3R5bGU7XG4gICAgICAgICAgICB0aGlzLnN0eWxlLnBvc2l0aW9uICAgICAgICAgICAgPSBcImFic29sdXRlXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSAhPSBjb250YWluZXIgKSB7XG4gICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoIHRoaXMuZWxlbWVudCApO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5pbWdFbGVtZW50LnBhcmVudE5vZGUgIT0gdGhpcy5lbGVtZW50ICkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKCB0aGlzLmltZ0VsZW1lbnQgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3R5bGUudG9wICAgICA9IHRoaXMucG9zaXRpb24ueSArIFwicHhcIjtcbiAgICAgICAgdGhpcy5zdHlsZS5sZWZ0ICAgID0gdGhpcy5wb3NpdGlvbi54ICsgXCJweFwiO1xuICAgICAgICB0aGlzLnN0eWxlLmhlaWdodCAgPSB0aGlzLnNpemUueSArIFwicHhcIjtcbiAgICAgICAgdGhpcy5zdHlsZS53aWR0aCAgID0gdGhpcy5zaXplLnggKyBcInB4XCI7XG5cbiAgICAgICAgJC5zZXRFbGVtZW50T3BhY2l0eSggdGhpcy5lbGVtZW50LCB0aGlzLm9wYWNpdHkgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgdGlsZSBpbiBhIGNhbnZhcy1iYXNlZCBjb250ZXh0LlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Q2FudmFzfSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZHJhd2luZ0hhbmRsZXIgLSBNZXRob2QgZm9yIGZpcmluZyB0aGUgZHJhd2luZyBldmVudC5cbiAgICAgKiBkcmF3aW5nSGFuZGxlcih7Y29udGV4dCwgdGlsZSwgcmVuZGVyZWR9KVxuICAgICAqIHdoZXJlIDxjb2RlPnJlbmRlcmVkPC9jb2RlPiBpcyB0aGUgY29udGV4dCB3aXRoIHRoZSBwcmUtZHJhd24gaW1hZ2UuXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtzY2FsZT0xXSAtIEFwcGx5IGEgc2NhbGUgdG8gcG9zaXRpb24gYW5kIHNpemVcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IFt0cmFuc2xhdGVdIC0gQSB0cmFuc2xhdGlvbiB2ZWN0b3JcbiAgICAgKi9cbiAgICBkcmF3Q2FudmFzOiBmdW5jdGlvbiggY29udGV4dCwgZHJhd2luZ0hhbmRsZXIsIHNjYWxlLCB0cmFuc2xhdGUgKSB7XG5cbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbi50aW1lcygkLnBpeGVsRGVuc2l0eVJhdGlvKSxcbiAgICAgICAgICAgIHNpemUgICAgID0gdGhpcy5zaXplLnRpbWVzKCQucGl4ZWxEZW5zaXR5UmF0aW8pLFxuICAgICAgICAgICAgcmVuZGVyZWQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQyRCAmJiAhdGhpcy5jYWNoZUltYWdlUmVjb3JkKSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnW1RpbGUuZHJhd0NhbnZhc10gYXR0ZW1wdGluZyB0byBkcmF3IHRpbGUgJXMgd2hlbiBpdFxcJ3Mgbm90IGNhY2hlZCcsXG4gICAgICAgICAgICAgICAgdGhpcy50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlcmVkID0gdGhpcy5jb250ZXh0MkQgfHwgdGhpcy5jYWNoZUltYWdlUmVjb3JkLmdldFJlbmRlcmVkQ29udGV4dCgpO1xuXG4gICAgICAgIGlmICggIXRoaXMubG9hZGVkIHx8ICFyZW5kZXJlZCApe1xuICAgICAgICAgICAgJC5jb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgXCJBdHRlbXB0aW5nIHRvIGRyYXcgdGlsZSAlcyB3aGVuIGl0J3Mgbm90IHlldCBsb2FkZWQuXCIsXG4gICAgICAgICAgICAgICAgdGhpcy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gdGhpcy5vcGFjaXR5O1xuXG4gICAgICAgIGlmICh0eXBlb2Ygc2NhbGUgPT09ICdudW1iZXInICYmIHNjYWxlICE9PSAxKSB7XG4gICAgICAgICAgICAvLyBkcmF3IHRpbGUgYXQgYSBkaWZmZXJlbnQgc2NhbGVcbiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24udGltZXMoc2NhbGUpO1xuICAgICAgICAgICAgc2l6ZSA9IHNpemUudGltZXMoc2NhbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRyYW5zbGF0ZSBpbnN0YW5jZW9mICQuUG9pbnQpIHtcbiAgICAgICAgICAgIC8vIHNoaWZ0IHRpbGUgcG9zaXRpb24gc2xpZ2h0bHlcbiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24ucGx1cyh0cmFuc2xhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB3ZSBhcmUgc3VwcG9zZWQgdG8gYmUgcmVuZGVyaW5nIGZ1bGx5IG9wYXF1ZSByZWN0YW5nbGUsXG4gICAgICAgIC8vaWUgaXRzIGRvbmUgZmFkaW5nIG9yIGZhZGluZyBpcyB0dXJuZWQgb2ZmLCBhbmQgaWYgd2UgYXJlIGRyYXdpbmdcbiAgICAgICAgLy9hbiBpbWFnZSB3aXRoIGFuIGFscGhhIGNoYW5uZWwsIHRoZW4gdGhlIG9ubHkgd2F5XG4gICAgICAgIC8vdG8gYXZvaWQgc2VlaW5nIHRoZSB0aWxlIHVuZGVybmVhdGggaXMgdG8gY2xlYXIgdGhlIHJlY3RhbmdsZVxuICAgICAgICBpZiAoY29udGV4dC5nbG9iYWxBbHBoYSA9PT0gMSAmJiB0aGlzLl9oYXNUcmFuc3BhcmVuY3lDaGFubmVsKCkpIHtcbiAgICAgICAgICAgIC8vY2xlYXJpbmcgb25seSB0aGUgaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUgb2NjdXBpZWRcbiAgICAgICAgICAgIC8vYnkgdGhlIHBuZyBwcmV2ZW50cyBlZGdlIGZsaWtlcmluZ1xuICAgICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoXG4gICAgICAgICAgICAgICAgcG9zaXRpb24ueCArIDEsXG4gICAgICAgICAgICAgICAgcG9zaXRpb24ueSArIDEsXG4gICAgICAgICAgICAgICAgc2l6ZS54IC0gMixcbiAgICAgICAgICAgICAgICBzaXplLnkgLSAyXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBnaXZlcyB0aGUgYXBwbGljYXRpb24gYSBjaGFuY2UgdG8gbWFrZSBpbWFnZSBtYW5pcHVsYXRpb25cbiAgICAgICAgLy8gY2hhbmdlcyBhcyB3ZSBhcmUgcmVuZGVyaW5nIHRoZSBpbWFnZVxuICAgICAgICBkcmF3aW5nSGFuZGxlcih7Y29udGV4dDogY29udGV4dCwgdGlsZTogdGhpcywgcmVuZGVyZWQ6IHJlbmRlcmVkfSk7XG5cbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICByZW5kZXJlZC5jYW52YXMsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHJlbmRlcmVkLmNhbnZhcy53aWR0aCxcbiAgICAgICAgICAgIHJlbmRlcmVkLmNhbnZhcy5oZWlnaHQsXG4gICAgICAgICAgICBwb3NpdGlvbi54LFxuICAgICAgICAgICAgcG9zaXRpb24ueSxcbiAgICAgICAgICAgIHNpemUueCxcbiAgICAgICAgICAgIHNpemUueVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHJhdGlvIGJldHdlZW4gY3VycmVudCBhbmQgb3JpZ2luYWwgc2l6ZS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtGbG9hdH1cbiAgICAgKi9cbiAgICBnZXRTY2FsZUZvckVkZ2VTbW9vdGhpbmc6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY29udGV4dDtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVJbWFnZVJlY29yZCkge1xuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMuY2FjaGVJbWFnZVJlY29yZC5nZXRSZW5kZXJlZENvbnRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbnRleHQyRCkge1xuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMuY29udGV4dDJEO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJC5jb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1tUaWxlLmRyYXdDYW52YXNdIGF0dGVtcHRpbmcgdG8gZ2V0IHRpbGUgc2NhbGUgJXMgd2hlbiB0aWxlXFwncyBub3QgY2FjaGVkJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRleHQuY2FudmFzLndpZHRoIC8gKHRoaXMuc2l6ZS54ICogJC5waXhlbERlbnNpdHlSYXRpbyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCBhIHRyYW5zbGF0aW9uIHZlY3RvciB0aGF0IHdoZW4gYXBwbGllZCB0byB0aGUgdGlsZSBwb3NpdGlvbiBwcm9kdWNlcyBpbnRlZ2VyIGNvb3JkaW5hdGVzLlxuICAgICAqIE5lZWRlZCB0byBhdm9pZCBzd2ltbWluZyBhbmQgdHdpdGNoaW5nLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbc2NhbGU9MV0gLSBTY2FsZSB0byBiZSBhcHBsaWVkIHRvIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgZ2V0VHJhbnNsYXRpb25Gb3JFZGdlU21vb3RoaW5nOiBmdW5jdGlvbihzY2FsZSwgY2FudmFzU2l6ZSwgc2tldGNoQ2FudmFzU2l6ZSkge1xuICAgICAgICAvLyBUaGUgdHJhbnNsYXRpb24gdmVjdG9yIG11c3QgaGF2ZSBwb3NpdGl2ZSB2YWx1ZXMsIG90aGVyd2lzZSB0aGUgaW1hZ2UgZ29lcyBhIGJpdCBvZmZcbiAgICAgICAgLy8gdGhlIHNrZXRjaCBjYW52YXMgdG8gdGhlIHRvcCBhbmQgbGVmdCBhbmQgd2UgbXVzdCB1c2UgbmVnYXRpdmUgY29vcmRpbmF0ZXMgdG8gcmVwYWludCBpdFxuICAgICAgICAvLyB0byB0aGUgbWFpbiBjYW52YXMuIEluIHRoYXQgY2FzZSwgc29tZSBicm93c2VycyB0aHJvdzpcbiAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IERPTSBFeGNlcHRpb24gMTogSW5kZXggb3Igc2l6ZSB3YXMgbmVnYXRpdmUsIG9yIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCB2YWx1ZS5cbiAgICAgICAgdmFyIHggPSBNYXRoLm1heCgxLCBNYXRoLmNlaWwoKHNrZXRjaENhbnZhc1NpemUueCAtIGNhbnZhc1NpemUueCkgLyAyKSk7XG4gICAgICAgIHZhciB5ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKChza2V0Y2hDYW52YXNTaXplLnkgLSBjYW52YXNTaXplLnkpIC8gMikpO1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoeCwgeSkubWludXMoXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgLnRpbWVzKCQucGl4ZWxEZW5zaXR5UmF0aW8pXG4gICAgICAgICAgICAgICAgLnRpbWVzKHNjYWxlIHx8IDEpXG4gICAgICAgICAgICAgICAgLmFwcGx5KGZ1bmN0aW9uKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHggJSAxO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGlsZSBmcm9tIGl0cyBjb250YWluZXIuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgdW5sb2FkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCB0aGlzLmltZ0VsZW1lbnQgJiYgdGhpcy5pbWdFbGVtZW50LnBhcmVudE5vZGUgKSB7XG4gICAgICAgICAgICB0aGlzLmltZ0VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGhpcy5pbWdFbGVtZW50ICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCB0aGlzLmVsZW1lbnQgJiYgdGhpcy5lbGVtZW50LnBhcmVudE5vZGUgKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGhpcy5lbGVtZW50ICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnQgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmltZ0VsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmxvYWRlZCAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nICAgID0gZmFsc2U7XG4gICAgfVxufTtcblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBPdmVybGF5XG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbigkKSB7XG5cbiAgICAvKipcbiAgICAgKiBBbiBlbnVtZXJhdGlvbiBvZiBwb3NpdGlvbnMgdGhhdCBhbiBvdmVybGF5IG1heSBiZSBhc3NpZ25lZCByZWxhdGl2ZSB0b1xuICAgICAqIHRoZSB2aWV3cG9ydC5cbiAgICAgKiBJdCBpcyBpZGVudGljYWwgdG8gT3BlblNlYWRyYWdvbi5QbGFjZW1lbnQgYnV0IGlzIGtlcHQgZm9yIGJhY2t3YXJkXG4gICAgICogY29tcGF0aWJpbGl0eS5cbiAgICAgKiBAbWVtYmVyIE92ZXJsYXlQbGFjZW1lbnRcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBDRU5URVJcbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gVE9QX0xFRlRcbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gVE9QXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IFRPUF9SSUdIVFxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBSSUdIVFxuICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBCT1RUT01fUklHSFRcbiAgICAgKiBAcHJvcGVydHkge051bWJlcn0gQk9UVE9NXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IEJPVFRPTV9MRUZUXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IExFRlRcbiAgICAgKi9cbiAgICAkLk92ZXJsYXlQbGFjZW1lbnQgPSAkLlBsYWNlbWVudDtcblxuICAgIC8qKlxuICAgICAqIEFuIGVudW1lcmF0aW9uIG9mIHBvc3NpYmxlIHdheXMgdG8gaGFuZGxlIG92ZXJsYXlzIHJvdGF0aW9uXG4gICAgICogQG1lbWJlciBPdmVybGF5Um90YXRpb25Nb2RlXG4gICAgICogQG1lbWJlck9mIE9wZW5TZWFkcmFnb25cbiAgICAgKiBAc3RhdGljXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IE5PX1JPVEFUSU9OIFRoZSBvdmVybGF5IGlnbm9yZSB0aGUgdmlld3BvcnQgcm90YXRpb24uXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IEVYQUNUIFRoZSBvdmVybGF5IHVzZSBDU1MgMyB0cmFuc2Zvcm1zIHRvIHJvdGF0ZSB3aXRoXG4gICAgICogdGhlIHZpZXdwb3J0LiBJZiB0aGUgb3ZlcmxheSBjb250YWlucyB0ZXh0LCBpdCB3aWxsIGdldCByb3RhdGVkIGFzIHdlbGwuXG4gICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IEJPVU5ESU5HX0JPWCBUaGUgb3ZlcmxheSBhZGp1c3RzIGZvciByb3RhdGlvbiBieVxuICAgICAqIHRha2luZyB0aGUgc2l6ZSBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSByb3RhdGVkIGJvdW5kcy5cbiAgICAgKiBPbmx5IHZhbGlkIGZvciBvdmVybGF5cyB3aXRoIFJlY3QgbG9jYXRpb24gYW5kIHNjYWxhYmxlIGluIGJvdGggZGlyZWN0aW9ucy5cbiAgICAgKi9cbiAgICAkLk92ZXJsYXlSb3RhdGlvbk1vZGUgPSAkLmZyZWV6ZU9iamVjdCh7XG4gICAgICAgIE5PX1JPVEFUSU9OOiAxLFxuICAgICAgICBFWEFDVDogMixcbiAgICAgICAgQk9VTkRJTkdfQk9YOiAzXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAY2xhc3MgT3ZlcmxheVxuICAgICAqIEBjbGFzc2Rlc2MgUHJvdmlkZXMgYSB3YXkgdG8gZmxvYXQgYW4gSFRNTCBlbGVtZW50IG9uIHRvcCBvZiB0aGUgdmlld2VyIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBvcHRpb25zLmVsZW1lbnRcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR8T3BlblNlYWRyYWdvbi5SZWN0fSBvcHRpb25zLmxvY2F0aW9uIC0gVGhlXG4gICAgICogbG9jYXRpb24gb2YgdGhlIG92ZXJsYXkgb24gdGhlIGltYWdlLiBJZiBhIHtAbGluayBPcGVuU2VhZHJhZ29uLlBvaW50fVxuICAgICAqIGlzIHNwZWNpZmllZCwgdGhlIG92ZXJsYXkgd2lsbCBiZSBsb2NhdGVkIGF0IHRoaXMgbG9jYXRpb24gd2l0aCByZXNwZWN0XG4gICAgICogdG8gdGhlIHBsYWNlbWVudCBvcHRpb24uIElmIGEge0BsaW5rIE9wZW5TZWFkcmFnb24uUmVjdH0gaXMgc3BlY2lmaWVkLFxuICAgICAqIHRoZSBvdmVybGF5IHdpbGwgYmUgcGxhY2VkIGF0IHRoaXMgbG9jYXRpb24gd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3aWR0aFxuICAgICAqIGFuZCBoZWlnaHQgYW5kIHBsYWNlbWVudCBUT1BfTEVGVC5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBbb3B0aW9ucy5wbGFjZW1lbnQ9T3BlblNlYWRyYWdvbi5QbGFjZW1lbnQuVE9QX0xFRlRdXG4gICAgICogRGVmaW5lcyB3aGF0IHBhcnQgb2YgdGhlIG92ZXJsYXkgc2hvdWxkIGJlIGF0IHRoZSBzcGVjaWZpZWQgb3B0aW9ucy5sb2NhdGlvblxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5PdmVybGF5Lk9uRHJhd0NhbGxiYWNrfSBbb3B0aW9ucy5vbkRyYXddXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5jaGVja1Jlc2l6ZT10cnVlXSBTZXQgdG8gZmFsc2UgdG8gYXZvaWQgdG9cbiAgICAgKiBjaGVjayB0aGUgc2l6ZSBvZiB0aGUgb3ZlcmxheSBldmVyeXRpbWUgaXQgaXMgZHJhd24gaW4gdGhlIGRpcmVjdGlvbnNcbiAgICAgKiB3aGljaCBhcmUgbm90IHNjYWxlZC4gSXQgd2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlcyBidXQgd2lsbCBjYXVzZSBhXG4gICAgICogbWlzYWxpZ25tZW50IGlmIHRoZSBvdmVybGF5IHNpemUgY2hhbmdlcy5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMud2lkdGhdIFRoZSB3aWR0aCBvZiB0aGUgb3ZlcmxheSBpbiB2aWV3cG9ydFxuICAgICAqIGNvb3JkaW5hdGVzLiBJZiBzcGVjaWZpZWQsIHRoZSB3aWR0aCBvZiB0aGUgb3ZlcmxheSB3aWxsIGJlIGFkanVzdGVkIHdoZW5cbiAgICAgKiB0aGUgem9vbSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5oZWlnaHRdIFRoZSBoZWlnaHQgb2YgdGhlIG92ZXJsYXkgaW4gdmlld3BvcnRcbiAgICAgKiBjb29yZGluYXRlcy4gSWYgc3BlY2lmaWVkLCB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVybGF5IHdpbGwgYmUgYWRqdXN0ZWQgd2hlblxuICAgICAqIHRoZSB6b29tIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5yb3RhdGlvbk1vZGU9T3BlblNlYWRyYWdvbi5PdmVybGF5Um90YXRpb25Nb2RlLkVYQUNUXVxuICAgICAqIEhvdyB0byBoYW5kbGUgdGhlIHJvdGF0aW9uIG9mIHRoZSB2aWV3cG9ydC5cbiAgICAgKi9cbiAgICAkLk92ZXJsYXkgPSBmdW5jdGlvbihlbGVtZW50LCBsb2NhdGlvbiwgcGxhY2VtZW50KSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIG9uRHJhdyBjYWxsYmFjayBzaWduYXR1cmUgdXNlZCBieSB7QGxpbmsgT3BlblNlYWRyYWdvbi5PdmVybGF5fS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGNhbGxiYWNrIE9uRHJhd0NhbGxiYWNrXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLk92ZXJsYXlcbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHNpemVcbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50XG4gICAgICAgICAqL1xuXG4gICAgICAgIHZhciBvcHRpb25zO1xuICAgICAgICBpZiAoJC5pc1BsYWluT2JqZWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gZWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc3R5bGUgPSBvcHRpb25zLmVsZW1lbnQuc3R5bGU7XG4gICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcblxuICAgIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5PdmVybGF5LnByb3RvdHlwZSAqL1xuICAgICQuT3ZlcmxheS5wcm90b3R5cGUgPSB7XG5cbiAgICAgICAgLy8gcHJpdmF0ZVxuICAgICAgICBfaW5pdDogZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IG9wdGlvbnMubG9jYXRpb247XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudCA9IG9wdGlvbnMucGxhY2VtZW50ID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgICAgICQuUGxhY2VtZW50LlRPUF9MRUZUIDogb3B0aW9ucy5wbGFjZW1lbnQ7XG4gICAgICAgICAgICB0aGlzLm9uRHJhdyA9IG9wdGlvbnMub25EcmF3O1xuICAgICAgICAgICAgdGhpcy5jaGVja1Jlc2l6ZSA9IG9wdGlvbnMuY2hlY2tSZXNpemUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAgICAgdHJ1ZSA6IG9wdGlvbnMuY2hlY2tSZXNpemU7XG5cbiAgICAgICAgICAgIC8vIFdoZW4gdGhpcy53aWR0aCBpcyBub3QgbnVsbCwgdGhlIG92ZXJsYXkgZ2V0IHNjYWxlZCBob3Jpem9udGFsbHlcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBvcHRpb25zLndpZHRoID09PSB1bmRlZmluZWQgPyBudWxsIDogb3B0aW9ucy53aWR0aDtcblxuICAgICAgICAgICAgLy8gV2hlbiB0aGlzLmhlaWdodCBpcyBub3QgbnVsbCwgdGhlIG92ZXJsYXkgZ2V0IHNjYWxlZCB2ZXJ0aWNhbGx5XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0ID09PSB1bmRlZmluZWQgPyBudWxsIDogb3B0aW9ucy5oZWlnaHQ7XG5cbiAgICAgICAgICAgIHRoaXMucm90YXRpb25Nb2RlID0gb3B0aW9ucy5yb3RhdGlvbk1vZGUgfHwgJC5PdmVybGF5Um90YXRpb25Nb2RlLkVYQUNUO1xuXG4gICAgICAgICAgICAvLyBIYXZpbmcgYSByZWN0IGFzIGxvY2F0aW9uIGlzIGEgc3ludGFjdGljIHN1Z2FyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2NhdGlvbiBpbnN0YW5jZW9mICQuUmVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLmxvY2F0aW9uLndpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5sb2NhdGlvbi5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IHRoaXMubG9jYXRpb24uZ2V0VG9wTGVmdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2VtZW50ID0gJC5QbGFjZW1lbnQuVE9QX0xFRlQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERlcHJlY2F0ZWQgcHJvcGVydGllcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICAgICAgICAgICAgdGhpcy5zY2FsZXMgPSB0aGlzLndpZHRoICE9PSBudWxsICYmIHRoaXMuaGVpZ2h0ICE9PSBudWxsO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24ueCwgdGhpcy5sb2NhdGlvbi55LCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5sb2NhdGlvbjtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBwb3NpdGlvbiBvZiBhbiBvdmVybGF5XG4gICAgICAgICAqIGRlcGVuZGluZyBvbiBpdCBzaXplIGFuZCBwbGFjZW1lbnQuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvc2l0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gc2l6ZVxuICAgICAgICAgKi9cbiAgICAgICAgYWRqdXN0OiBmdW5jdGlvbihwb3NpdGlvbiwgc2l6ZSkge1xuICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSAkLlBsYWNlbWVudC5wcm9wZXJ0aWVzW3RoaXMucGxhY2VtZW50XTtcbiAgICAgICAgICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmlzSG9yaXpvbnRhbGx5Q2VudGVyZWQpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi54IC09IHNpemUueCAvIDI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXMuaXNSaWdodCkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggLT0gc2l6ZS54O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaXNWZXJ0aWNhbGx5Q2VudGVyZWQpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi55IC09IHNpemUueSAvIDI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXMuaXNCb3R0b20pIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbi55IC09IHNpemUueTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5zdHlsZTtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAvL3RoaXMgc2hvdWxkIGFsbG93IHVzIHRvIHByZXNlcnZlIG92ZXJsYXlzIHdoZW4gcmVxdWlyZWQgYmV0d2VlblxuICAgICAgICAgICAgICAgIC8vcGFnZXNcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5wcmV2RWxlbWVudFBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICAvL2VsZW1lbnQucHJldkVsZW1lbnRQYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAvLyAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAvLyAgICBlbGVtZW50LnByZXZOZXh0U2libGluZ1xuICAgICAgICAgICAgICAgICAgICAvLyk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjbGVhciB0aGUgb25EcmF3IGNhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLm9uRHJhdyA9IG51bGw7XG5cbiAgICAgICAgICAgIHN0eWxlLnRvcCA9IFwiXCI7XG4gICAgICAgICAgICBzdHlsZS5sZWZ0ID0gXCJcIjtcbiAgICAgICAgICAgIHN0eWxlLnBvc2l0aW9uID0gXCJcIjtcblxuICAgICAgICAgICAgaWYgKHRoaXMud2lkdGggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS53aWR0aCA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdHlsZS5oZWlnaHQgPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRyYW5zZm9ybU9yaWdpblByb3AgPSAkLmdldENzc1Byb3BlcnR5V2l0aFZlbmRvclByZWZpeChcbiAgICAgICAgICAgICAgICAndHJhbnNmb3JtT3JpZ2luJyk7XG4gICAgICAgICAgICB2YXIgdHJhbnNmb3JtUHJvcCA9ICQuZ2V0Q3NzUHJvcGVydHlXaXRoVmVuZG9yUHJlZml4KFxuICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nKTtcbiAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1PcmlnaW5Qcm9wICYmIHRyYW5zZm9ybVByb3ApIHtcbiAgICAgICAgICAgICAgICBzdHlsZVt0cmFuc2Zvcm1PcmlnaW5Qcm9wXSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgc3R5bGVbdHJhbnNmb3JtUHJvcF0gPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBjb250YWluZXJcbiAgICAgICAgICovXG4gICAgICAgIGRyYXdIVE1MOiBmdW5jdGlvbihjb250YWluZXIsIHZpZXdwb3J0KSB7XG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnBhcmVudE5vZGUgIT09IGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIC8vc2F2ZSB0aGUgc291cmNlIHBhcmVudCBmb3IgbGF0ZXIgaWYgd2UgbmVlZCBpdFxuICAgICAgICAgICAgICAgIGVsZW1lbnQucHJldkVsZW1lbnRQYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5wcmV2TmV4dFNpYmxpbmcgPSBlbGVtZW50Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2l6ZSBpcyB1c2VkIGJ5IG92ZXJsYXlzIHdoaWNoIGRvbid0IGdldCBzY2FsZWQgaW4gYXRcbiAgICAgICAgICAgICAgICAvLyBsZWFzdCBvbmUgZGlyZWN0aW9uIHdoZW4gdGhpcy5jaGVja1Jlc2l6ZSBpcyBzZXQgdG8gZmFsc2UuXG4gICAgICAgICAgICAgICAgdGhpcy5zaXplID0gJC5nZXRFbGVtZW50U2l6ZShlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBvc2l0aW9uQW5kU2l6ZSA9IHRoaXMuX2dldE92ZXJsYXlQb3NpdGlvbkFuZFNpemUodmlld3BvcnQpO1xuXG4gICAgICAgICAgICB2YXIgcG9zaXRpb24gPSBwb3NpdGlvbkFuZFNpemUucG9zaXRpb247XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuc2l6ZSA9IHBvc2l0aW9uQW5kU2l6ZS5zaXplO1xuICAgICAgICAgICAgdmFyIHJvdGF0ZSA9IHBvc2l0aW9uQW5kU2l6ZS5yb3RhdGU7XG5cbiAgICAgICAgICAgIC8vIGNhbGwgdGhlIG9uRHJhdyBjYWxsYmFjayBpZiBpdCBleGlzdHMgdG8gYWxsb3cgb25lIHRvIG92ZXJ3cml0ZVxuICAgICAgICAgICAgLy8gdGhlIGRyYXdpbmcvcG9zaXRpb25pbmcvc2l6aW5nIG9mIHRoZSBvdmVybGF5XG4gICAgICAgICAgICBpZiAodGhpcy5vbkRyYXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRHJhdyhwb3NpdGlvbiwgc2l6ZSwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5zdHlsZTtcbiAgICAgICAgICAgICAgICBzdHlsZS5sZWZ0ID0gcG9zaXRpb24ueCArIFwicHhcIjtcbiAgICAgICAgICAgICAgICBzdHlsZS50b3AgPSBwb3NpdGlvbi55ICsgXCJweFwiO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZHRoICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLndpZHRoID0gc2l6ZS54ICsgXCJweFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ID0gc2l6ZS55ICsgXCJweFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNmb3JtT3JpZ2luUHJvcCA9ICQuZ2V0Q3NzUHJvcGVydHlXaXRoVmVuZG9yUHJlZml4KFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtT3JpZ2luJyk7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zZm9ybVByb3AgPSAkLmdldENzc1Byb3BlcnR5V2l0aFZlbmRvclByZWZpeChcbiAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1PcmlnaW5Qcm9wICYmIHRyYW5zZm9ybVByb3ApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVbdHJhbnNmb3JtT3JpZ2luUHJvcF0gPSB0aGlzLl9nZXRUcmFuc2Zvcm1PcmlnaW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlW3RyYW5zZm9ybVByb3BdID0gXCJyb3RhdGUoXCIgKyByb3RhdGUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlW3RyYW5zZm9ybU9yaWdpblByb3BdID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlW3RyYW5zZm9ybVByb3BdID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcblxuICAgICAgICAgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIHByaXZhdGVcbiAgICAgICAgX2dldE92ZXJsYXlQb3NpdGlvbkFuZFNpemU6IGZ1bmN0aW9uKHZpZXdwb3J0KSB7XG4gICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB2aWV3cG9ydC5waXhlbEZyb21Qb2ludCh0aGlzLmxvY2F0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgIHZhciBzaXplID0gdGhpcy5fZ2V0U2l6ZUluUGl4ZWxzKHZpZXdwb3J0KTtcbiAgICAgICAgICAgIHRoaXMuYWRqdXN0KHBvc2l0aW9uLCBzaXplKTtcblxuICAgICAgICAgICAgdmFyIHJvdGF0ZSA9IDA7XG4gICAgICAgICAgICBpZiAodmlld3BvcnQuZGVncmVlcyAmJlxuICAgICAgICAgICAgICAgIHRoaXMucm90YXRpb25Nb2RlICE9PSAkLk92ZXJsYXlSb3RhdGlvbk1vZGUuTk9fUk9UQVRJT04pIHtcbiAgICAgICAgICAgICAgICAvLyBCT1VORElOR19CT1ggaXMgb25seSB2YWxpZCBpZiBib3RoIGRpcmVjdGlvbnMgZ2V0IHNjYWxlZC5cbiAgICAgICAgICAgICAgICAvLyBHZXQgcmVwbGFjZWQgYnkgRVhBQ1Qgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvdGF0aW9uTW9kZSA9PT0gJC5PdmVybGF5Um90YXRpb25Nb2RlLkJPVU5ESU5HX0JPWCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLndpZHRoICE9PSBudWxsICYmIHRoaXMuaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWN0ID0gbmV3ICQuUmVjdChwb3NpdGlvbi54LCBwb3NpdGlvbi55LCBzaXplLngsIHNpemUueSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ0JveCA9IHRoaXMuX2dldEJvdW5kaW5nQm94KHJlY3QsIHZpZXdwb3J0LmRlZ3JlZXMpO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGJvdW5kaW5nQm94LmdldFRvcExlZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGJvdW5kaW5nQm94LmdldFNpemUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSB2aWV3cG9ydC5kZWdyZWVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgc2l6ZTogc2l6ZSxcbiAgICAgICAgICAgICAgICByb3RhdGU6IHJvdGF0ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBwcml2YXRlXG4gICAgICAgIF9nZXRTaXplSW5QaXhlbHM6IGZ1bmN0aW9uKHZpZXdwb3J0KSB7XG4gICAgICAgICAgICB2YXIgd2lkdGggPSB0aGlzLnNpemUueDtcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnNpemUueTtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZHRoICE9PSBudWxsIHx8IHRoaXMuaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjYWxlZFNpemUgPSB2aWV3cG9ydC5kZWx0YVBpeGVsc0Zyb21Qb2ludHNOb1JvdGF0ZShcbiAgICAgICAgICAgICAgICAgICAgbmV3ICQuUG9pbnQodGhpcy53aWR0aCB8fCAwLCB0aGlzLmhlaWdodCB8fCAwKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2lkdGggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzY2FsZWRTaXplLng7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBzY2FsZWRTaXplLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tSZXNpemUgJiZcbiAgICAgICAgICAgICAgICAodGhpcy53aWR0aCA9PT0gbnVsbCB8fCB0aGlzLmhlaWdodCA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWx0U2l6ZSA9IHRoaXMuc2l6ZSA9ICQuZ2V0RWxlbWVudFNpemUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGVsdFNpemUueDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGVsdFNpemUueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gcHJpdmF0ZVxuICAgICAgICBfZ2V0Qm91bmRpbmdCb3g6IGZ1bmN0aW9uKHJlY3QsIGRlZ3JlZXMpIHtcbiAgICAgICAgICAgIHZhciByZWZQb2ludCA9IHRoaXMuX2dldFBsYWNlbWVudFBvaW50KHJlY3QpO1xuICAgICAgICAgICAgcmV0dXJuIHJlY3Qucm90YXRlKGRlZ3JlZXMsIHJlZlBvaW50KS5nZXRCb3VuZGluZ0JveCgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIHByaXZhdGVcbiAgICAgICAgX2dldFBsYWNlbWVudFBvaW50OiBmdW5jdGlvbihyZWN0KSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3ICQuUG9pbnQocmVjdC54LCByZWN0LnkpO1xuICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSAkLlBsYWNlbWVudC5wcm9wZXJ0aWVzW3RoaXMucGxhY2VtZW50XTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaXNIb3Jpem9udGFsbHlDZW50ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQueCArPSByZWN0LndpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXMuaXNSaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQueCArPSByZWN0LndpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5pc1ZlcnRpY2FsbHlDZW50ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQueSArPSByZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0aWVzLmlzQm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC55ICs9IHJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gcHJpdmF0ZVxuICAgICAgICBfZ2V0VHJhbnNmb3JtT3JpZ2luOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSAkLlBsYWNlbWVudC5wcm9wZXJ0aWVzW3RoaXMucGxhY2VtZW50XTtcbiAgICAgICAgICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcGVydGllcy5pc0xlZnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBcImxlZnRcIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydGllcy5pc1JpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gXCJyaWdodFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaXNUb3ApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIgdG9wXCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnRpZXMuaXNCb3R0b20pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gXCIgYm90dG9tXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDaGFuZ2VzIHRoZSBvdmVybGF5IHNldHRpbmdzLlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fE9wZW5TZWFkcmFnb24uUmVjdHxPYmplY3R9IGxvY2F0aW9uXG4gICAgICAgICAqIElmIGFuIG9iamVjdCBpcyBzcGVjaWZpZWQsIHRoZSBvcHRpb25zIGFyZSB0aGUgc2FtZSB0aGFuIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKiBleGNlcHQgZm9yIHRoZSBlbGVtZW50IHdoaWNoIGNhbiBub3QgYmUgY2hhbmdlZC5cbiAgICAgICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBsYWNlbWVudH0gcG9zaXRpb25cbiAgICAgICAgICovXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24obG9jYXRpb24sIHBsYWNlbWVudCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmlzUGxhaW5PYmplY3QobG9jYXRpb24pID8gbG9jYXRpb24gOiB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5faW5pdCh7XG4gICAgICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbnMubG9jYXRpb24gfHwgdGhpcy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG9wdGlvbnMucGxhY2VtZW50ICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBsYWNlbWVudCA6IHRoaXMucGxhY2VtZW50LFxuICAgICAgICAgICAgICAgIG9uRHJhdzogb3B0aW9ucy5vbkRyYXcgfHwgdGhpcy5vbkRyYXcsXG4gICAgICAgICAgICAgICAgY2hlY2tSZXNpemU6IG9wdGlvbnMuY2hlY2tSZXNpemUgfHwgdGhpcy5jaGVja1Jlc2l6ZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogb3B0aW9ucy53aWR0aCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy53aWR0aCA6IHRoaXMud2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBvcHRpb25zLmhlaWdodCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5oZWlnaHQgOiB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgICAgICByb3RhdGlvbk1vZGU6IG9wdGlvbnMucm90YXRpb25Nb2RlIHx8IHRoaXMucm90YXRpb25Nb2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBib3VuZHMgb2YgdGhlIG92ZXJsYXkgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXNcbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gdmlld3BvcnQgdGhlIHZpZXdwb3J0XG4gICAgICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlJlY3R9IG92ZXJsYXkgYm91bmRzXG4gICAgICAgICAqL1xuICAgICAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uKHZpZXdwb3J0KSB7XG4gICAgICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KHZpZXdwb3J0LFxuICAgICAgICAgICAgICAgICdBIHZpZXdwb3J0IG11c3Qgbm93IGJlIHBhc3NlZCB0byBPdmVybGF5LmdldEJvdW5kcy4nKTtcbiAgICAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgICAgICBpZiAod2lkdGggPT09IG51bGwgfHwgaGVpZ2h0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemUgPSB2aWV3cG9ydC5kZWx0YVBvaW50c0Zyb21QaXhlbHNOb1JvdGF0ZSh0aGlzLnNpemUsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHNpemUueDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBzaXplLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5sb2NhdGlvbi5jbG9uZSgpO1xuICAgICAgICAgICAgdGhpcy5hZGp1c3QobG9jYXRpb24sIG5ldyAkLlBvaW50KHdpZHRoLCBoZWlnaHQpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGp1c3RCb3VuZHNGb3JSb3RhdGlvbihcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCwgbmV3ICQuUmVjdChsb2NhdGlvbi54LCBsb2NhdGlvbi55LCB3aWR0aCwgaGVpZ2h0KSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gcHJpdmF0ZVxuICAgICAgICBfYWRqdXN0Qm91bmRzRm9yUm90YXRpb246IGZ1bmN0aW9uKHZpZXdwb3J0LCBib3VuZHMpIHtcbiAgICAgICAgICAgIGlmICghdmlld3BvcnQgfHxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydC5kZWdyZWVzID09PSAwIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3RhdGlvbk1vZGUgPT09ICQuT3ZlcmxheVJvdGF0aW9uTW9kZS5FWEFDVCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yb3RhdGlvbk1vZGUgPT09ICQuT3ZlcmxheVJvdGF0aW9uTW9kZS5CT1VORElOR19CT1gpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBvdmVybGF5IG5vdCBmdWxseSBzY2FsYWJsZSwgQk9VTkRJTkdfQk9YIGZhbGxzIGJhY2sgdG8gRVhBQ1RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA9PT0gbnVsbCB8fCB0aGlzLmhlaWdodCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJdCBpcyBlYXNpZXIgdG8ganVzdCBjb21wdXRlIHRoZSBwb3NpdGlvbiBhbmQgc2l6ZSBhbmRcbiAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbkFuZFNpemUgPSB0aGlzLl9nZXRPdmVybGF5UG9zaXRpb25BbmRTaXplKHZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmlld3BvcnQudmlld2VyRWxlbWVudFRvVmlld3BvcnRSZWN0YW5nbGUobmV3ICQuUmVjdChcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25BbmRTaXplLnBvc2l0aW9uLngsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQW5kU2l6ZS5wb3NpdGlvbi55LFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkFuZFNpemUuc2l6ZS54LFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkFuZFNpemUuc2l6ZS55KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE5PX1JPVEFUSU9OIGNhc2VcbiAgICAgICAgICAgIHJldHVybiBib3VuZHMucm90YXRlKC12aWV3cG9ydC5kZWdyZWVzLFxuICAgICAgICAgICAgICAgIHRoaXMuX2dldFBsYWNlbWVudFBvaW50KGJvdW5kcykpO1xuICAgICAgICB9XG4gICAgfTtcblxufShPcGVuU2VhZHJhZ29uKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gRHJhd2VyXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIEBjbGFzcyBEcmF3ZXJcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAY2xhc3NkZXNjIEhhbmRsZXMgcmVuZGVyaW5nIG9mIHRpbGVzIGZvciBhbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXJ9LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGlzIERyYXdlci5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IG9wdGlvbnMudmlld2VyIC0gVGhlIFZpZXdlciB0aGF0IG93bnMgdGhpcyBEcmF3ZXIuXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IG9wdGlvbnMudmlld3BvcnQgLSBSZWZlcmVuY2UgdG8gVmlld2VyIHZpZXdwb3J0LlxuICogQHBhcmFtIHtFbGVtZW50fSBvcHRpb25zLmVsZW1lbnQgLSBQYXJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5kZWJ1Z0dyaWRDb2xvcl0gLSBTZWUgZGVidWdHcmlkQ29sb3IgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30gZm9yIGRldGFpbHMuXG4gKi9cbiQuRHJhd2VyID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cbiAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLnZpZXdlciwgXCJbRHJhd2VyXSBvcHRpb25zLnZpZXdlciBpcyByZXF1aXJlZFwiICk7XG5cbiAgICAvL2JhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIHBvc2l0aW9uYWwgYXJncyB3aGlsZSBwcmVmZXJpbmcgbW9yZVxuICAgIC8vaWRpb21hdGljIGphdmFzY3JpcHQgb3B0aW9ucyBvYmplY3QgYXMgdGhlIG9ubHkgYXJndW1lbnRcbiAgICB2YXIgYXJncyAgPSBhcmd1bWVudHM7XG5cbiAgICBpZiggISQuaXNQbGFpbk9iamVjdCggb3B0aW9ucyApICl7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBzb3VyY2U6ICAgICBhcmdzWyAwIF0sIC8vIFJlZmVyZW5jZSB0byBWaWV3ZXIgdGlsZSBzb3VyY2UuXG4gICAgICAgICAgICB2aWV3cG9ydDogICBhcmdzWyAxIF0sIC8vIFJlZmVyZW5jZSB0byBWaWV3ZXIgdmlld3BvcnQuXG4gICAgICAgICAgICBlbGVtZW50OiAgICBhcmdzWyAyIF0gIC8vIFBhcmVudCBlbGVtZW50LlxuICAgICAgICB9O1xuICAgIH1cblxuICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMudmlld3BvcnQsIFwiW0RyYXdlcl0gb3B0aW9ucy52aWV3cG9ydCBpcyByZXF1aXJlZFwiICk7XG4gICAgJC5jb25zb2xlLmFzc2VydCggb3B0aW9ucy5lbGVtZW50LCBcIltEcmF3ZXJdIG9wdGlvbnMuZWxlbWVudCBpcyByZXF1aXJlZFwiICk7XG5cbiAgICBpZiAoIG9wdGlvbnMuc291cmNlICkge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoIFwiW0RyYXdlcl0gb3B0aW9ucy5zb3VyY2UgaXMgbm8gbG9uZ2VyIGFjY2VwdGVkOyB1c2UgVGlsZWRJbWFnZSBpbnN0ZWFkXCIgKTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlciA9IG9wdGlvbnMudmlld2VyO1xuICAgIHRoaXMudmlld3BvcnQgPSBvcHRpb25zLnZpZXdwb3J0O1xuICAgIHRoaXMuZGVidWdHcmlkQ29sb3IgPSBvcHRpb25zLmRlYnVnR3JpZENvbG9yIHx8ICQuREVGQVVMVF9TRVRUSU5HUy5kZWJ1Z0dyaWRDb2xvcjtcbiAgICBpZiAob3B0aW9ucy5vcGFjaXR5KSB7XG4gICAgICAgICQuY29uc29sZS5lcnJvciggXCJbRHJhd2VyXSBvcHRpb25zLm9wYWNpdHkgaXMgbm8gbG9uZ2VyIGFjY2VwdGVkOyBzZXQgdGhlIG9wYWNpdHkgb24gdGhlIFRpbGVkSW1hZ2UgaW5zdGVhZFwiICk7XG4gICAgfVxuXG4gICAgdGhpcy51c2VDYW52YXMgID0gJC5zdXBwb3J0c0NhbnZhcyAmJiAoIHRoaXMudmlld2VyID8gdGhpcy52aWV3ZXIudXNlQ2FudmFzIDogdHJ1ZSApO1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGlzIERyYXdlciBpbnN0YW5jZSwgcGFzc2VkIGluIHdoZW4gdGhlIERyYXdlciB3YXMgY3JlYXRlZC5cbiAgICAgKiBUaGUgcGFyZW50IG9mIHtAbGluayBPcGVuU2VhZHJhZ29uLkRyYXdlciNjYW52YXN9LlxuICAgICAqIEBtZW1iZXIge0VsZW1lbnR9IGNvbnRhaW5lclxuICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLkRyYXdlciNcbiAgICAgKi9cbiAgICB0aGlzLmNvbnRhaW5lciAgPSAkLmdldEVsZW1lbnQoIG9wdGlvbnMuZWxlbWVudCApO1xuICAgIC8qKlxuICAgICAqIEEgJmx0O2NhbnZhcyZndDsgZWxlbWVudCBpZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGVtLCBvdGhlcndpc2UgYSAmbHQ7ZGl2Jmd0OyBlbGVtZW50LlxuICAgICAqIENoaWxkIGVsZW1lbnQgb2Yge0BsaW5rIE9wZW5TZWFkcmFnb24uRHJhd2VyI2NvbnRhaW5lcn0uXG4gICAgICogQG1lbWJlciB7RWxlbWVudH0gY2FudmFzXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uRHJhd2VyI1xuICAgICAqL1xuICAgIHRoaXMuY2FudmFzICAgICA9ICQubWFrZU5ldXRyYWxFbGVtZW50KCB0aGlzLnVzZUNhbnZhcyA/IFwiY2FudmFzXCIgOiBcImRpdlwiICk7XG4gICAgLyoqXG4gICAgICogMmQgZHJhd2luZyBjb250ZXh0IGZvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5EcmF3ZXIjY2FudmFzfSBpZiBpdCdzIGEgJmx0O2NhbnZhcyZndDsgZWxlbWVudCwgb3RoZXJ3aXNlIG51bGwuXG4gICAgICogQG1lbWJlciB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uRHJhd2VyI1xuICAgICAqL1xuICAgIHRoaXMuY29udGV4dCAgICA9IHRoaXMudXNlQ2FudmFzID8gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCggXCIyZFwiICkgOiBudWxsO1xuXG4gICAgLyoqXG4gICAgICogU2tldGNoIGNhbnZhcyB1c2VkIHRvIHRlbXBvcmFyaWx5IGRyYXcgdGlsZXMgd2hpY2ggY2Fubm90IGJlIGRyYXduIGRpcmVjdGx5XG4gICAgICogdG8gdGhlIG1haW4gY2FudmFzIGR1ZSB0byBvcGFjaXR5LiBMYXppbHkgaW5pdGlhbGl6ZWQuXG4gICAgICovXG4gICAgdGhpcy5za2V0Y2hDYW52YXMgPSBudWxsO1xuICAgIHRoaXMuc2tldGNoQ29udGV4dCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyIHtFbGVtZW50fSBlbGVtZW50XG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uRHJhd2VyI1xuICAgICAqIEBkZXByZWNhdGVkIEFsaWFzIGZvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5EcmF3ZXIjY29udGFpbmVyfS5cbiAgICAgKi9cbiAgICB0aGlzLmVsZW1lbnQgICAgPSB0aGlzLmNvbnRhaW5lcjtcblxuICAgIC8vIFdlIGZvcmNlIG91ciBjb250YWluZXIgdG8gbHRyIGJlY2F1c2Ugb3VyIGRyYXdpbmcgbWF0aCBkb2Vzbid0IHdvcmsgaW4gcnRsLlxuICAgIC8vIFRoaXMgaXNzdWUgb25seSBhZmZlY3RzIG91ciBjYW52YXMgcmVuZGVyZXIsIGJ1dCB3ZSBkbyBpdCBhbHdheXMgZm9yIGNvbnNpc3RlbmN5LlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1lYW5zIG92ZXJsYXlzIHlvdSB3YW50IHRvIGJlIHJ0bCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgc2V0IHRvIHJ0bC5cbiAgICB0aGlzLmNvbnRhaW5lci5kaXIgPSAnbHRyJztcblxuICAgIC8vIGNoZWNrIGNhbnZhcyBhdmFpbGFibGUgd2lkdGggYW5kIGhlaWdodCwgc2V0IGNhbnZhcyB3aWR0aCBhbmQgaGVpZ2h0IHN1Y2ggdGhhdCB0aGUgY2FudmFzIGJhY2tpbmcgc3RvcmUgaXMgc2V0IHRvIHRoZSBwcm9wZXIgcGl4ZWwgZGVuc2l0eVxuICAgIGlmICh0aGlzLnVzZUNhbnZhcykge1xuICAgICAgICB2YXIgdmlld3BvcnRTaXplID0gdGhpcy5fY2FsY3VsYXRlQ2FudmFzU2l6ZSgpO1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHZpZXdwb3J0U2l6ZS54O1xuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSB2aWV3cG9ydFNpemUueTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCAgICAgPSBcIjEwMCVcIjtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgICAgPSBcIjEwMCVcIjtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5wb3NpdGlvbiAgPSBcImFic29sdXRlXCI7XG4gICAgJC5zZXRFbGVtZW50T3BhY2l0eSggdGhpcy5jYW52YXMsIHRoaXMub3BhY2l0eSwgdHJ1ZSApO1xuXG4gICAgLy8gZXhwbGljaXQgbGVmdC1hbGlnblxuICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLnRleHRBbGlnbiA9IFwibGVmdFwiO1xuICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKCB0aGlzLmNhbnZhcyApO1xufTtcblxuLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLkRyYXdlci5wcm90b3R5cGUgKi9cbiQuRHJhd2VyLnByb3RvdHlwZSA9IHtcbiAgICAvLyBkZXByZWNhdGVkXG4gICAgYWRkT3ZlcmxheTogZnVuY3Rpb24oIGVsZW1lbnQsIGxvY2F0aW9uLCBwbGFjZW1lbnQsIG9uRHJhdyApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiZHJhd2VyLmFkZE92ZXJsYXkgaXMgZGVwcmVjYXRlZC4gVXNlIHZpZXdlci5hZGRPdmVybGF5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLnZpZXdlci5hZGRPdmVybGF5KCBlbGVtZW50LCBsb2NhdGlvbiwgcGxhY2VtZW50LCBvbkRyYXcgKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICB1cGRhdGVPdmVybGF5OiBmdW5jdGlvbiggZWxlbWVudCwgbG9jYXRpb24sIHBsYWNlbWVudCApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiZHJhd2VyLnVwZGF0ZU92ZXJsYXkgaXMgZGVwcmVjYXRlZC4gVXNlIHZpZXdlci51cGRhdGVPdmVybGF5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLnZpZXdlci51cGRhdGVPdmVybGF5KCBlbGVtZW50LCBsb2NhdGlvbiwgcGxhY2VtZW50ICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvLyBkZXByZWNhdGVkXG4gICAgcmVtb3ZlT3ZlcmxheTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7XG4gICAgICAgICQuY29uc29sZS5lcnJvcihcImRyYXdlci5yZW1vdmVPdmVybGF5IGlzIGRlcHJlY2F0ZWQuIFVzZSB2aWV3ZXIucmVtb3ZlT3ZlcmxheSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy52aWV3ZXIucmVtb3ZlT3ZlcmxheSggZWxlbWVudCApO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGNsZWFyT3ZlcmxheXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoXCJkcmF3ZXIuY2xlYXJPdmVybGF5cyBpcyBkZXByZWNhdGVkLiBVc2Ugdmlld2VyLmNsZWFyT3ZlcmxheXMgaW5zdGVhZC5cIik7XG4gICAgICAgIHRoaXMudmlld2VyLmNsZWFyT3ZlcmxheXMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgb3BhY2l0eSBvZiB0aGUgZHJhd2VyLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBvcGFjaXR5XG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5EcmF3ZXJ9IENoYWluYWJsZS5cbiAgICAgKi9cbiAgICBzZXRPcGFjaXR5OiBmdW5jdGlvbiggb3BhY2l0eSApIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiZHJhd2VyLnNldE9wYWNpdHkgaXMgZGVwcmVjYXRlZC4gVXNlIHRpbGVkSW1hZ2Uuc2V0T3BhY2l0eSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdmFyIHdvcmxkID0gdGhpcy52aWV3ZXIud29ybGQ7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29ybGQuZ2V0SXRlbUNvdW50KCk7IGkrKykge1xuICAgICAgICAgICAgd29ybGQuZ2V0SXRlbUF0KCBpICkuc2V0T3BhY2l0eSggb3BhY2l0eSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG9wYWNpdHkgb2YgdGhlIGRyYXdlci5cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfVxuICAgICAqL1xuICAgIGdldE9wYWNpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoXCJkcmF3ZXIuZ2V0T3BhY2l0eSBpcyBkZXByZWNhdGVkLiBVc2UgdGlsZWRJbWFnZS5nZXRPcGFjaXR5IGluc3RlYWQuXCIpO1xuICAgICAgICB2YXIgd29ybGQgPSB0aGlzLnZpZXdlci53b3JsZDtcbiAgICAgICAgdmFyIG1heE9wYWNpdHkgPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmxkLmdldEl0ZW1Db3VudCgpOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBvcGFjaXR5ID0gd29ybGQuZ2V0SXRlbUF0KCBpICkuZ2V0T3BhY2l0eSgpO1xuICAgICAgICAgICAgaWYgKCBvcGFjaXR5ID4gbWF4T3BhY2l0eSApIHtcbiAgICAgICAgICAgICAgICBtYXhPcGFjaXR5ID0gb3BhY2l0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4T3BhY2l0eTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIG5lZWRzVXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltEcmF3ZXIubmVlZHNVcGRhdGVdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gVXNlIFdvcmxkLm5lZWRzRHJhdyBpbnN0ZWFkLlwiICk7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdlci53b3JsZC5uZWVkc0RyYXcoKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIG51bVRpbGVzTG9hZGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltEcmF3ZXIubnVtVGlsZXNMb2FkZWRdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gVXNlIFRpbGVDYWNoZS5udW1UaWxlc0xvYWRlZCBpbnN0ZWFkLlwiICk7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdlci50aWxlQ2FjaGUubnVtVGlsZXNMb2FkZWQoKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltEcmF3ZXIucmVzZXRdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gVXNlIFdvcmxkLnJlc2V0SXRlbXMgaW5zdGVhZC5cIiApO1xuICAgICAgICB0aGlzLnZpZXdlci53b3JsZC5yZXNldEl0ZW1zKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvLyBkZXByZWNhdGVkXG4gICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcIltEcmF3ZXIudXBkYXRlXSB0aGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBEcmF3ZXIuY2xlYXIgYW5kIFdvcmxkLmRyYXcgaW5zdGVhZC5cIiApO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudmlld2VyLndvcmxkLmRyYXcoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge0Jvb2xlYW59IFRydWUgaWYgcm90YXRpb24gaXMgc3VwcG9ydGVkLlxuICAgICAqL1xuICAgIGNhblJvdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZUNhbnZhcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSB0aGUgZHJhd2VyICh1bmxvYWQgY3VycmVudCBsb2FkZWQgdGlsZXMpXG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vZm9yY2UgdW5sb2FkaW5nIG9mIGN1cnJlbnQgY2FudmFzICgxeDEgd2lsbCBiZSBnYyBsYXRlciwgdHJpY2sgbm90IG5lY2Vzc2FyaWx5IG5lZWRlZClcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggID0gMTtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gMTtcbiAgICAgICAgdGhpcy5za2V0Y2hDYW52YXMgPSBudWxsO1xuICAgICAgICB0aGlzLnNrZXRjaENvbnRleHQgPSBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIERyYXdlciBzbyBpdCdzIHJlYWR5IHRvIGRyYXcgYW5vdGhlciBmcmFtZS5cbiAgICAgKi9cbiAgICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuY2FudmFzLmlubmVySFRNTCA9IFwiXCI7XG4gICAgICAgIGlmICggdGhpcy51c2VDYW52YXMgKSB7XG4gICAgICAgICAgICB2YXIgdmlld3BvcnRTaXplID0gdGhpcy5fY2FsY3VsYXRlQ2FudmFzU2l6ZSgpO1xuICAgICAgICAgICAgaWYoIHRoaXMuY2FudmFzLndpZHRoICE9IHZpZXdwb3J0U2l6ZS54IHx8XG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ICE9IHZpZXdwb3J0U2l6ZS55ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gdmlld3BvcnRTaXplLng7XG4gICAgICAgICAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gdmlld3BvcnRTaXplLnk7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNrZXRjaENhbnZhcyAhPT0gbnVsbCApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNrZXRjaENhbnZhc1NpemUgPSB0aGlzLl9jYWxjdWxhdGVTa2V0Y2hDYW52YXNTaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2tldGNoQ2FudmFzLndpZHRoID0gc2tldGNoQ2FudmFzU2l6ZS54O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNrZXRjaENhbnZhcy5oZWlnaHQgPSBza2V0Y2hDYW52YXNTaXplLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBfY2xlYXI6IGZ1bmN0aW9uICh1c2VTa2V0Y2gsIGJvdW5kcykge1xuICAgICAgICBpZiAoIXRoaXMudXNlQ2FudmFzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9nZXRDb250ZXh0KHVzZVNrZXRjaCk7XG4gICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGJvdW5kcy54LCBib3VuZHMueSwgYm91bmRzLndpZHRoLCBib3VuZHMuaGVpZ2h0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjYW52YXMgPSBjb250ZXh0LmNhbnZhcztcbiAgICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2NhbGUgZnJvbSBPcGVuU2VhZHJhZ29uIHZpZXdlciByZWN0YW5nbGUgdG8gZHJhd2VyIHJlY3RhbmdsZVxuICAgICAqIChpZ25vcmluZyByb3RhdGlvbilcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gcmVjdGFuZ2xlIC0gVGhlIHJlY3RhbmdsZSBpbiB2aWV3cG9ydCBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlJlY3R9IFJlY3RhbmdsZSBpbiBkcmF3ZXIgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICovXG4gICAgdmlld3BvcnRUb0RyYXdlclJlY3RhbmdsZTogZnVuY3Rpb24ocmVjdGFuZ2xlKSB7XG4gICAgICAgIHZhciB0b3BMZWZ0ID0gdGhpcy52aWV3cG9ydC5waXhlbEZyb21Qb2ludE5vUm90YXRlKHJlY3RhbmdsZS5nZXRUb3BMZWZ0KCksIHRydWUpO1xuICAgICAgICB2YXIgc2l6ZSA9IHRoaXMudmlld3BvcnQuZGVsdGFQaXhlbHNGcm9tUG9pbnRzTm9Sb3RhdGUocmVjdGFuZ2xlLmdldFNpemUoKSwgdHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyAkLlJlY3QoXG4gICAgICAgICAgICB0b3BMZWZ0LnggKiAkLnBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgdG9wTGVmdC55ICogJC5waXhlbERlbnNpdHlSYXRpbyxcbiAgICAgICAgICAgIHNpemUueCAgICAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICBzaXplLnkgICAgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERyYXdzIHRoZSBnaXZlbiB0aWxlLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5UaWxlfSB0aWxlIC0gVGhlIHRpbGUgdG8gZHJhdy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkcmF3aW5nSGFuZGxlciAtIE1ldGhvZCBmb3IgZmlyaW5nIHRoZSBkcmF3aW5nIGV2ZW50IGlmIHVzaW5nIGNhbnZhcy5cbiAgICAgKiBkcmF3aW5nSGFuZGxlcih7Y29udGV4dCwgdGlsZSwgcmVuZGVyZWR9KVxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gdXNlU2tldGNoIC0gV2hldGhlciB0byB1c2UgdGhlIHNrZXRjaCBjYW52YXMgb3Igbm90LlxuICAgICAqIHdoZXJlIDxjb2RlPnJlbmRlcmVkPC9jb2RlPiBpcyB0aGUgY29udGV4dCB3aXRoIHRoZSBwcmUtZHJhd24gaW1hZ2UuXG4gICAgICogQHBhcmFtIHtGbG9hdH0gW3NjYWxlPTFdIC0gQXBwbHkgYSBzY2FsZSB0byB0aWxlIHBvc2l0aW9uIGFuZCBzaXplLiBEZWZhdWx0cyB0byAxLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gW3RyYW5zbGF0ZV0gQSB0cmFuc2xhdGlvbiB2ZWN0b3IgdG8gb2Zmc2V0IHRpbGUgcG9zaXRpb25cbiAgICAgKi9cbiAgICBkcmF3VGlsZTogZnVuY3Rpb24odGlsZSwgZHJhd2luZ0hhbmRsZXIsIHVzZVNrZXRjaCwgc2NhbGUsIHRyYW5zbGF0ZSkge1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KHRpbGUsICdbRHJhd2VyLmRyYXdUaWxlXSB0aWxlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoZHJhd2luZ0hhbmRsZXIsICdbRHJhd2VyLmRyYXdUaWxlXSBkcmF3aW5nSGFuZGxlciBpcyByZXF1aXJlZCcpO1xuXG4gICAgICAgIGlmICh0aGlzLnVzZUNhbnZhcykge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9nZXRDb250ZXh0KHVzZVNrZXRjaCk7XG4gICAgICAgICAgICBzY2FsZSA9IHNjYWxlIHx8IDE7XG4gICAgICAgICAgICB0aWxlLmRyYXdDYW52YXMoY29udGV4dCwgZHJhd2luZ0hhbmRsZXIsIHNjYWxlLCB0cmFuc2xhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGlsZS5kcmF3SFRNTCggdGhpcy5jYW52YXMgKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBfZ2V0Q29udGV4dDogZnVuY3Rpb24oIHVzZVNrZXRjaCApIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGlmICggdXNlU2tldGNoICkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2tldGNoQ2FudmFzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5za2V0Y2hDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImNhbnZhc1wiICk7XG4gICAgICAgICAgICAgICAgdmFyIHNrZXRjaENhbnZhc1NpemUgPSB0aGlzLl9jYWxjdWxhdGVTa2V0Y2hDYW52YXNTaXplKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5za2V0Y2hDYW52YXMud2lkdGggPSBza2V0Y2hDYW52YXNTaXplLng7XG4gICAgICAgICAgICAgICAgdGhpcy5za2V0Y2hDYW52YXMuaGVpZ2h0ID0gc2tldGNoQ2FudmFzU2l6ZS55O1xuICAgICAgICAgICAgICAgIHRoaXMuc2tldGNoQ29udGV4dCA9IHRoaXMuc2tldGNoQ2FudmFzLmdldENvbnRleHQoIFwiMmRcIiApO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHZpZXdwb3J0IGlzIG5vdCBjdXJyZW50bHkgcm90YXRlZCwgdGhlIHNrZXRjaENhbnZhc1xuICAgICAgICAgICAgICAgIC8vIHdpbGwgaGF2ZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBtYWluIGNhbnZhcy4gSG93ZXZlciwgaWZcbiAgICAgICAgICAgICAgICAvLyB0aGUgdmlld3BvcnQgZ2V0IHJvdGF0ZWQgbGF0ZXIgb24sIHdlIHdpbGwgbmVlZCB0byByZXNpemUgaXQuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld3BvcnQuZ2V0Um90YXRpb24oKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld2VyLmFkZEhhbmRsZXIoJ3JvdGF0ZScsIGZ1bmN0aW9uIHJlc2l6ZVNrZXRjaENhbnZhcygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmlld2VyLnJlbW92ZUhhbmRsZXIoJ3JvdGF0ZScsIHJlc2l6ZVNrZXRjaENhbnZhcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2tldGNoQ2FudmFzU2l6ZSA9IHNlbGYuX2NhbGN1bGF0ZVNrZXRjaENhbnZhc1NpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2tldGNoQ2FudmFzLndpZHRoID0gc2tldGNoQ2FudmFzU2l6ZS54O1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5za2V0Y2hDYW52YXMuaGVpZ2h0ID0gc2tldGNoQ2FudmFzU2l6ZS55O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0ID0gdGhpcy5za2V0Y2hDb250ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgc2F2ZUNvbnRleHQ6IGZ1bmN0aW9uKCB1c2VTa2V0Y2ggKSB7XG4gICAgICAgIGlmICghdGhpcy51c2VDYW52YXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2dldENvbnRleHQoIHVzZVNrZXRjaCApLnNhdmUoKTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIHJlc3RvcmVDb250ZXh0OiBmdW5jdGlvbiggdXNlU2tldGNoICkge1xuICAgICAgICBpZiAoIXRoaXMudXNlQ2FudmFzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9nZXRDb250ZXh0KCB1c2VTa2V0Y2ggKS5yZXN0b3JlKCk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBzZXRDbGlwOiBmdW5jdGlvbihyZWN0LCB1c2VTa2V0Y2gpIHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZUNhbnZhcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9nZXRDb250ZXh0KCB1c2VTa2V0Y2ggKTtcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgICAgY29udGV4dC5yZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG4gICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgZHJhd1JlY3RhbmdsZTogZnVuY3Rpb24ocmVjdCwgZmlsbFN0eWxlLCB1c2VTa2V0Y2gpIHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZUNhbnZhcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9nZXRDb250ZXh0KCB1c2VTa2V0Y2ggKTtcbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZmlsbFN0eWxlO1xuICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBCbGVuZHMgdGhlIHNrZXRjaCBjYW52YXMgaW4gdGhlIG1haW4gY2FudmFzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIFRoZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtGbG9hdH0gb3B0aW9ucy5vcGFjaXR5IFRoZSBvcGFjaXR5IG9mIHRoZSBibGVuZGluZy5cbiAgICAgKiBAcGFyYW0ge0Zsb2F0fSBbb3B0aW9ucy5zY2FsZT0xXSBUaGUgc2NhbGUgYXQgd2hpY2ggdGlsZXMgd2VyZSBkcmF3biBvblxuICAgICAqIHRoZSBza2V0Y2guIERlZmF1bHQgaXMgMS5cbiAgICAgKiBVc2Ugc2NhbGUgdG8gZHJhdyBhdCBhIGxvd2VyIHNjYWxlIGFuZCB0aGVuIGVubGFyZ2Ugb250byB0aGUgbWFpbiBjYW52YXMuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBbb3B0aW9ucy50cmFuc2xhdGVdIEEgdHJhbnNsYXRpb24gdmVjdG9yXG4gICAgICogdGhhdCB3YXMgdXNlZCB0byBkcmF3IHRoZSB0aWxlc1xuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRpb25dIC0gSG93IHRoZSBpbWFnZSBpc1xuICAgICAqIGNvbXBvc2l0ZWQgb250byBvdGhlciBpbWFnZXM7IHNlZSBjb21wb3NpdGVPcGVyYXRpb24gaW5cbiAgICAgKiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5SZWN0fSBbb3B0aW9ucy5ib3VuZHNdIFRoZSBwYXJ0IG9mIHRoZSBza2V0Y2hcbiAgICAgKiBjYW52YXMgdG8gYmxlbmQgaW4gdGhlIG1haW4gY2FudmFzLiBJZiBzcGVjaWZpZWQsIG9wdGlvbnMuc2NhbGUgYW5kXG4gICAgICogb3B0aW9ucy50cmFuc2xhdGUgZ2V0IGlnbm9yZWQuXG4gICAgICovXG4gICAgYmxlbmRTa2V0Y2g6IGZ1bmN0aW9uKG9wYWNpdHksIHNjYWxlLCB0cmFuc2xhdGUsIGNvbXBvc2l0ZU9wZXJhdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IG9wYWNpdHk7XG4gICAgICAgIGlmICghJC5pc1BsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHksXG4gICAgICAgICAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbjogY29tcG9zaXRlT3BlcmF0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy51c2VDYW52YXMgfHwgIXRoaXMuc2tldGNoQ2FudmFzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb3BhY2l0eSA9IG9wdGlvbnMub3BhY2l0eTtcbiAgICAgICAgY29tcG9zaXRlT3BlcmF0aW9uID0gb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIHZhciBib3VuZHMgPSBvcHRpb25zLmJvdW5kcztcblxuICAgICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSBvcGFjaXR5O1xuICAgICAgICBpZiAoY29tcG9zaXRlT3BlcmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5za2V0Y2hDYW52YXMsXG4gICAgICAgICAgICAgICAgYm91bmRzLngsXG4gICAgICAgICAgICAgICAgYm91bmRzLnksXG4gICAgICAgICAgICAgICAgYm91bmRzLndpZHRoLFxuICAgICAgICAgICAgICAgIGJvdW5kcy5oZWlnaHQsXG4gICAgICAgICAgICAgICAgYm91bmRzLngsXG4gICAgICAgICAgICAgICAgYm91bmRzLnksXG4gICAgICAgICAgICAgICAgYm91bmRzLndpZHRoLFxuICAgICAgICAgICAgICAgIGJvdW5kcy5oZWlnaHRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzY2FsZSA9IG9wdGlvbnMuc2NhbGUgfHwgMTtcbiAgICAgICAgICAgIHRyYW5zbGF0ZSA9IG9wdGlvbnMudHJhbnNsYXRlO1xuICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdHJhbnNsYXRlIGluc3RhbmNlb2YgJC5Qb2ludCA/XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlIDogbmV3ICQuUG9pbnQoMCwgMCk7XG5cbiAgICAgICAgICAgIHZhciB3aWR0aEV4dCA9IDA7XG4gICAgICAgICAgICB2YXIgaGVpZ2h0RXh0ID0gMDtcbiAgICAgICAgICAgIGlmICh0cmFuc2xhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2lkdGhEaWZmID0gdGhpcy5za2V0Y2hDYW52YXMud2lkdGggLSB0aGlzLmNhbnZhcy53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0RGlmZiA9IHRoaXMuc2tldGNoQ2FudmFzLmhlaWdodCAtIHRoaXMuY2FudmFzLmhlaWdodDtcbiAgICAgICAgICAgICAgICB3aWR0aEV4dCA9IE1hdGgucm91bmQod2lkdGhEaWZmIC8gMik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0RXh0ID0gTWF0aC5yb3VuZChoZWlnaHREaWZmIC8gMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgICAgIHRoaXMuc2tldGNoQ2FudmFzLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggLSB3aWR0aEV4dCAqIHNjYWxlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgLSBoZWlnaHRFeHQgKiBzY2FsZSxcbiAgICAgICAgICAgICAgICAodGhpcy5jYW52YXMud2lkdGggKyAyICogd2lkdGhFeHQpICogc2NhbGUsXG4gICAgICAgICAgICAgICAgKHRoaXMuY2FudmFzLmhlaWdodCAgKyAyICogaGVpZ2h0RXh0KSAqIHNjYWxlLFxuICAgICAgICAgICAgICAgIC13aWR0aEV4dCxcbiAgICAgICAgICAgICAgICAtaGVpZ2h0RXh0LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLndpZHRoICsgMiAqIHdpZHRoRXh0LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCArIDIgKiBoZWlnaHRFeHRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIGRyYXdEZWJ1Z0luZm86IGZ1bmN0aW9uKCB0aWxlLCBjb3VudCwgaSApe1xuICAgICAgICBpZiAoICF0aGlzLnVzZUNhbnZhcyApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSAyICogJC5waXhlbERlbnNpdHlSYXRpbztcbiAgICAgICAgY29udGV4dC5mb250ID0gJ3NtYWxsLWNhcHMgYm9sZCAnICsgKDEzICogJC5waXhlbERlbnNpdHlSYXRpbykgKyAncHggYXJpYWwnO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gdGhpcy5kZWJ1Z0dyaWRDb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmRlYnVnR3JpZENvbG9yO1xuXG4gICAgICAgIGlmICggdGhpcy52aWV3cG9ydC5kZWdyZWVzICE9PSAwICkge1xuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0Rm9yUm90YXRpb24odGhpcy52aWV3cG9ydC5kZWdyZWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChcbiAgICAgICAgICAgIHRpbGUucG9zaXRpb24ueCAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICB0aWxlLnBvc2l0aW9uLnkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgdGlsZS5zaXplLnggKiAkLnBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgdGlsZS5zaXplLnkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG5cbiAgICAgICAgdmFyIHRpbGVDZW50ZXJYID0gKHRpbGUucG9zaXRpb24ueCArICh0aWxlLnNpemUueCAvIDIpKSAqICQucGl4ZWxEZW5zaXR5UmF0aW87XG4gICAgICAgIHZhciB0aWxlQ2VudGVyWSA9ICh0aWxlLnBvc2l0aW9uLnkgKyAodGlsZS5zaXplLnkgLyAyKSkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvO1xuXG4gICAgICAgIC8vIFJvdGF0ZSB0aGUgdGV4dCB0aGUgcmlnaHQgd2F5IGFyb3VuZC5cbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoIHRpbGVDZW50ZXJYLCB0aWxlQ2VudGVyWSApO1xuICAgICAgICBjb250ZXh0LnJvdGF0ZSggTWF0aC5QSSAvIDE4MCAqIC10aGlzLnZpZXdwb3J0LmRlZ3JlZXMgKTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoIC10aWxlQ2VudGVyWCwgLXRpbGVDZW50ZXJZICk7XG5cbiAgICAgICAgaWYoIHRpbGUueCA9PT0gMCAmJiB0aWxlLnkgPT09IDAgKXtcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoXG4gICAgICAgICAgICAgICAgXCJab29tOiBcIiArIHRoaXMudmlld3BvcnQuZ2V0Wm9vbSgpLFxuICAgICAgICAgICAgICAgIHRpbGUucG9zaXRpb24ueCAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICAgICAgKHRpbGUucG9zaXRpb24ueSAtIDMwKSAqICQucGl4ZWxEZW5zaXR5UmF0aW9cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFxuICAgICAgICAgICAgICAgIFwiUGFuOiBcIiArIHRoaXMudmlld3BvcnQuZ2V0Qm91bmRzKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0aWxlLnBvc2l0aW9uLnggKiAkLnBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgICAgICh0aWxlLnBvc2l0aW9uLnkgLSAyMCkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuZmlsbFRleHQoXG4gICAgICAgICAgICBcIkxldmVsOiBcIiArIHRpbGUubGV2ZWwsXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi54ICsgMTApICogJC5waXhlbERlbnNpdHlSYXRpbyxcbiAgICAgICAgICAgICh0aWxlLnBvc2l0aW9uLnkgKyAyMCkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQuZmlsbFRleHQoXG4gICAgICAgICAgICBcIkNvbHVtbjogXCIgKyB0aWxlLngsXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi54ICsgMTApICogJC5waXhlbERlbnNpdHlSYXRpbyxcbiAgICAgICAgICAgICh0aWxlLnBvc2l0aW9uLnkgKyAzMCkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQuZmlsbFRleHQoXG4gICAgICAgICAgICBcIlJvdzogXCIgKyB0aWxlLnksXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi54ICsgMTApICogJC5waXhlbERlbnNpdHlSYXRpbyxcbiAgICAgICAgICAgICh0aWxlLnBvc2l0aW9uLnkgKyA0MCkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQuZmlsbFRleHQoXG4gICAgICAgICAgICBcIk9yZGVyOiBcIiArIGkgKyBcIiBvZiBcIiArIGNvdW50LFxuICAgICAgICAgICAgKHRpbGUucG9zaXRpb24ueCArIDEwKSAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi55ICsgNTApICogJC5waXhlbERlbnNpdHlSYXRpb1xuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFxuICAgICAgICAgICAgXCJTaXplOiBcIiArIHRpbGUuc2l6ZS50b1N0cmluZygpLFxuICAgICAgICAgICAgKHRpbGUucG9zaXRpb24ueCArIDEwKSAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi55ICsgNjApICogJC5waXhlbERlbnNpdHlSYXRpb1xuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFxuICAgICAgICAgICAgXCJQb3NpdGlvbjogXCIgKyB0aWxlLnBvc2l0aW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAodGlsZS5wb3NpdGlvbi54ICsgMTApICogJC5waXhlbERlbnNpdHlSYXRpbyxcbiAgICAgICAgICAgICh0aWxlLnBvc2l0aW9uLnkgKyA3MCkgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCB0aGlzLnZpZXdwb3J0LmRlZ3JlZXMgIT09IDAgKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXN0b3JlUm90YXRpb25DaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBkZWJ1Z1JlY3Q6IGZ1bmN0aW9uKHJlY3QpIHtcbiAgICAgICAgaWYgKCB0aGlzLnVzZUNhbnZhcyApIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDIgKiAkLnBpeGVsRGVuc2l0eVJhdGlvO1xuICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRoaXMuZGVidWdHcmlkQ29sb3I7XG4gICAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuZGVidWdHcmlkQ29sb3I7XG5cbiAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChcbiAgICAgICAgICAgICAgICByZWN0LnggKiAkLnBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgICAgIHJlY3QueSAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICAgICAgcmVjdC53aWR0aCAqICQucGl4ZWxEZW5zaXR5UmF0aW8sXG4gICAgICAgICAgICAgICAgcmVjdC5oZWlnaHQgKiAkLnBpeGVsRGVuc2l0eVJhdGlvXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGNhbnZhcyBzaXplXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBza2V0Y2ggSWYgc2V0IHRvIHRydWUgcmV0dXJuIHRoZSBzaXplIG9mIHRoZSBza2V0Y2ggY2FudmFzXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBzaXplIG9mIHRoZSBjYW52YXNcbiAgICAgKi9cbiAgICBnZXRDYW52YXNTaXplOiBmdW5jdGlvbihza2V0Y2gpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuX2dldENvbnRleHQoc2tldGNoKS5jYW52YXM7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludChjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX29mZnNldEZvclJvdGF0aW9uOiBmdW5jdGlvbihkZWdyZWVzLCB1c2VTa2V0Y2gpIHtcbiAgICAgICAgdmFyIGN4ID0gdGhpcy5jYW52YXMud2lkdGggLyAyO1xuICAgICAgICB2YXIgY3kgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLyAyO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5fZ2V0Q29udGV4dCh1c2VTa2V0Y2gpO1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICBjb250ZXh0LnJvdGF0ZShNYXRoLlBJIC8gMTgwICogZGVncmVlcyk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1jeCwgLWN5KTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9yZXN0b3JlUm90YXRpb25DaGFuZ2VzOiBmdW5jdGlvbih1c2VTa2V0Y2gpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLl9nZXRDb250ZXh0KHVzZVNrZXRjaCk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2NhbGN1bGF0ZUNhbnZhc1NpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGl4ZWxEZW5zaXR5UmF0aW8gPSAkLnBpeGVsRGVuc2l0eVJhdGlvO1xuICAgICAgICB2YXIgdmlld3BvcnRTaXplID0gdGhpcy52aWV3cG9ydC5nZXRDb250YWluZXJTaXplKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB2aWV3cG9ydFNpemUueCAqIHBpeGVsRGVuc2l0eVJhdGlvLFxuICAgICAgICAgICAgeTogdmlld3BvcnRTaXplLnkgKiBwaXhlbERlbnNpdHlSYXRpb1xuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2NhbGN1bGF0ZVNrZXRjaENhbnZhc1NpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2FudmFzU2l6ZSA9IHRoaXMuX2NhbGN1bGF0ZUNhbnZhc1NpemUoKTtcbiAgICAgICAgaWYgKHRoaXMudmlld3BvcnQuZ2V0Um90YXRpb24oKSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbnZhc1NpemU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgdGhlIHZpZXdwb3J0IGlzIHJvdGF0ZWQsIHdlIG5lZWQgYSBsYXJnZXIgc2tldGNoIGNhbnZhcyBpbiBvcmRlclxuICAgICAgICAvLyB0byBzdXBwb3J0IGVkZ2Ugc21vb3RoaW5nLlxuICAgICAgICB2YXIgc2tldGNoQ2FudmFzU2l6ZSA9IE1hdGguY2VpbChNYXRoLnNxcnQoXG4gICAgICAgICAgICBjYW52YXNTaXplLnggKiBjYW52YXNTaXplLnggK1xuICAgICAgICAgICAgY2FudmFzU2l6ZS55ICogY2FudmFzU2l6ZS55KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBza2V0Y2hDYW52YXNTaXplLFxuICAgICAgICAgICAgeTogc2tldGNoQ2FudmFzU2l6ZVxuICAgICAgICB9O1xuICAgIH1cbn07XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gVmlld3BvcnRcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cblxuLyoqXG4gKiBAY2xhc3MgVmlld3BvcnRcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAY2xhc3NkZXNjIEhhbmRsZXMgY29vcmRpbmF0ZS1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkgKHpvb20sIHBhbiwgcm90YXRpb24sIGV0Yy4pXG4gKiBmb3IgYW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyfS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgdGhpcyBWaWV3cG9ydC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5tYXJnaW5zXSAtIFNlZSB2aWV3cG9ydE1hcmdpbnMgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3ByaW5nU3RpZmZuZXNzXSAtIFNlZSBzcHJpbmdTdGlmZm5lc3MgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuYW5pbWF0aW9uVGltZV0gLSBTZWUgYW5pbWF0aW9uVGltZSBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5taW5ab29tSW1hZ2VSYXRpb10gLSBTZWUgbWluWm9vbUltYWdlUmF0aW8gaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMubWF4Wm9vbVBpeGVsUmF0aW9dIC0gU2VlIG1heFpvb21QaXhlbFJhdGlvIGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnZpc2liaWxpdHlSYXRpb10gLSBTZWUgdmlzaWJpbGl0eVJhdGlvIGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy53cmFwSG9yaXpvbnRhbF0gLSBTZWUgd3JhcEhvcml6b250YWwgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLndyYXBWZXJ0aWNhbF0gLSBTZWUgd3JhcFZlcnRpY2FsIGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmRlZmF1bHRab29tTGV2ZWxdIC0gU2VlIGRlZmF1bHRab29tTGV2ZWwgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMubWluWm9vbUxldmVsXSAtIFNlZSBtaW5ab29tTGV2ZWwgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMubWF4Wm9vbUxldmVsXSAtIFNlZSBtYXhab29tTGV2ZWwgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuZGVncmVlc10gLSBTZWUgZGVncmVlcyBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaG9tZUZpbGxzVmlld2VyXSAtIFNlZSBob21lRmlsbHNWaWV3ZXIgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKi9cbiQuVmlld3BvcnQgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcblxuICAgIC8vYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgcG9zaXRpb25hbCBhcmdzIHdoaWxlIHByZWZlcmluZyBtb3JlXG4gICAgLy9pZGlvbWF0aWMgamF2YXNjcmlwdCBvcHRpb25zIG9iamVjdCBhcyB0aGUgb25seSBhcmd1bWVudFxuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIGlmKCAgYXJncy5sZW5ndGggJiYgYXJnc1sgMCBdIGluc3RhbmNlb2YgJC5Qb2ludCApe1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgY29udGFpbmVyU2l6ZTogIGFyZ3NbIDAgXSxcbiAgICAgICAgICAgIGNvbnRlbnRTaXplOiAgICBhcmdzWyAxIF0sXG4gICAgICAgICAgICBjb25maWc6ICAgICAgICAgYXJnc1sgMiBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy9vcHRpb25zLmNvbmZpZyBhbmQgdGhlIGdlbmVyYWwgY29uZmlnIGFyZ3VtZW50IGFyZSBkZXByZWNhdGVkXG4gICAgLy9pbiBmYXZvciBvZiB0aGUgbW9yZSBkaXJlY3Qgc3BlY2lmaWNhdGlvbiBvZiBvcHRpb25hbCBzZXR0aW5nc1xuICAgIC8vYmVpbmcgcGFzc2VkIGRpcmVjdGx5IG9uIHRoZSBvcHRpb25zIG9iamVjdFxuICAgIGlmICggb3B0aW9ucy5jb25maWcgKXtcbiAgICAgICAgJC5leHRlbmQoIHRydWUsIG9wdGlvbnMsIG9wdGlvbnMuY29uZmlnICk7XG4gICAgICAgIGRlbGV0ZSBvcHRpb25zLmNvbmZpZztcbiAgICB9XG5cbiAgICB0aGlzLl9tYXJnaW5zID0gJC5leHRlbmQoe1xuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICBib3R0b206IDBcbiAgICB9LCBvcHRpb25zLm1hcmdpbnMgfHwge30pO1xuXG4gICAgZGVsZXRlIG9wdGlvbnMubWFyZ2lucztcblxuICAgICQuZXh0ZW5kKCB0cnVlLCB0aGlzLCB7XG5cbiAgICAgICAgLy9yZXF1aXJlZCBzZXR0aW5nc1xuICAgICAgICBjb250YWluZXJTaXplOiAgICAgIG51bGwsXG4gICAgICAgIGNvbnRlbnRTaXplOiAgICAgICAgbnVsbCxcblxuICAgICAgICAvL2ludGVybmFsIHN0YXRlIHByb3BlcnRpZXNcbiAgICAgICAgem9vbVBvaW50OiAgICAgICAgICBudWxsLFxuICAgICAgICB2aWV3ZXI6ICAgICAgICAgICBudWxsLFxuXG4gICAgICAgIC8vY29uZmlndXJhYmxlIG9wdGlvbnNcbiAgICAgICAgc3ByaW5nU3RpZmZuZXNzOiAgICAkLkRFRkFVTFRfU0VUVElOR1Muc3ByaW5nU3RpZmZuZXNzLFxuICAgICAgICBhbmltYXRpb25UaW1lOiAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5hbmltYXRpb25UaW1lLFxuICAgICAgICBtaW5ab29tSW1hZ2VSYXRpbzogICQuREVGQVVMVF9TRVRUSU5HUy5taW5ab29tSW1hZ2VSYXRpbyxcbiAgICAgICAgbWF4Wm9vbVBpeGVsUmF0aW86ICAkLkRFRkFVTFRfU0VUVElOR1MubWF4Wm9vbVBpeGVsUmF0aW8sXG4gICAgICAgIHZpc2liaWxpdHlSYXRpbzogICAgJC5ERUZBVUxUX1NFVFRJTkdTLnZpc2liaWxpdHlSYXRpbyxcbiAgICAgICAgd3JhcEhvcml6b250YWw6ICAgICAkLkRFRkFVTFRfU0VUVElOR1Mud3JhcEhvcml6b250YWwsXG4gICAgICAgIHdyYXBWZXJ0aWNhbDogICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLndyYXBWZXJ0aWNhbCxcbiAgICAgICAgZGVmYXVsdFpvb21MZXZlbDogICAkLkRFRkFVTFRfU0VUVElOR1MuZGVmYXVsdFpvb21MZXZlbCxcbiAgICAgICAgbWluWm9vbUxldmVsOiAgICAgICAkLkRFRkFVTFRfU0VUVElOR1MubWluWm9vbUxldmVsLFxuICAgICAgICBtYXhab29tTGV2ZWw6ICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5tYXhab29tTGV2ZWwsXG4gICAgICAgIGRlZ3JlZXM6ICAgICAgICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmRlZ3JlZXMsXG4gICAgICAgIGhvbWVGaWxsc1ZpZXdlcjogICAgJC5ERUZBVUxUX1NFVFRJTkdTLmhvbWVGaWxsc1ZpZXdlclxuXG4gICAgfSwgb3B0aW9ucyApO1xuXG4gICAgdGhpcy5fdXBkYXRlQ29udGFpbmVySW5uZXJTaXplKCk7XG5cbiAgICB0aGlzLmNlbnRlclNwcmluZ1ggPSBuZXcgJC5TcHJpbmcoe1xuICAgICAgICBpbml0aWFsOiAwLFxuICAgICAgICBzcHJpbmdTdGlmZm5lc3M6IHRoaXMuc3ByaW5nU3RpZmZuZXNzLFxuICAgICAgICBhbmltYXRpb25UaW1lOiAgIHRoaXMuYW5pbWF0aW9uVGltZVxuICAgIH0pO1xuICAgIHRoaXMuY2VudGVyU3ByaW5nWSA9IG5ldyAkLlNwcmluZyh7XG4gICAgICAgIGluaXRpYWw6IDAsXG4gICAgICAgIHNwcmluZ1N0aWZmbmVzczogdGhpcy5zcHJpbmdTdGlmZm5lc3MsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6ICAgdGhpcy5hbmltYXRpb25UaW1lXG4gICAgfSk7XG4gICAgdGhpcy56b29tU3ByaW5nICAgID0gbmV3ICQuU3ByaW5nKHtcbiAgICAgICAgZXhwb25lbnRpYWw6IHRydWUsXG4gICAgICAgIGluaXRpYWw6IDEsXG4gICAgICAgIHNwcmluZ1N0aWZmbmVzczogdGhpcy5zcHJpbmdTdGlmZm5lc3MsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6ICAgdGhpcy5hbmltYXRpb25UaW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vbGRDZW50ZXJYID0gdGhpcy5jZW50ZXJTcHJpbmdYLmN1cnJlbnQudmFsdWU7XG4gICAgdGhpcy5fb2xkQ2VudGVyWSA9IHRoaXMuY2VudGVyU3ByaW5nWS5jdXJyZW50LnZhbHVlO1xuICAgIHRoaXMuX29sZFpvb20gICAgPSB0aGlzLnpvb21TcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgIHRoaXMuX3NldENvbnRlbnRCb3VuZHMobmV3ICQuUmVjdCgwLCAwLCAxLCAxKSwgMSk7XG5cbiAgICB0aGlzLmdvSG9tZSh0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xufTtcblxuLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLlZpZXdwb3J0LnByb3RvdHlwZSAqL1xuJC5WaWV3cG9ydC5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgdmlld3BvcnQncyBob21lIGJvdW5kcyBhbmQgY29uc3RyYWludHMgZm9yIHRoZSBnaXZlbiBjb250ZW50IHNpemUuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBjb250ZW50U2l6ZSAtIHNpemUgb2YgdGhlIGNvbnRlbnQgaW4gY29udGVudCB1bml0c1xuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6cmVzZXQtc2l6ZVxuICAgICAqL1xuICAgIHJlc2V0Q29udGVudFNpemU6IGZ1bmN0aW9uKGNvbnRlbnRTaXplKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoY29udGVudFNpemUsIFwiW1ZpZXdwb3J0LnJlc2V0Q29udGVudFNpemVdIGNvbnRlbnRTaXplIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRTaXplIGluc3RhbmNlb2YgJC5Qb2ludCwgXCJbVmlld3BvcnQucmVzZXRDb250ZW50U2l6ZV0gY29udGVudFNpemUgbXVzdCBiZSBhbiBPcGVuU2VhZHJhZ29uLlBvaW50XCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRTaXplLnggPiAwLCBcIltWaWV3cG9ydC5yZXNldENvbnRlbnRTaXplXSBjb250ZW50U2l6ZS54IG11c3QgYmUgZ3JlYXRlciB0aGFuIDBcIik7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoY29udGVudFNpemUueSA+IDAsIFwiW1ZpZXdwb3J0LnJlc2V0Q29udGVudFNpemVdIGNvbnRlbnRTaXplLnkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMFwiKTtcblxuICAgICAgICB0aGlzLl9zZXRDb250ZW50Qm91bmRzKG5ldyAkLlJlY3QoMCwgMCwgMSwgY29udGVudFNpemUueSAvIGNvbnRlbnRTaXplLngpLCBjb250ZW50U2l6ZS54KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICBzZXRIb21lQm91bmRzOiBmdW5jdGlvbihib3VuZHMsIGNvbnRlbnRGYWN0b3IpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKFwiW1ZpZXdwb3J0LnNldEhvbWVCb3VuZHNdIHRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgVGhlIGNvbnRlbnQgYm91bmRzIHNob3VsZCBub3QgYmUgc2V0IG1hbnVhbGx5LlwiKTtcbiAgICAgICAgdGhpcy5fc2V0Q29udGVudEJvdW5kcyhib3VuZHMsIGNvbnRlbnRGYWN0b3IpO1xuICAgIH0sXG5cbiAgICAvLyBTZXQgdGhlIHZpZXdwb3J0J3MgY29udGVudCBib3VuZHNcbiAgICAvLyBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gYm91bmRzIC0gdGhlIG5ldyBib3VuZHMgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXNcbiAgICAvLyB3aXRob3V0IHJvdGF0aW9uXG4gICAgLy8gQHBhcmFtIHtOdW1iZXJ9IGNvbnRlbnRGYWN0b3IgLSBob3cgbWFueSBjb250ZW50IHVuaXRzIHBlciB2aWV3cG9ydCB1bml0XG4gICAgLy8gQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50OnJlc2V0LXNpemVcbiAgICAvLyBAcHJpdmF0ZVxuICAgIF9zZXRDb250ZW50Qm91bmRzOiBmdW5jdGlvbihib3VuZHMsIGNvbnRlbnRGYWN0b3IpIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydChib3VuZHMsIFwiW1ZpZXdwb3J0Ll9zZXRDb250ZW50Qm91bmRzXSBib3VuZHMgaXMgcmVxdWlyZWRcIik7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoYm91bmRzIGluc3RhbmNlb2YgJC5SZWN0LCBcIltWaWV3cG9ydC5fc2V0Q29udGVudEJvdW5kc10gYm91bmRzIG11c3QgYmUgYW4gT3BlblNlYWRyYWdvbi5SZWN0XCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGJvdW5kcy53aWR0aCA+IDAsIFwiW1ZpZXdwb3J0Ll9zZXRDb250ZW50Qm91bmRzXSBib3VuZHMud2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMFwiKTtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydChib3VuZHMuaGVpZ2h0ID4gMCwgXCJbVmlld3BvcnQuX3NldENvbnRlbnRCb3VuZHNdIGJvdW5kcy5oZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMFwiKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUgPSBib3VuZHMuY2xvbmUoKTtcbiAgICAgICAgdGhpcy5fY29udGVudFNpemVOb1JvdGF0ZSA9IHRoaXMuX2NvbnRlbnRCb3VuZHNOb1JvdGF0ZS5nZXRTaXplKCkudGltZXMoXG4gICAgICAgICAgICBjb250ZW50RmFjdG9yKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50Qm91bmRzID0gYm91bmRzLnJvdGF0ZSh0aGlzLmRlZ3JlZXMpLmdldEJvdW5kaW5nQm94KCk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRTaXplID0gdGhpcy5fY29udGVudEJvdW5kcy5nZXRTaXplKCkudGltZXMoY29udGVudEZhY3Rvcik7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRBc3BlY3RSYXRpbyA9IHRoaXMuX2NvbnRlbnRTaXplLnggLyB0aGlzLl9jb250ZW50U2l6ZS55O1xuXG4gICAgICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgdmlld2VyJ3MgY29udGVudCBzaXplIG9yIGhvbWUgYm91bmRzIGFyZSByZXNldFxuICAgICAgICAgICAgICogKHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3cG9ydCNyZXNldENvbnRlbnRTaXplfSkuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV2ZW50IHJlc2V0LXNpemVcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gY29udGVudFNpemVcbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5SZWN0fSBjb250ZW50Qm91bmRzIC0gQ29udGVudCBib3VuZHMuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUmVjdH0gaG9tZUJvdW5kcyAtIENvbnRlbnQgYm91bmRzLlxuICAgICAgICAgICAgICogRGVwcmVjYXRlZCB1c2UgY29udGVudEJvdW5kcyBpbnN0ZWFkLlxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGNvbnRlbnRGYWN0b3JcbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy52aWV3ZXIucmFpc2VFdmVudCgncmVzZXQtc2l6ZScsIHtcbiAgICAgICAgICAgICAgICBjb250ZW50U2l6ZTogdGhpcy5fY29udGVudFNpemVOb1JvdGF0ZS5jbG9uZSgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRGYWN0b3I6IGNvbnRlbnRGYWN0b3IsXG4gICAgICAgICAgICAgICAgaG9tZUJvdW5kczogdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLmNsb25lKCksXG4gICAgICAgICAgICAgICAgY29udGVudEJvdW5kczogdGhpcy5fY29udGVudEJvdW5kcy5jbG9uZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBob21lIHpvb20gaW4gXCJ2aWV3cG9ydCB6b29tXCIgdmFsdWUuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge051bWJlcn0gVGhlIGhvbWUgem9vbSBpbiBcInZpZXdwb3J0IHpvb21cIi5cbiAgICAgKi9cbiAgICBnZXRIb21lWm9vbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRab29tTGV2ZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRab29tTGV2ZWw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYXNwZWN0RmFjdG9yID0gdGhpcy5fY29udGVudEFzcGVjdFJhdGlvIC8gdGhpcy5nZXRBc3BlY3RSYXRpbygpO1xuICAgICAgICB2YXIgb3V0cHV0O1xuICAgICAgICBpZiAodGhpcy5ob21lRmlsbHNWaWV3ZXIpIHsgLy8gZmlsbCB0aGUgdmlld2VyIGFuZCBjbGlwIHRoZSBpbWFnZVxuICAgICAgICAgICAgb3V0cHV0ID0gYXNwZWN0RmFjdG9yID49IDEgPyBhc3BlY3RGYWN0b3IgOiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0ID0gYXNwZWN0RmFjdG9yID49IDEgPyAxIDogYXNwZWN0RmFjdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dCAvIHRoaXMuX2NvbnRlbnRCb3VuZHMud2lkdGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGhvbWUgYm91bmRzIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlJlY3R9IFRoZSBob21lIGJvdW5kcyBpbiB2ZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqL1xuICAgIGdldEhvbWVCb3VuZHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRIb21lQm91bmRzTm9Sb3RhdGUoKS5yb3RhdGUoLXRoaXMuZ2V0Um90YXRpb24oKSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGhvbWUgYm91bmRzIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIFRoaXMgbWV0aG9kIGlnbm9yZXMgdGhlIHZpZXdwb3J0IHJvdGF0aW9uLiBVc2VcbiAgICAgKiB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3cG9ydCNnZXRIb21lQm91bmRzfSB0byB0YWtlIGl0IGludG8gYWNjb3VudC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBUaGUgaG9tZSBib3VuZHMgaW4gdmV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBnZXRIb21lQm91bmRzTm9Sb3RhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fY29udGVudEJvdW5kcy5nZXRDZW50ZXIoKTtcbiAgICAgICAgdmFyIHdpZHRoICA9IDEuMCAvIHRoaXMuZ2V0SG9tZVpvb20oKTtcbiAgICAgICAgdmFyIGhlaWdodCA9IHdpZHRoIC8gdGhpcy5nZXRBc3BlY3RSYXRpbygpO1xuXG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgY2VudGVyLnggLSAod2lkdGggLyAyLjApLFxuICAgICAgICAgICAgY2VudGVyLnkgLSAoaGVpZ2h0IC8gMi4wKSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0XG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gaW1tZWRpYXRlbHlcbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6aG9tZVxuICAgICAqL1xuICAgIGdvSG9tZTogZnVuY3Rpb24oaW1tZWRpYXRlbHkpIHtcbiAgICAgICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSBcImhvbWVcIiBvcGVyYXRpb24gb2NjdXJzIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjZ29Ib21lfSkuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV2ZW50IGhvbWVcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy52aWV3ZXIucmFpc2VFdmVudCgnaG9tZScsIHtcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVseTogaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpdEJvdW5kcyh0aGlzLmdldEhvbWVCb3VuZHMoKSwgaW1tZWRpYXRlbHkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKi9cbiAgICBnZXRNaW5ab29tOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGhvbWVab29tID0gdGhpcy5nZXRIb21lWm9vbSgpLFxuICAgICAgICAgICAgem9vbSA9IHRoaXMubWluWm9vbUxldmVsID9cbiAgICAgICAgICAgIHRoaXMubWluWm9vbUxldmVsIDpcbiAgICAgICAgICAgICAgICB0aGlzLm1pblpvb21JbWFnZVJhdGlvICogaG9tZVpvb207XG5cbiAgICAgICAgcmV0dXJuIHpvb207XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqL1xuICAgIGdldE1heFpvb206IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgem9vbSA9IHRoaXMubWF4Wm9vbUxldmVsO1xuICAgICAgICBpZiAoIXpvb20pIHtcbiAgICAgICAgICAgIHpvb20gPSB0aGlzLl9jb250ZW50U2l6ZS54ICogdGhpcy5tYXhab29tUGl4ZWxSYXRpbyAvIHRoaXMuX2NvbnRhaW5lcklubmVyU2l6ZS54O1xuICAgICAgICAgICAgem9vbSAvPSB0aGlzLl9jb250ZW50Qm91bmRzLndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KCB6b29tLCB0aGlzLmdldEhvbWVab29tKCkgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICovXG4gICAgZ2V0QXNwZWN0UmF0aW86IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVySW5uZXJTaXplLnggLyB0aGlzLl9jb250YWluZXJJbm5lclNpemUueTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9IFRoZSBzaXplIG9mIHRoZSBjb250YWluZXIsIGluIHNjcmVlbiBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBnZXRDb250YWluZXJTaXplOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJTaXplLngsXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclNpemUueVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWFyZ2lucyBwdXNoIHRoZSBcImhvbWVcIiByZWdpb24gaW4gZnJvbSB0aGUgc2lkZXMgYnkgdGhlIHNwZWNpZmllZCBhbW91bnRzLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFByb3BlcnRpZXMgKE51bWJlcnMsIGluIHNjcmVlbiBjb29yZGluYXRlcyk6IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbS5cbiAgICAgKi9cbiAgICBnZXRNYXJnaW5zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCB0aGlzLl9tYXJnaW5zKTsgLy8gTWFrZSBhIGNvcHkgc28gd2UgYXJlIG5vdCByZXR1cm5pbmcgb3VyIG9yaWdpbmFsXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYXJnaW5zIHB1c2ggdGhlIFwiaG9tZVwiIHJlZ2lvbiBpbiBmcm9tIHRoZSBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG1hcmdpbnMgLSBQcm9wZXJ0aWVzIChOdW1iZXJzLCBpbiBzY3JlZW4gY29vcmRpbmF0ZXMpOiBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20uXG4gICAgICovXG4gICAgc2V0TWFyZ2luczogZnVuY3Rpb24obWFyZ2lucykge1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KCQudHlwZShtYXJnaW5zKSA9PT0gJ29iamVjdCcsICdbVmlld3BvcnQuc2V0TWFyZ2luc10gbWFyZ2lucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuXG4gICAgICAgIHRoaXMuX21hcmdpbnMgPSAkLmV4dGVuZCh7XG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDBcbiAgICAgICAgfSwgbWFyZ2lucyk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ29udGFpbmVySW5uZXJTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgICAgICAgdGhpcy52aWV3ZXIuZm9yY2VSZWRyYXcoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBib3VuZHMgb2YgdGhlIHZpc2libGUgYXJlYSBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGN1cnJlbnQgLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uOyBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBUaGUgbG9jYXRpb24geW91IGFyZSB6b29tZWQvcGFubmVkIHRvLCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRzTm9Sb3RhdGUoY3VycmVudCkucm90YXRlKC10aGlzLmdldFJvdGF0aW9uKCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBib3VuZHMgb2YgdGhlIHZpc2libGUgYXJlYSBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKiBUaGlzIG1ldGhvZCBpZ25vcmVzIHRoZSB2aWV3cG9ydCByb3RhdGlvbi4gVXNlXG4gICAgICoge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjZ2V0Qm91bmRzfSB0byB0YWtlIGl0IGludG8gYWNjb3VudC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGN1cnJlbnQgLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uOyBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBUaGUgbG9jYXRpb24geW91IGFyZSB6b29tZWQvcGFubmVkIHRvLCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBnZXRCb3VuZHNOb1JvdGF0ZTogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5nZXRDZW50ZXIoY3VycmVudCk7XG4gICAgICAgIHZhciB3aWR0aCAgPSAxLjAgLyB0aGlzLmdldFpvb20oY3VycmVudCk7XG4gICAgICAgIHZhciBoZWlnaHQgPSB3aWR0aCAvIHRoaXMuZ2V0QXNwZWN0UmF0aW8oKTtcblxuICAgICAgICByZXR1cm4gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIGNlbnRlci54IC0gKHdpZHRoIC8gMi4wKSxcbiAgICAgICAgICAgIGNlbnRlci55IC0gKGhlaWdodCAvIDIuMCksXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodFxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGN1cnJlbnQgLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uOyBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSBUaGUgbG9jYXRpb24geW91IGFyZSB6b29tZWQvcGFubmVkIHRvLFxuICAgICAqIGluY2x1ZGluZyB0aGUgc3BhY2UgdGFrZW4gYnkgbWFyZ2lucywgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gICAgICovXG4gICAgZ2V0Qm91bmRzV2l0aE1hcmdpbnM6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRzTm9Sb3RhdGVXaXRoTWFyZ2lucyhjdXJyZW50KS5yb3RhdGUoXG4gICAgICAgICAgICAtdGhpcy5nZXRSb3RhdGlvbigpLCB0aGlzLmdldENlbnRlcihjdXJyZW50KSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gY3VycmVudCAtIFBhc3MgdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgbG9jYXRpb247IGRlZmF1bHRzIHRvIGZhbHNlICh0YXJnZXQgbG9jYXRpb24pLlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlJlY3R9IFRoZSBsb2NhdGlvbiB5b3UgYXJlIHpvb21lZC9wYW5uZWQgdG8sXG4gICAgICogaW5jbHVkaW5nIHRoZSBzcGFjZSB0YWtlbiBieSBtYXJnaW5zLCBpbiB2aWV3cG9ydCBjb29yZGluYXRlcy5cbiAgICAgKi9cbiAgICBnZXRCb3VuZHNOb1JvdGF0ZVdpdGhNYXJnaW5zOiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgIHZhciBib3VuZHMgPSB0aGlzLmdldEJvdW5kc05vUm90YXRlKGN1cnJlbnQpO1xuICAgICAgICB2YXIgZmFjdG9yID0gdGhpcy5fY29udGFpbmVySW5uZXJTaXplLnggKiB0aGlzLmdldFpvb20oY3VycmVudCk7XG4gICAgICAgIGJvdW5kcy54IC09IHRoaXMuX21hcmdpbnMubGVmdCAvIGZhY3RvcjtcbiAgICAgICAgYm91bmRzLnkgLT0gdGhpcy5fbWFyZ2lucy50b3AgLyBmYWN0b3I7XG4gICAgICAgIGJvdW5kcy53aWR0aCArPSAodGhpcy5fbWFyZ2lucy5sZWZ0ICsgdGhpcy5fbWFyZ2lucy5yaWdodCkgLyBmYWN0b3I7XG4gICAgICAgIGJvdW5kcy5oZWlnaHQgKz0gKHRoaXMuX21hcmdpbnMudG9wICsgdGhpcy5fbWFyZ2lucy5ib3R0b20pIC8gZmFjdG9yO1xuICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGN1cnJlbnQgLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uOyBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKi9cbiAgICBnZXRDZW50ZXI6IGZ1bmN0aW9uKCBjdXJyZW50ICkge1xuICAgICAgICB2YXIgY2VudGVyQ3VycmVudCA9IG5ldyAkLlBvaW50KFxuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWC5jdXJyZW50LnZhbHVlLFxuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWS5jdXJyZW50LnZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY2VudGVyVGFyZ2V0ID0gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJTcHJpbmdYLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNlbnRlclNwcmluZ1kudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb2xkWm9vbVBpeGVsLFxuICAgICAgICAgICAgem9vbSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgYm91bmRzLFxuICAgICAgICAgICAgbmV3Wm9vbVBpeGVsLFxuICAgICAgICAgICAgZGVsdGFab29tUGl4ZWxzLFxuICAgICAgICAgICAgZGVsdGFab29tUG9pbnRzO1xuXG4gICAgICAgIGlmICggY3VycmVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBjZW50ZXJDdXJyZW50O1xuICAgICAgICB9IGVsc2UgaWYgKCAhdGhpcy56b29tUG9pbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gY2VudGVyVGFyZ2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgb2xkWm9vbVBpeGVsID0gdGhpcy5waXhlbEZyb21Qb2ludCh0aGlzLnpvb21Qb2ludCwgdHJ1ZSk7XG5cbiAgICAgICAgem9vbSAgICA9IHRoaXMuZ2V0Wm9vbSgpO1xuICAgICAgICB3aWR0aCAgID0gMS4wIC8gem9vbTtcbiAgICAgICAgaGVpZ2h0ICA9IHdpZHRoIC8gdGhpcy5nZXRBc3BlY3RSYXRpbygpO1xuICAgICAgICBib3VuZHMgID0gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIGNlbnRlckN1cnJlbnQueCAtIHdpZHRoIC8gMi4wLFxuICAgICAgICAgICAgY2VudGVyQ3VycmVudC55IC0gaGVpZ2h0IC8gMi4wLFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHRcbiAgICAgICAgKTtcblxuICAgICAgICBuZXdab29tUGl4ZWwgPSB0aGlzLl9waXhlbEZyb21Qb2ludCh0aGlzLnpvb21Qb2ludCwgYm91bmRzKTtcbiAgICAgICAgZGVsdGFab29tUGl4ZWxzID0gbmV3Wm9vbVBpeGVsLm1pbnVzKCBvbGRab29tUGl4ZWwgKTtcbiAgICAgICAgZGVsdGFab29tUG9pbnRzID0gZGVsdGFab29tUGl4ZWxzLmRpdmlkZSggdGhpcy5fY29udGFpbmVySW5uZXJTaXplLnggKiB6b29tICk7XG5cbiAgICAgICAgcmV0dXJuIGNlbnRlclRhcmdldC5wbHVzKCBkZWx0YVpvb21Qb2ludHMgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBjdXJyZW50IC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjsgZGVmYXVsdHMgdG8gZmFsc2UgKHRhcmdldCBsb2NhdGlvbikuXG4gICAgICovXG4gICAgZ2V0Wm9vbTogZnVuY3Rpb24oIGN1cnJlbnQgKSB7XG4gICAgICAgIGlmICggY3VycmVudCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnpvb21TcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnpvb21TcHJpbmcudGFyZ2V0LnZhbHVlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfYXBwbHlab29tQ29uc3RyYWludHM6IGZ1bmN0aW9uKHpvb20pIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICAgICAgTWF0aC5taW4oem9vbSwgdGhpcy5nZXRNYXhab29tKCkpLFxuICAgICAgICAgICAgdGhpcy5nZXRNaW5ab29tKCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5SZWN0fSBib3VuZHNcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGltbWVkaWF0ZWx5XG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5SZWN0fSBjb25zdHJhaW5lZCBib3VuZHMuXG4gICAgICovXG4gICAgX2FwcGx5Qm91bmRhcnlDb25zdHJhaW50czogZnVuY3Rpb24oYm91bmRzLCBpbW1lZGlhdGVseSkge1xuICAgICAgICB2YXIgbmV3Qm91bmRzID0gbmV3ICQuUmVjdChcbiAgICAgICAgICAgICAgICBib3VuZHMueCxcbiAgICAgICAgICAgICAgICBib3VuZHMueSxcbiAgICAgICAgICAgICAgICBib3VuZHMud2lkdGgsXG4gICAgICAgICAgICAgICAgYm91bmRzLmhlaWdodCk7XG5cbiAgICAgICAgaWYgKHRoaXMud3JhcEhvcml6b250YWwpIHtcbiAgICAgICAgICAgIC8vZG8gbm90aGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGhvcml6b250YWxUaHJlc2hvbGQgPSB0aGlzLnZpc2liaWxpdHlSYXRpbyAqIG5ld0JvdW5kcy53aWR0aDtcbiAgICAgICAgICAgIHZhciBib3VuZHNSaWdodCA9IG5ld0JvdW5kcy54ICsgbmV3Qm91bmRzLndpZHRoO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnRSaWdodCA9IHRoaXMuX2NvbnRlbnRCb3VuZHNOb1JvdGF0ZS54ICsgdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLndpZHRoO1xuICAgICAgICAgICAgdmFyIGxlZnREeCA9IHRoaXMuX2NvbnRlbnRCb3VuZHNOb1JvdGF0ZS54IC0gYm91bmRzUmlnaHQgKyBob3Jpem9udGFsVGhyZXNob2xkO1xuICAgICAgICAgICAgdmFyIHJpZ2h0RHggPSBjb250ZW50UmlnaHQgLSBuZXdCb3VuZHMueCAtIGhvcml6b250YWxUaHJlc2hvbGQ7XG5cbiAgICAgICAgICAgIGlmIChob3Jpem9udGFsVGhyZXNob2xkID4gdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm91bmRzLnggKz0gKGxlZnREeCArIHJpZ2h0RHgpIC8gMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHREeCA8IDApIHtcbiAgICAgICAgICAgICAgICBuZXdCb3VuZHMueCArPSByaWdodER4O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsZWZ0RHggPiAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm91bmRzLnggKz0gbGVmdER4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud3JhcFZlcnRpY2FsKSB7XG4gICAgICAgICAgICAvL2RvIG5vdGhpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciB2ZXJ0aWNhbFRocmVzaG9sZCAgID0gdGhpcy52aXNpYmlsaXR5UmF0aW8gKiBuZXdCb3VuZHMuaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIGJvdW5kc0JvdHRvbSA9IG5ld0JvdW5kcy55ICsgbmV3Qm91bmRzLmhlaWdodDtcbiAgICAgICAgICAgIHZhciBjb250ZW50Qm90dG9tID0gdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLnkgKyB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUuaGVpZ2h0O1xuICAgICAgICAgICAgdmFyIHRvcER5ID0gdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLnkgLSBib3VuZHNCb3R0b20gKyB2ZXJ0aWNhbFRocmVzaG9sZDtcbiAgICAgICAgICAgIHZhciBib3R0b21EeSA9IGNvbnRlbnRCb3R0b20gLSBuZXdCb3VuZHMueSAtIHZlcnRpY2FsVGhyZXNob2xkO1xuXG4gICAgICAgICAgICBpZiAodmVydGljYWxUaHJlc2hvbGQgPiB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgbmV3Qm91bmRzLnkgKz0gKHRvcER5ICsgYm90dG9tRHkpIC8gMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYm90dG9tRHkgPCAwKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm91bmRzLnkgKz0gYm90dG9tRHk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRvcER5ID4gMCkge1xuICAgICAgICAgICAgICAgIG5ld0JvdW5kcy55ICs9IHRvcER5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSB2aWV3cG9ydCBjb25zdHJhaW50cyBhcmUgYXBwbGllZCAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdwb3J0I2FwcGx5Q29uc3RyYWludHN9KS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXZlbnQgY29uc3RyYWluXG4gICAgICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoaXMgZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMudmlld2VyLnJhaXNlRXZlbnQoICdjb25zdHJhaW4nLCB7XG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlbHk6IGltbWVkaWF0ZWx5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdCb3VuZHM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEVuZm9yY2VzIHRoZSBtaW5ab29tLCBtYXhab29tIGFuZCB2aXNpYmlsaXR5UmF0aW8gY29uc3RyYWludHMgYnlcbiAgICAgKiB6b29taW5nIGFuZCBwYW5uaW5nIHRvIHRoZSBjbG9zZXN0IGFjY2VwdGFibGUgem9vbSBhbmQgbG9jYXRpb24uXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbaW1tZWRpYXRlbHk9ZmFsc2VdXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpjb25zdHJhaW5cbiAgICAgKi9cbiAgICBhcHBseUNvbnN0cmFpbnRzOiBmdW5jdGlvbihpbW1lZGlhdGVseSkge1xuICAgICAgICB2YXIgYWN0dWFsWm9vbSA9IHRoaXMuZ2V0Wm9vbSgpO1xuICAgICAgICB2YXIgY29uc3RyYWluZWRab29tID0gdGhpcy5fYXBwbHlab29tQ29uc3RyYWludHMoYWN0dWFsWm9vbSk7XG5cbiAgICAgICAgaWYgKGFjdHVhbFpvb20gIT09IGNvbnN0cmFpbmVkWm9vbSkge1xuICAgICAgICAgICAgdGhpcy56b29tVG8oY29uc3RyYWluZWRab29tLCB0aGlzLnpvb21Qb2ludCwgaW1tZWRpYXRlbHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGJvdW5kcyA9IHRoaXMuZ2V0Qm91bmRzTm9Sb3RhdGUoKTtcbiAgICAgICAgdmFyIGNvbnN0cmFpbmVkQm91bmRzID0gdGhpcy5fYXBwbHlCb3VuZGFyeUNvbnN0cmFpbnRzKFxuICAgICAgICAgICAgYm91bmRzLCBpbW1lZGlhdGVseSk7XG5cbiAgICAgICAgaWYgKGJvdW5kcy54ICE9PSBjb25zdHJhaW5lZEJvdW5kcy54IHx8XG4gICAgICAgICAgICBib3VuZHMueSAhPT0gY29uc3RyYWluZWRCb3VuZHMueSB8fFxuICAgICAgICAgICAgaW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgIHRoaXMuZml0Qm91bmRzKFxuICAgICAgICAgICAgICAgIGNvbnN0cmFpbmVkQm91bmRzLnJvdGF0ZSgtdGhpcy5nZXRSb3RhdGlvbigpKSxcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVseSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjYXBwbHlDb25zdHJhaW50c31cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtpbW1lZGlhdGVseT1mYWxzZV1cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdwb3J0fSBDaGFpbmFibGUuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50OmNvbnN0cmFpblxuICAgICAqL1xuICAgIGVuc3VyZVZpc2libGU6IGZ1bmN0aW9uKGltbWVkaWF0ZWx5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5Q29uc3RyYWludHMoaW1tZWRpYXRlbHkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5SZWN0fSBib3VuZHNcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAoaW1tZWRpYXRlbHk9ZmFsc2UsIGNvbnN0cmFpbnRzPWZhbHNlKVxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IENoYWluYWJsZS5cbiAgICAgKi9cbiAgICBfZml0Qm91bmRzOiBmdW5jdGlvbihib3VuZHMsIG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIHZhciBpbW1lZGlhdGVseSA9IG9wdGlvbnMuaW1tZWRpYXRlbHkgfHwgZmFsc2U7XG4gICAgICAgIHZhciBjb25zdHJhaW50cyA9IG9wdGlvbnMuY29uc3RyYWludHMgfHwgZmFsc2U7XG5cbiAgICAgICAgdmFyIGFzcGVjdCA9IHRoaXMuZ2V0QXNwZWN0UmF0aW8oKTtcbiAgICAgICAgdmFyIGNlbnRlciA9IGJvdW5kcy5nZXRDZW50ZXIoKTtcblxuICAgICAgICAvLyBDb21wdXRlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYm91bmRpbmcgYm94LlxuICAgICAgICB2YXIgbmV3Qm91bmRzID0gbmV3ICQuUmVjdChcbiAgICAgICAgICAgIGJvdW5kcy54LFxuICAgICAgICAgICAgYm91bmRzLnksXG4gICAgICAgICAgICBib3VuZHMud2lkdGgsXG4gICAgICAgICAgICBib3VuZHMuaGVpZ2h0LFxuICAgICAgICAgICAgYm91bmRzLmRlZ3JlZXMgKyB0aGlzLmdldFJvdGF0aW9uKCkpXG4gICAgICAgICAgICAuZ2V0Qm91bmRpbmdCb3goKTtcblxuICAgICAgICBpZiAobmV3Qm91bmRzLmdldEFzcGVjdFJhdGlvKCkgPj0gYXNwZWN0KSB7XG4gICAgICAgICAgICBuZXdCb3VuZHMuaGVpZ2h0ID0gbmV3Qm91bmRzLndpZHRoIC8gYXNwZWN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3Qm91bmRzLndpZHRoID0gbmV3Qm91bmRzLmhlaWdodCAqIGFzcGVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbXB1dGUgeCBhbmQgeSBmcm9tIHdpZHRoLCBoZWlnaHQgYW5kIGNlbnRlciBwb3NpdGlvblxuICAgICAgICBuZXdCb3VuZHMueCA9IGNlbnRlci54IC0gbmV3Qm91bmRzLndpZHRoIC8gMjtcbiAgICAgICAgbmV3Qm91bmRzLnkgPSBjZW50ZXIueSAtIG5ld0JvdW5kcy5oZWlnaHQgLyAyO1xuICAgICAgICB2YXIgbmV3Wm9vbSA9IDEuMCAvIG5ld0JvdW5kcy53aWR0aDtcblxuICAgICAgICBpZiAoY29uc3RyYWludHMpIHtcbiAgICAgICAgICAgIHZhciBuZXdCb3VuZHNBc3BlY3RSYXRpbyA9IG5ld0JvdW5kcy5nZXRBc3BlY3RSYXRpbygpO1xuICAgICAgICAgICAgdmFyIG5ld0NvbnN0cmFpbmVkWm9vbSA9IHRoaXMuX2FwcGx5Wm9vbUNvbnN0cmFpbnRzKG5ld1pvb20pO1xuXG4gICAgICAgICAgICBpZiAobmV3Wm9vbSAhPT0gbmV3Q29uc3RyYWluZWRab29tKSB7XG4gICAgICAgICAgICAgICAgbmV3Wm9vbSA9IG5ld0NvbnN0cmFpbmVkWm9vbTtcbiAgICAgICAgICAgICAgICBuZXdCb3VuZHMud2lkdGggPSAxLjAgLyBuZXdab29tO1xuICAgICAgICAgICAgICAgIG5ld0JvdW5kcy54ID0gY2VudGVyLnggLSBuZXdCb3VuZHMud2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIG5ld0JvdW5kcy5oZWlnaHQgPSBuZXdCb3VuZHMud2lkdGggLyBuZXdCb3VuZHNBc3BlY3RSYXRpbztcbiAgICAgICAgICAgICAgICBuZXdCb3VuZHMueSA9IGNlbnRlci55IC0gbmV3Qm91bmRzLmhlaWdodCAvIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld0JvdW5kcyA9IHRoaXMuX2FwcGx5Qm91bmRhcnlDb25zdHJhaW50cyhuZXdCb3VuZHMsIGltbWVkaWF0ZWx5KTtcbiAgICAgICAgICAgIGNlbnRlciA9IG5ld0JvdW5kcy5nZXRDZW50ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbW1lZGlhdGVseSkge1xuICAgICAgICAgICAgdGhpcy5wYW5UbyhjZW50ZXIsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuem9vbVRvKG5ld1pvb20sIG51bGwsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYW5Ubyh0aGlzLmdldENlbnRlcih0cnVlKSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuem9vbVRvKHRoaXMuZ2V0Wm9vbSh0cnVlKSwgbnVsbCwgdHJ1ZSk7XG5cbiAgICAgICAgdmFyIG9sZEJvdW5kcyA9IHRoaXMuZ2V0Qm91bmRzKCk7XG4gICAgICAgIHZhciBvbGRab29tICAgPSB0aGlzLmdldFpvb20oKTtcblxuICAgICAgICBpZiAob2xkWm9vbSA9PT0gMCB8fCBNYXRoLmFicyhuZXdab29tIC8gb2xkWm9vbSAtIDEpIDwgMC4wMDAwMDAwMSkge1xuICAgICAgICAgICAgdGhpcy56b29tVG8obmV3Wm9vbSwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5UbyhjZW50ZXIsIGltbWVkaWF0ZWx5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0JvdW5kcyA9IG5ld0JvdW5kcy5yb3RhdGUoLXRoaXMuZ2V0Um90YXRpb24oKSk7XG4gICAgICAgIHZhciByZWZlcmVuY2VQb2ludCA9IG5ld0JvdW5kcy5nZXRUb3BMZWZ0KCkudGltZXMobmV3Wm9vbSlcbiAgICAgICAgICAgIC5taW51cyhvbGRCb3VuZHMuZ2V0VG9wTGVmdCgpLnRpbWVzKG9sZFpvb20pKVxuICAgICAgICAgICAgLmRpdmlkZShuZXdab29tIC0gb2xkWm9vbSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbVRvKG5ld1pvb20sIHJlZmVyZW5jZVBvaW50LCBpbW1lZGlhdGVseSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1ha2VzIHRoZSB2aWV3cG9ydCB6b29tIGFuZCBwYW4gc28gdGhhdCB0aGUgc3BlY2lmaWVkIGJvdW5kcyB0YWtlXG4gICAgICogYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZSBpbiB0aGUgdmlld3BvcnQuXG4gICAgICogTm90ZTogdGhpcyBtZXRob2QgaWdub3JlcyB0aGUgY29uc3RyYWludHMgKG1pblpvb20sIG1heFpvb20gYW5kXG4gICAgICogdmlzaWJpbGl0eVJhdGlvKS5cbiAgICAgKiBVc2Uge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjZml0Qm91bmRzV2l0aENvbnN0cmFpbnRzfSB0byBlbmZvcmNlXG4gICAgICogdGhlbS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gYm91bmRzXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbaW1tZWRpYXRlbHk9ZmFsc2VdXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqL1xuICAgIGZpdEJvdW5kczogZnVuY3Rpb24oYm91bmRzLCBpbW1lZGlhdGVseSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZml0Qm91bmRzKGJvdW5kcywge1xuICAgICAgICAgICAgaW1tZWRpYXRlbHk6IGltbWVkaWF0ZWx5LFxuICAgICAgICAgICAgY29uc3RyYWludHM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyB0aGUgdmlld3BvcnQgem9vbSBhbmQgcGFuIHNvIHRoYXQgdGhlIHNwZWNpZmllZCBib3VuZHMgdGFrZVxuICAgICAqIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUgaW4gdGhlIHZpZXdwb3J0IHdoaWxlIGVuZm9yY2luZyB0aGUgY29uc3RyYWludHNcbiAgICAgKiAobWluWm9vbSwgbWF4Wm9vbSBhbmQgdmlzaWJpbGl0eVJhdGlvKS5cbiAgICAgKiBOb3RlOiBiZWNhdXNlIHRoaXMgbWV0aG9kIGVuZm9yY2VzIHRoZSBjb25zdHJhaW50cywgcGFydCBvZiB0aGVcbiAgICAgKiBwcm92aWRlZCBib3VuZHMgbWF5IGVuZCB1cCBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC5cbiAgICAgKiBVc2Uge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjZml0Qm91bmRzfSB0byBpZ25vcmUgdGhlbS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gYm91bmRzXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbaW1tZWRpYXRlbHk9ZmFsc2VdXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqL1xuICAgIGZpdEJvdW5kc1dpdGhDb25zdHJhaW50czogZnVuY3Rpb24oYm91bmRzLCBpbW1lZGlhdGVseSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZml0Qm91bmRzKGJvdW5kcywge1xuICAgICAgICAgICAgaW1tZWRpYXRlbHk6IGltbWVkaWF0ZWx5LFxuICAgICAgICAgICAgY29uc3RyYWludHM6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFpvb21zIHNvIHRoZSBpbWFnZSBqdXN0IGZpbGxzIHRoZSB2aWV3ZXIgdmVydGljYWxseS5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGltbWVkaWF0ZWx5XG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqL1xuICAgIGZpdFZlcnRpY2FsbHk6IGZ1bmN0aW9uKGltbWVkaWF0ZWx5KSB7XG4gICAgICAgIHZhciBib3ggPSBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgdGhpcy5fY29udGVudEJvdW5kcy54ICsgKHRoaXMuX2NvbnRlbnRCb3VuZHMud2lkdGggLyAyKSxcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRCb3VuZHMueSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50Qm91bmRzLmhlaWdodCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpdEJvdW5kcyhib3gsIGltbWVkaWF0ZWx5KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogWm9vbXMgc28gdGhlIGltYWdlIGp1c3QgZmlsbHMgdGhlIHZpZXdlciBob3Jpem9udGFsbHkuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBpbW1lZGlhdGVseVxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IENoYWluYWJsZS5cbiAgICAgKi9cbiAgICBmaXRIb3Jpem9udGFsbHk6IGZ1bmN0aW9uKGltbWVkaWF0ZWx5KSB7XG4gICAgICAgIHZhciBib3ggPSBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgdGhpcy5fY29udGVudEJvdW5kcy54LFxuICAgICAgICAgICAgdGhpcy5fY29udGVudEJvdW5kcy55ICsgKHRoaXMuX2NvbnRlbnRCb3VuZHMuaGVpZ2h0IC8gMiksXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50Qm91bmRzLndpZHRoLFxuICAgICAgICAgICAgMCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpdEJvdW5kcyhib3gsIGltbWVkaWF0ZWx5KTtcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGRlbHRhXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBpbW1lZGlhdGVseVxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6cGFuXG4gICAgICovXG4gICAgcGFuQnk6IGZ1bmN0aW9uKCBkZWx0YSwgaW1tZWRpYXRlbHkgKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSBuZXcgJC5Qb2ludChcbiAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWC50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICB0aGlzLmNlbnRlclNwcmluZ1kudGFyZ2V0LnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhblRvKCBjZW50ZXIucGx1cyggZGVsdGEgKSwgaW1tZWRpYXRlbHkgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBjZW50ZXJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGltbWVkaWF0ZWx5XG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLlZpZXdlci5ldmVudDpwYW5cbiAgICAgKi9cbiAgICBwYW5UbzogZnVuY3Rpb24oIGNlbnRlciwgaW1tZWRpYXRlbHkgKSB7XG4gICAgICAgIGlmICggaW1tZWRpYXRlbHkgKSB7XG4gICAgICAgICAgICB0aGlzLmNlbnRlclNwcmluZ1gucmVzZXRUbyggY2VudGVyLnggKTtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWS5yZXNldFRvKCBjZW50ZXIueSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jZW50ZXJTcHJpbmdYLnNwcmluZ1RvKCBjZW50ZXIueCApO1xuICAgICAgICAgICAgdGhpcy5jZW50ZXJTcHJpbmdZLnNwcmluZ1RvKCBjZW50ZXIueSApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIHRoaXMudmlld2VyICl7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSB2aWV3cG9ydCBpcyBwYW5uZWQgKHNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3cG9ydCNwYW5CeX0gYW5kIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdwb3J0I3BhblRvfSkuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV2ZW50IHBhblxuICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGlzIGV2ZW50LlxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlBvaW50fSBjZW50ZXJcbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy52aWV3ZXIucmFpc2VFdmVudCggJ3BhbicsIHtcbiAgICAgICAgICAgICAgICBjZW50ZXI6IGNlbnRlcixcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVseTogaW1tZWRpYXRlbHlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uVmlld3BvcnR9IENoYWluYWJsZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5WaWV3ZXIuZXZlbnQ6em9vbVxuICAgICAqL1xuICAgIHpvb21CeTogZnVuY3Rpb24oZmFjdG9yLCByZWZQb2ludCwgaW1tZWRpYXRlbHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbVRvKFxuICAgICAgICAgICAgdGhpcy56b29tU3ByaW5nLnRhcmdldC52YWx1ZSAqIGZhY3RvciwgcmVmUG9pbnQsIGltbWVkaWF0ZWx5KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogWm9vbXMgdG8gdGhlIHNwZWNpZmllZCB6b29tIGxldmVsXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHpvb20gVGhlIHpvb20gbGV2ZWwgdG8gem9vbSB0by5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IFtyZWZQb2ludF0gVGhlIHBvaW50IHdoaWNoIHdpbGwgc3RheSBhdFxuICAgICAqIHRoZSBzYW1lIHNjcmVlbiBsb2NhdGlvbi4gRGVmYXVsdHMgdG8gdGhlIHZpZXdwb3J0IGNlbnRlci5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtpbW1lZGlhdGVseT1mYWxzZV1cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdwb3J0fSBDaGFpbmFibGUuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50Onpvb21cbiAgICAgKi9cbiAgICB6b29tVG86IGZ1bmN0aW9uKCB6b29tLCByZWZQb2ludCwgaW1tZWRpYXRlbHkgKSB7XG5cbiAgICAgICAgdGhpcy56b29tUG9pbnQgPSByZWZQb2ludCBpbnN0YW5jZW9mICQuUG9pbnQgJiZcbiAgICAgICAgICAgICFpc05hTihyZWZQb2ludC54KSAmJlxuICAgICAgICAgICAgIWlzTmFOKHJlZlBvaW50LnkpID9cbiAgICAgICAgICAgIHJlZlBvaW50IDpcbiAgICAgICAgICAgIG51bGw7XG5cbiAgICAgICAgaWYgKCBpbW1lZGlhdGVseSApIHtcbiAgICAgICAgICAgIHRoaXMuem9vbVNwcmluZy5yZXNldFRvKCB6b29tICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnpvb21TcHJpbmcuc3ByaW5nVG8oIHpvb20gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCB0aGlzLnZpZXdlciApe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgdmlld3BvcnQgem9vbSBsZXZlbCBjaGFuZ2VzIChzZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjem9vbUJ5fSBhbmQge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld3BvcnQjem9vbVRvfSkuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV2ZW50IHpvb21cbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB6b29tXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uUG9pbnR9IHJlZlBvaW50XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge0Jvb2xlYW59IGltbWVkaWF0ZWx5XG4gICAgICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMudmlld2VyLnJhaXNlRXZlbnQoICd6b29tJywge1xuICAgICAgICAgICAgICAgIHpvb206IHpvb20sXG4gICAgICAgICAgICAgICAgcmVmUG9pbnQ6IHJlZlBvaW50LFxuICAgICAgICAgICAgICAgIGltbWVkaWF0ZWx5OiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUm90YXRlcyB0aGlzIHZpZXdwb3J0IHRvIHRoZSBhbmdsZSBzcGVjaWZpZWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5WaWV3cG9ydH0gQ2hhaW5hYmxlLlxuICAgICAqL1xuICAgIHNldFJvdGF0aW9uOiBmdW5jdGlvbihkZWdyZWVzKSB7XG4gICAgICAgIGlmICghdGhpcy52aWV3ZXIgfHwgIXRoaXMudmlld2VyLmRyYXdlci5jYW5Sb3RhdGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBkZWdyZWVzID0gZGVncmVlcyAlIDM2MDtcbiAgICAgICAgaWYgKGRlZ3JlZXMgPCAwKSB7XG4gICAgICAgICAgICBkZWdyZWVzICs9IDM2MDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlZ3JlZXMgPSBkZWdyZWVzO1xuICAgICAgICB0aGlzLl9zZXRDb250ZW50Qm91bmRzKFxuICAgICAgICAgICAgdGhpcy52aWV3ZXIud29ybGQuZ2V0SG9tZUJvdW5kcygpLFxuICAgICAgICAgICAgdGhpcy52aWV3ZXIud29ybGQuZ2V0Q29udGVudEZhY3RvcigpKTtcbiAgICAgICAgdGhpcy52aWV3ZXIuZm9yY2VSZWRyYXcoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gcm90YXRpb24gaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV2ZW50IHJvdGF0ZVxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBkZWdyZWVzIC0gVGhlIG51bWJlciBvZiBkZWdyZWVzIHRoZSByb3RhdGlvbiB3YXMgc2V0IHRvLlxuICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnZpZXdlci5yYWlzZUV2ZW50KCdyb3RhdGUnLCB7XCJkZWdyZWVzXCI6IGRlZ3JlZXN9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGN1cnJlbnQgcm90YXRpb24gaW4gZGVncmVlcy5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBjdXJyZW50IHJvdGF0aW9uIGluIGRlZ3JlZXMuXG4gICAgICovXG4gICAgZ2V0Um90YXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWdyZWVzO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlZpZXdwb3J0fSBDaGFpbmFibGUuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVmlld2VyLmV2ZW50OnJlc2l6ZVxuICAgICAqL1xuICAgIHJlc2l6ZTogZnVuY3Rpb24oIG5ld0NvbnRhaW5lclNpemUsIG1haW50YWluICkge1xuICAgICAgICB2YXIgb2xkQm91bmRzID0gdGhpcy5nZXRCb3VuZHNOb1JvdGF0ZSgpLFxuICAgICAgICAgICAgbmV3Qm91bmRzID0gb2xkQm91bmRzLFxuICAgICAgICAgICAgd2lkdGhEZWx0YUZhY3RvcjtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lclNpemUueCA9IG5ld0NvbnRhaW5lclNpemUueDtcbiAgICAgICAgdGhpcy5jb250YWluZXJTaXplLnkgPSBuZXdDb250YWluZXJTaXplLnk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQ29udGFpbmVySW5uZXJTaXplKCk7XG5cbiAgICAgICAgaWYgKCBtYWludGFpbiApIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHdpZHRoRGVsdGFGYWN0b3Igd2lsbCBhbHdheXMgYmUgMTsgcHJvYmFibHkgbm90IHdoYXQncyBpbnRlbmRlZFxuICAgICAgICAgICAgd2lkdGhEZWx0YUZhY3RvciA9IG5ld0NvbnRhaW5lclNpemUueCAvIHRoaXMuY29udGFpbmVyU2l6ZS54O1xuICAgICAgICAgICAgbmV3Qm91bmRzLndpZHRoICA9IG9sZEJvdW5kcy53aWR0aCAqIHdpZHRoRGVsdGFGYWN0b3I7XG4gICAgICAgICAgICBuZXdCb3VuZHMuaGVpZ2h0ID0gbmV3Qm91bmRzLndpZHRoIC8gdGhpcy5nZXRBc3BlY3RSYXRpbygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIHRoaXMudmlld2VyICl7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSB2aWV3ZXIgaXMgcmVzaXplZCAoc2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdwb3J0I3Jlc2l6ZX0pLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBldmVudCByZXNpemVcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5WaWV3ZXJ9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFZpZXdlciB3aGljaCByYWlzZWQgdGhpcyBldmVudC5cbiAgICAgICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gbmV3Q29udGFpbmVyU2l6ZVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtCb29sZWFufSBtYWludGFpblxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnZpZXdlci5yYWlzZUV2ZW50KCAncmVzaXplJywge1xuICAgICAgICAgICAgICAgIG5ld0NvbnRhaW5lclNpemU6IG5ld0NvbnRhaW5lclNpemUsXG4gICAgICAgICAgICAgICAgbWFpbnRhaW46IG1haW50YWluXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZpdEJvdW5kcyggbmV3Qm91bmRzLCB0cnVlICk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfdXBkYXRlQ29udGFpbmVySW5uZXJTaXplOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fY29udGFpbmVySW5uZXJTaXplID0gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICBNYXRoLm1heCgxLCB0aGlzLmNvbnRhaW5lclNpemUueCAtICh0aGlzLl9tYXJnaW5zLmxlZnQgKyB0aGlzLl9tYXJnaW5zLnJpZ2h0KSksXG4gICAgICAgICAgICBNYXRoLm1heCgxLCB0aGlzLmNvbnRhaW5lclNpemUueSAtICh0aGlzLl9tYXJnaW5zLnRvcCArIHRoaXMuX21hcmdpbnMuYm90dG9tKSlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSB6b29tIGFuZCBjZW50ZXIgKFggYW5kIFkpIHNwcmluZ3MuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWYgYW55IGNoYW5nZSBoYXMgYmVlbiBtYWRlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICBpZiAodGhpcy56b29tUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBvbGRab29tUGl4ZWwgPSB0aGlzLnBpeGVsRnJvbVBvaW50KHRoaXMuem9vbVBvaW50LCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuem9vbVNwcmluZy51cGRhdGUoKTtcbiAgICAgICAgICAgIHZhciBuZXdab29tUGl4ZWwgPSB0aGlzLnBpeGVsRnJvbVBvaW50KHRoaXMuem9vbVBvaW50LCB0cnVlKTtcblxuICAgICAgICAgICAgdmFyIGRlbHRhWm9vbVBpeGVscyA9IG5ld1pvb21QaXhlbC5taW51cyhvbGRab29tUGl4ZWwpO1xuICAgICAgICAgICAgdmFyIGRlbHRhWm9vbVBvaW50cyA9IHRoaXMuZGVsdGFQb2ludHNGcm9tUGl4ZWxzKFxuICAgICAgICAgICAgICAgIGRlbHRhWm9vbVBpeGVscywgdHJ1ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWC5zaGlmdEJ5KGRlbHRhWm9vbVBvaW50cy54KTtcbiAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWS5zaGlmdEJ5KGRlbHRhWm9vbVBvaW50cy55KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuem9vbVNwcmluZy5pc0F0VGFyZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuem9vbVBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuem9vbVNwcmluZy51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWC51cGRhdGUoKTtcbiAgICAgICAgdGhpcy5jZW50ZXJTcHJpbmdZLnVwZGF0ZSgpO1xuXG4gICAgICAgIHZhciBjaGFuZ2VkID0gdGhpcy5jZW50ZXJTcHJpbmdYLmN1cnJlbnQudmFsdWUgIT09IHRoaXMuX29sZENlbnRlclggfHxcbiAgICAgICAgICAgIHRoaXMuY2VudGVyU3ByaW5nWS5jdXJyZW50LnZhbHVlICE9PSB0aGlzLl9vbGRDZW50ZXJZIHx8XG4gICAgICAgICAgICB0aGlzLnpvb21TcHJpbmcuY3VycmVudC52YWx1ZSAhPT0gdGhpcy5fb2xkWm9vbTtcblxuICAgICAgICB0aGlzLl9vbGRDZW50ZXJYID0gdGhpcy5jZW50ZXJTcHJpbmdYLmN1cnJlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuX29sZENlbnRlclkgPSB0aGlzLmNlbnRlclNwcmluZ1kuY3VycmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5fb2xkWm9vbSAgICA9IHRoaXMuem9vbVNwcmluZy5jdXJyZW50LnZhbHVlO1xuXG4gICAgICAgIHJldHVybiBjaGFuZ2VkO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgZGVsdGEgKHRyYW5zbGF0aW9uIHZlY3RvcikgZnJvbSB2aWV3cG9ydCBjb29yZGluYXRlcyB0byBwaXhlbHNcbiAgICAgKiBjb29yZGluYXRlcy4gVGhpcyBtZXRob2QgZG9lcyBub3QgdGFrZSByb3RhdGlvbiBpbnRvIGFjY291bnQuXG4gICAgICogQ29uc2lkZXIgdXNpbmcgZGVsdGFQaXhlbHNGcm9tUG9pbnRzIGlmIHlvdSBuZWVkIHRvIGFjY291bnQgZm9yIHJvdGF0aW9uLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZGVsdGFQb2ludHMgLSBUaGUgdHJhbnNsYXRpb24gdmVjdG9yIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbY3VycmVudD1mYWxzZV0gLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uO1xuICAgICAqIGRlZmF1bHRzIHRvIGZhbHNlICh0YXJnZXQgbG9jYXRpb24pLlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fVxuICAgICAqL1xuICAgIGRlbHRhUGl4ZWxzRnJvbVBvaW50c05vUm90YXRlOiBmdW5jdGlvbihkZWx0YVBvaW50cywgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gZGVsdGFQb2ludHMudGltZXMoXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXJJbm5lclNpemUueCAqIHRoaXMuZ2V0Wm9vbShjdXJyZW50KVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgZGVsdGEgKHRyYW5zbGF0aW9uIHZlY3RvcikgZnJvbSB2aWV3cG9ydCBjb29yZGluYXRlcyB0byBwaXhlbHNcbiAgICAgKiBjb29yZGluYXRlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGRlbHRhUG9pbnRzIC0gVGhlIHRyYW5zbGF0aW9uIHZlY3RvciB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjtcbiAgICAgKiBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICBkZWx0YVBpeGVsc0Zyb21Qb2ludHM6IGZ1bmN0aW9uKGRlbHRhUG9pbnRzLCBjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbHRhUGl4ZWxzRnJvbVBvaW50c05vUm90YXRlKFxuICAgICAgICAgICAgZGVsdGFQb2ludHMucm90YXRlKHRoaXMuZ2V0Um90YXRpb24oKSksXG4gICAgICAgICAgICBjdXJyZW50KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIGRlbHRhICh0cmFuc2xhdGlvbiB2ZWN0b3IpIGZyb20gcGl4ZWxzIGNvb3JkaW5hdGVzIHRvIHZpZXdwb3J0XG4gICAgICogY29vcmRpbmF0ZXMuIFRoaXMgbWV0aG9kIGRvZXMgbm90IHRha2Ugcm90YXRpb24gaW50byBhY2NvdW50LlxuICAgICAqIENvbnNpZGVyIHVzaW5nIGRlbHRhUG9pbnRzRnJvbVBpeGVscyBpZiB5b3UgbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IGRlbHRhUGl4ZWxzIC0gVGhlIHRyYW5zbGF0aW9uIHZlY3RvciB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjtcbiAgICAgKiBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICBkZWx0YVBvaW50c0Zyb21QaXhlbHNOb1JvdGF0ZTogZnVuY3Rpb24oZGVsdGFQaXhlbHMsIGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGRlbHRhUGl4ZWxzLmRpdmlkZShcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lcklubmVyU2l6ZS54ICogdGhpcy5nZXRab29tKGN1cnJlbnQpXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSBkZWx0YSAodHJhbnNsYXRpb24gdmVjdG9yKSBmcm9tIHBpeGVscyBjb29yZGluYXRlcyB0byB2aWV3cG9ydFxuICAgICAqIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gZGVsdGFQaXhlbHMgLSBUaGUgdHJhbnNsYXRpb24gdmVjdG9yIHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbY3VycmVudD1mYWxzZV0gLSBQYXNzIHRydWUgZm9yIHRoZSBjdXJyZW50IGxvY2F0aW9uO1xuICAgICAqIGRlZmF1bHRzIHRvIGZhbHNlICh0YXJnZXQgbG9jYXRpb24pLlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fVxuICAgICAqL1xuICAgIGRlbHRhUG9pbnRzRnJvbVBpeGVsczogZnVuY3Rpb24oZGVsdGFQaXhlbHMsIGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVsdGFQb2ludHNGcm9tUGl4ZWxzTm9Sb3RhdGUoZGVsdGFQaXhlbHMsIGN1cnJlbnQpXG4gICAgICAgICAgICAucm90YXRlKC10aGlzLmdldFJvdGF0aW9uKCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIHBpeGVscyBjb29yZGluYXRlcy5cbiAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCB0YWtlIHJvdGF0aW9uIGludG8gYWNjb3VudC5cbiAgICAgKiBDb25zaWRlciB1c2luZyBwaXhlbEZyb21Qb2ludCBpZiB5b3UgbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbi5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50IHRoZSB2aWV3cG9ydCBjb29yZGluYXRlc1xuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjtcbiAgICAgKiBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICBwaXhlbEZyb21Qb2ludE5vUm90YXRlOiBmdW5jdGlvbihwb2ludCwgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGl4ZWxGcm9tUG9pbnROb1JvdGF0ZShcbiAgICAgICAgICAgIHBvaW50LCB0aGlzLmdldEJvdW5kc05vUm90YXRlKGN1cnJlbnQpKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCB2aWV3cG9ydCBjb29yZGluYXRlcyB0byBwaXhlbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBvaW50IHRoZSB2aWV3cG9ydCBjb29yZGluYXRlc1xuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjtcbiAgICAgKiBkZWZhdWx0cyB0byBmYWxzZSAodGFyZ2V0IGxvY2F0aW9uKS5cbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICBwaXhlbEZyb21Qb2ludDogZnVuY3Rpb24ocG9pbnQsIGN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BpeGVsRnJvbVBvaW50KHBvaW50LCB0aGlzLmdldEJvdW5kc05vUm90YXRlKGN1cnJlbnQpKTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9waXhlbEZyb21Qb2ludE5vUm90YXRlOiBmdW5jdGlvbihwb2ludCwgYm91bmRzKSB7XG4gICAgICAgIHJldHVybiBwb2ludC5taW51cyhcbiAgICAgICAgICAgIGJvdW5kcy5nZXRUb3BMZWZ0KClcbiAgICAgICAgKS50aW1lcyhcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lcklubmVyU2l6ZS54IC8gYm91bmRzLndpZHRoXG4gICAgICAgICkucGx1cyhcbiAgICAgICAgICAgIG5ldyAkLlBvaW50KHRoaXMuX21hcmdpbnMubGVmdCwgdGhpcy5fbWFyZ2lucy50b3ApXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfcGl4ZWxGcm9tUG9pbnQ6IGZ1bmN0aW9uKHBvaW50LCBib3VuZHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BpeGVsRnJvbVBvaW50Tm9Sb3RhdGUoXG4gICAgICAgICAgICBwb2ludC5yb3RhdGUodGhpcy5nZXRSb3RhdGlvbigpLCB0aGlzLmdldENlbnRlcih0cnVlKSksXG4gICAgICAgICAgICBib3VuZHMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHRvIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHRha2Ugcm90YXRpb24gaW50byBhY2NvdW50LlxuICAgICAqIENvbnNpZGVyIHVzaW5nIHBvaW50RnJvbVBpeGVsIGlmIHlvdSBuZWVkIHRvIGFjY291bnQgZm9yIHJvdGF0aW9uLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWwgUGl4ZWwgY29vcmRpbmF0ZXNcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtjdXJyZW50PWZhbHNlXSAtIFBhc3MgdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgbG9jYXRpb247XG4gICAgICogZGVmYXVsdHMgdG8gZmFsc2UgKHRhcmdldCBsb2NhdGlvbikuXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgcG9pbnRGcm9tUGl4ZWxOb1JvdGF0ZTogZnVuY3Rpb24ocGl4ZWwsIGN1cnJlbnQpIHtcbiAgICAgICAgdmFyIGJvdW5kcyA9IHRoaXMuZ2V0Qm91bmRzTm9Sb3RhdGUoY3VycmVudCk7XG4gICAgICAgIHJldHVybiBwaXhlbC5taW51cyhcbiAgICAgICAgICAgIG5ldyAkLlBvaW50KHRoaXMuX21hcmdpbnMubGVmdCwgdGhpcy5fbWFyZ2lucy50b3ApXG4gICAgICAgICkuZGl2aWRlKFxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVySW5uZXJTaXplLnggLyBib3VuZHMud2lkdGhcbiAgICAgICAgKS5wbHVzKFxuICAgICAgICAgICAgYm91bmRzLmdldFRvcExlZnQoKVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHRvIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWwgUGl4ZWwgY29vcmRpbmF0ZXNcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtjdXJyZW50PWZhbHNlXSAtIFBhc3MgdHJ1ZSBmb3IgdGhlIGN1cnJlbnQgbG9jYXRpb247XG4gICAgICogZGVmYXVsdHMgdG8gZmFsc2UgKHRhcmdldCBsb2NhdGlvbikuXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgcG9pbnRGcm9tUGl4ZWw6IGZ1bmN0aW9uKHBpeGVsLCBjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVBpeGVsTm9Sb3RhdGUocGl4ZWwsIGN1cnJlbnQpLnJvdGF0ZShcbiAgICAgICAgICAgIC10aGlzLmdldFJvdGF0aW9uKCksXG4gICAgICAgICAgICB0aGlzLmdldENlbnRlcih0cnVlKVxuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX3ZpZXdwb3J0VG9JbWFnZURlbHRhOiBmdW5jdGlvbiggdmlld2VyWCwgdmlld2VyWSApIHtcbiAgICAgICAgdmFyIHNjYWxlID0gdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLndpZHRoO1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICB2aWV3ZXJYICogdGhpcy5fY29udGVudFNpemVOb1JvdGF0ZS54IC8gc2NhbGUsXG4gICAgICAgICAgICB2aWV3ZXJZICogdGhpcy5fY29udGVudFNpemVOb1JvdGF0ZS54IC8gc2NhbGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGVzIGZyb20gT3BlblNlYWRyYWdvbiB2aWV3ZXIgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gaW1hZ2UgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBlaXRoZXIgYnkgcGFzc2luZyBYLFkgY29vcmRpbmF0ZXMgb3IgYW5cbiAgICAgKiBPcGVuU2VhZHJhZ29uLlBvaW50XG4gICAgICogTm90ZTogbm90IGFjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2U7IHVzZSBUaWxlZEltYWdlLnZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzIGluc3RlYWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsoT3BlblNlYWRyYWdvbi5Qb2ludHxOdW1iZXIpfSB2aWV3ZXJYIGVpdGhlciBhIHBvaW50IG9yIHRoZSBYXG4gICAgICogY29vcmRpbmF0ZSBpbiB2aWV3cG9ydCBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW3ZpZXdlclldIFkgY29vcmRpbmF0ZSBpbiB2aWV3cG9ydCBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBhIHBvaW50IHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgaW4gdGhlIGltYWdlLlxuICAgICAqL1xuICAgIHZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzOiBmdW5jdGlvbih2aWV3ZXJYLCB2aWV3ZXJZKSB7XG4gICAgICAgIGlmICh2aWV3ZXJYIGluc3RhbmNlb2YgJC5Qb2ludCkge1xuICAgICAgICAgICAgLy90aGV5IHBhc3NlZCBhIHBvaW50IGluc3RlYWQgb2YgaW5kaXZpZHVhbCBjb21wb25lbnRzXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlcyh2aWV3ZXJYLngsIHZpZXdlclgueSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1Db3VudCgpO1xuICAgICAgICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgICQuY29uc29sZS5lcnJvcignW1ZpZXdwb3J0LnZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzXSBpcyBub3QgYWNjdXJhdGUgJyArXG4gICAgICAgICAgICAgICAgICAgICd3aXRoIG11bHRpLWltYWdlOyB1c2UgVGlsZWRJbWFnZS52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlcyBpbnN0ZWFkLicpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vIEl0IGlzIGJldHRlciB0byB1c2UgVGlsZWRJbWFnZS52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlc1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlIGNhbiBub3QgYmUgcmVsaWVkIG9uXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBjbGlwcGluZy5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1BdCgwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlcyh2aWV3ZXJYLCB2aWV3ZXJZLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3cG9ydFRvSW1hZ2VEZWx0YShcbiAgICAgICAgICAgIHZpZXdlclggLSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUueCxcbiAgICAgICAgICAgIHZpZXdlclkgLSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUueSk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfaW1hZ2VUb1ZpZXdwb3J0RGVsdGE6IGZ1bmN0aW9uKCBpbWFnZVgsIGltYWdlWSApIHtcbiAgICAgICAgdmFyIHNjYWxlID0gdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlLndpZHRoO1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICBpbWFnZVggLyB0aGlzLl9jb250ZW50U2l6ZU5vUm90YXRlLnggKiBzY2FsZSxcbiAgICAgICAgICAgIGltYWdlWSAvIHRoaXMuX2NvbnRlbnRTaXplTm9Sb3RhdGUueCAqIHNjYWxlKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRlcyBmcm9tIGltYWdlIGNvb3JkaW5hdGUgc3lzdGVtIHRvIE9wZW5TZWFkcmFnb24gdmlld2VyIGNvb3JkaW5hdGUgc3lzdGVtXG4gICAgICogVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBlaXRoZXIgYnkgcGFzc2luZyBYLFkgY29vcmRpbmF0ZXMgb3IgYW5cbiAgICAgKiBPcGVuU2VhZHJhZ29uLlBvaW50XG4gICAgICogTm90ZTogbm90IGFjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2U7IHVzZSBUaWxlZEltYWdlLmltYWdlVG9WaWV3cG9ydENvb3JkaW5hdGVzIGluc3RlYWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsoT3BlblNlYWRyYWdvbi5Qb2ludCB8IE51bWJlcil9IGltYWdlWCB0aGUgcG9pbnQgb3IgdGhlXG4gICAgICogWCBjb29yZGluYXRlIGluIGltYWdlIGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbaW1hZ2VZXSBZIGNvb3JkaW5hdGUgaW4gaW1hZ2UgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHJldHVybiB7T3BlblNlYWRyYWdvbi5Qb2ludH0gYSBwb2ludCByZXByZXNlbnRpbmcgdGhlIGNvb3JkaW5hdGVzIGluIHRoZSB2aWV3cG9ydC5cbiAgICAgKi9cbiAgICBpbWFnZVRvVmlld3BvcnRDb29yZGluYXRlczogZnVuY3Rpb24oaW1hZ2VYLCBpbWFnZVkpIHtcbiAgICAgICAgaWYgKGltYWdlWCBpbnN0YW5jZW9mICQuUG9pbnQpIHtcbiAgICAgICAgICAgIC8vdGhleSBwYXNzZWQgYSBwb2ludCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgY29tcG9uZW50c1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoaW1hZ2VYLngsIGltYWdlWC55KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gdGhpcy52aWV3ZXIud29ybGQuZ2V0SXRlbUNvdW50KCk7XG4gICAgICAgICAgICBpZiAoY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgJC5jb25zb2xlLmVycm9yKCdbVmlld3BvcnQuaW1hZ2VUb1ZpZXdwb3J0Q29vcmRpbmF0ZXNdIGlzIG5vdCBhY2N1cmF0ZSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3dpdGggbXVsdGktaW1hZ2U7IHVzZSBUaWxlZEltYWdlLmltYWdlVG9WaWV3cG9ydENvb3JkaW5hdGVzIGluc3RlYWQuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gSXQgaXMgYmV0dGVyIHRvIHVzZSBUaWxlZEltYWdlLnZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUgY2FuIG5vdCBiZSByZWxpZWQgb25cbiAgICAgICAgICAgICAgICAvLyB3aXRoIGNsaXBwaW5nLlxuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy52aWV3ZXIud29ybGQuZ2V0SXRlbUF0KDApO1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmltYWdlVG9WaWV3cG9ydENvb3JkaW5hdGVzKGltYWdlWCwgaW1hZ2VZLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwb2ludCA9IHRoaXMuX2ltYWdlVG9WaWV3cG9ydERlbHRhKGltYWdlWCwgaW1hZ2VZKTtcbiAgICAgICAgcG9pbnQueCArPSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUueDtcbiAgICAgICAgcG9pbnQueSArPSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUueTtcbiAgICAgICAgcmV0dXJuIHBvaW50O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGVzIGZyb20gYSByZWN0YW5nbGUgd2hpY2ggZGVzY3JpYmVzIGEgcG9ydGlvbiBvZiB0aGUgaW1hZ2UgaW5cbiAgICAgKiBwaXhlbCBjb29yZGluYXRlcyB0byBPcGVuU2VhZHJhZ29uIHZpZXdwb3J0IHJlY3RhbmdsZSBjb29yZGluYXRlcy5cbiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGVpdGhlciBieSBwYXNzaW5nIFgsWSx3aWR0aCxoZWlnaHQgb3IgYW5cbiAgICAgKiBPcGVuU2VhZHJhZ29uLlJlY3RcbiAgICAgKiBOb3RlOiBub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZTsgdXNlIFRpbGVkSW1hZ2UuaW1hZ2VUb1ZpZXdwb3J0UmVjdGFuZ2xlIGluc3RlYWQuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsoT3BlblNlYWRyYWdvbi5SZWN0IHwgTnVtYmVyKX0gaW1hZ2VYIHRoZSByZWN0YW5nbGUgb3IgdGhlIFhcbiAgICAgKiBjb29yZGluYXRlIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZSBpbiBpbWFnZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW2ltYWdlWV0gdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSByZWN0YW5nbGVcbiAgICAgKiBpbiBpbWFnZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW3BpeGVsV2lkdGhdIHRoZSB3aWR0aCBpbiBwaXhlbCBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbcGl4ZWxIZWlnaHRdIHRoZSBoZWlnaHQgaW4gcGl4ZWwgb2YgdGhlIHJlY3RhbmdsZS5cbiAgICAgKi9cbiAgICBpbWFnZVRvVmlld3BvcnRSZWN0YW5nbGU6IGZ1bmN0aW9uKGltYWdlWCwgaW1hZ2VZLCBwaXhlbFdpZHRoLCBwaXhlbEhlaWdodCkge1xuICAgICAgICB2YXIgcmVjdCA9IGltYWdlWDtcbiAgICAgICAgaWYgKCEocmVjdCBpbnN0YW5jZW9mICQuUmVjdCkpIHtcbiAgICAgICAgICAgIC8vdGhleSBwYXNzZWQgaW5kaXZpZHVhbCBjb21wb25lbnRzIGluc3RlYWQgb2YgYSByZWN0YW5nbGVcbiAgICAgICAgICAgIHJlY3QgPSBuZXcgJC5SZWN0KGltYWdlWCwgaW1hZ2VZLCBwaXhlbFdpZHRoLCBwaXhlbEhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1Db3VudCgpO1xuICAgICAgICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgICQuY29uc29sZS5lcnJvcignW1ZpZXdwb3J0LmltYWdlVG9WaWV3cG9ydFJlY3RhbmdsZV0gaXMgbm90IGFjY3VyYXRlICcgK1xuICAgICAgICAgICAgICAgICAgICAnd2l0aCBtdWx0aS1pbWFnZTsgdXNlIFRpbGVkSW1hZ2UuaW1hZ2VUb1ZpZXdwb3J0UmVjdGFuZ2xlIGluc3RlYWQuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gSXQgaXMgYmV0dGVyIHRvIHVzZSBUaWxlZEltYWdlLmltYWdlVG9WaWV3cG9ydFJlY3RhbmdsZVxuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlIGNhbiBub3QgYmUgcmVsaWVkIG9uXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBjbGlwcGluZy5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1BdCgwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbWFnZVRvVmlld3BvcnRSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgICAgIGltYWdlWCwgaW1hZ2VZLCBwaXhlbFdpZHRoLCBwaXhlbEhlaWdodCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29vcmRBID0gdGhpcy5pbWFnZVRvVmlld3BvcnRDb29yZGluYXRlcyhyZWN0LngsIHJlY3QueSk7XG4gICAgICAgIHZhciBjb29yZEIgPSB0aGlzLl9pbWFnZVRvVmlld3BvcnREZWx0YShyZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgY29vcmRBLngsXG4gICAgICAgICAgICBjb29yZEEueSxcbiAgICAgICAgICAgIGNvb3JkQi54LFxuICAgICAgICAgICAgY29vcmRCLnksXG4gICAgICAgICAgICByZWN0LmRlZ3JlZXNcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRlcyBmcm9tIGEgcmVjdGFuZ2xlIHdoaWNoIGRlc2NyaWJlcyBhIHBvcnRpb24gb2ZcbiAgICAgKiB0aGUgdmlld3BvcnQgaW4gcG9pbnQgY29vcmRpbmF0ZXMgdG8gaW1hZ2UgcmVjdGFuZ2xlIGNvb3JkaW5hdGVzLlxuICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgZWl0aGVyIGJ5IHBhc3NpbmcgWCxZLHdpZHRoLGhlaWdodCBvciBhblxuICAgICAqIE9wZW5TZWFkcmFnb24uUmVjdFxuICAgICAqIE5vdGU6IG5vdCBhY2N1cmF0ZSB3aXRoIG11bHRpLWltYWdlOyB1c2UgVGlsZWRJbWFnZS52aWV3cG9ydFRvSW1hZ2VSZWN0YW5nbGUgaW5zdGVhZC5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0geyhPcGVuU2VhZHJhZ29uLlJlY3QgfCBOdW1iZXIpfSB2aWV3ZXJYIGVpdGhlciBhIHJlY3RhbmdsZSBvclxuICAgICAqIHRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIGluIHZpZXdwb3J0XG4gICAgICogY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3ZXJZXSB0aGUgWSBjb29yZGluYXRlIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHJlY3RhbmdsZVxuICAgICAqIGluIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbcG9pbnRXaWR0aF0gdGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUgaW4gdmlld3BvcnQgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtwb2ludEhlaWdodF0gdGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlIGluIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqL1xuICAgIHZpZXdwb3J0VG9JbWFnZVJlY3RhbmdsZTogZnVuY3Rpb24odmlld2VyWCwgdmlld2VyWSwgcG9pbnRXaWR0aCwgcG9pbnRIZWlnaHQpIHtcbiAgICAgICAgdmFyIHJlY3QgPSB2aWV3ZXJYO1xuICAgICAgICBpZiAoIShyZWN0IGluc3RhbmNlb2YgJC5SZWN0KSkge1xuICAgICAgICAgICAgLy90aGV5IHBhc3NlZCBpbmRpdmlkdWFsIGNvbXBvbmVudHMgaW5zdGVhZCBvZiBhIHJlY3RhbmdsZVxuICAgICAgICAgICAgcmVjdCA9IG5ldyAkLlJlY3Qodmlld2VyWCwgdmlld2VyWSwgcG9pbnRXaWR0aCwgcG9pbnRIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlld2VyKSB7XG4gICAgICAgICAgICB2YXIgY291bnQgPSB0aGlzLnZpZXdlci53b3JsZC5nZXRJdGVtQ291bnQoKTtcbiAgICAgICAgICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkLmNvbnNvbGUuZXJyb3IoJ1tWaWV3cG9ydC52aWV3cG9ydFRvSW1hZ2VSZWN0YW5nbGVdIGlzIG5vdCBhY2N1cmF0ZSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3dpdGggbXVsdGktaW1hZ2U7IHVzZSBUaWxlZEltYWdlLnZpZXdwb3J0VG9JbWFnZVJlY3RhbmdsZSBpbnN0ZWFkLicpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIC8vIEl0IGlzIGJldHRlciB0byB1c2UgVGlsZWRJbWFnZS52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlc1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlIGNhbiBub3QgYmUgcmVsaWVkIG9uXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBjbGlwcGluZy5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1BdCgwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS52aWV3cG9ydFRvSW1hZ2VSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgICAgIHZpZXdlclgsIHZpZXdlclksIHBvaW50V2lkdGgsIHBvaW50SGVpZ2h0LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb29yZEEgPSB0aGlzLnZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzKHJlY3QueCwgcmVjdC55KTtcbiAgICAgICAgdmFyIGNvb3JkQiA9IHRoaXMuX3ZpZXdwb3J0VG9JbWFnZURlbHRhKHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcbiAgICAgICAgcmV0dXJuIG5ldyAkLlJlY3QoXG4gICAgICAgICAgICBjb29yZEEueCxcbiAgICAgICAgICAgIGNvb3JkQS55LFxuICAgICAgICAgICAgY29vcmRCLngsXG4gICAgICAgICAgICBjb29yZEIueSxcbiAgICAgICAgICAgIHJlY3QuZGVncmVlc1xuICAgICAgICApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3ZXIgZWxlbWVudCB0byBpbWFnZVxuICAgICAqIGNvb3JkaW5hdGVzLlxuICAgICAqIE5vdGU6IG5vdCBhY2N1cmF0ZSB3aXRoIG11bHRpLWltYWdlLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWxcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICB2aWV3ZXJFbGVtZW50VG9JbWFnZUNvb3JkaW5hdGVzOiBmdW5jdGlvbiggcGl4ZWwgKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHRoaXMucG9pbnRGcm9tUGl4ZWwoIHBpeGVsLCB0cnVlICk7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0VG9JbWFnZUNvb3JkaW5hdGVzKCBwb2ludCApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBpbWFnZSB0b1xuICAgICAqIHZpZXdlciBlbGVtZW50IGNvb3JkaW5hdGVzLlxuICAgICAqIE5vdGU6IG5vdCBhY2N1cmF0ZSB3aXRoIG11bHRpLWltYWdlLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWxcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICBpbWFnZVRvVmlld2VyRWxlbWVudENvb3JkaW5hdGVzOiBmdW5jdGlvbiggcGl4ZWwgKSB7XG4gICAgICAgIHZhciBwb2ludCA9IHRoaXMuaW1hZ2VUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMoIHBpeGVsICk7XG4gICAgICAgIHJldHVybiB0aGlzLnBpeGVsRnJvbVBvaW50KCBwb2ludCwgdHJ1ZSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cgdG8gaW1hZ2UgY29vcmRpbmF0ZXMuXG4gICAgICogTm90ZTogbm90IGFjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2UuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwaXhlbFxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fVxuICAgICAqL1xuICAgIHdpbmRvd1RvSW1hZ2VDb29yZGluYXRlczogZnVuY3Rpb24ocGl4ZWwpIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCh0aGlzLnZpZXdlcixcbiAgICAgICAgICAgIFwiW1ZpZXdwb3J0LndpbmRvd1RvSW1hZ2VDb29yZGluYXRlc10gdGhlIHZpZXdwb3J0IG11c3QgaGF2ZSBhIHZpZXdlci5cIik7XG4gICAgICAgIHZhciB2aWV3ZXJDb29yZGluYXRlcyA9IHBpeGVsLm1pbnVzKFxuICAgICAgICAgICAgICAgICQuZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMudmlld2VyLmVsZW1lbnQpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld2VyRWxlbWVudFRvSW1hZ2VDb29yZGluYXRlcyh2aWV3ZXJDb29yZGluYXRlcyk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgaW1hZ2UgY29vcmRpbmF0ZXMgdG8gcGl4ZWwgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHdpbmRvdy5cbiAgICAgKiBOb3RlOiBub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBpeGVsXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgaW1hZ2VUb1dpbmRvd0Nvb3JkaW5hdGVzOiBmdW5jdGlvbihwaXhlbCkge1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KHRoaXMudmlld2VyLFxuICAgICAgICAgICAgXCJbVmlld3BvcnQuaW1hZ2VUb1dpbmRvd0Nvb3JkaW5hdGVzXSB0aGUgdmlld3BvcnQgbXVzdCBoYXZlIGEgdmlld2VyLlwiKTtcbiAgICAgICAgdmFyIHZpZXdlckNvb3JkaW5hdGVzID0gdGhpcy5pbWFnZVRvVmlld2VyRWxlbWVudENvb3JkaW5hdGVzKHBpeGVsKTtcbiAgICAgICAgcmV0dXJuIHZpZXdlckNvb3JkaW5hdGVzLnBsdXMoXG4gICAgICAgICAgICAgICAgJC5nZXRFbGVtZW50UG9zaXRpb24odGhpcy52aWV3ZXIuZWxlbWVudCkpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3ZXIgZWxlbWVudCB0byB2aWV3cG9ydFxuICAgICAqIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWxcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICB2aWV3ZXJFbGVtZW50VG9WaWV3cG9ydENvb3JkaW5hdGVzOiBmdW5jdGlvbiggcGl4ZWwgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVBpeGVsKCBwaXhlbCwgdHJ1ZSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZVxuICAgICAqIHZpZXdlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcG9pbnRcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICB2aWV3cG9ydFRvVmlld2VyRWxlbWVudENvb3JkaW5hdGVzOiBmdW5jdGlvbiggcG9pbnQgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpeGVsRnJvbVBvaW50KCBwb2ludCwgdHJ1ZSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgcmVjdGFuZ2xlIGluIHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3ZXIgZWxlbWVudFxuICAgICAqIHRvIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5SZWN0fSByZWN0YW5nbGUgdGhlIHJlY3RhbmdsZSB0byBjb252ZXJ0XG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUmVjdH0gdGhlIGNvbnZlcnRlZCByZWN0YW5nbGVcbiAgICAgKi9cbiAgICB2aWV3ZXJFbGVtZW50VG9WaWV3cG9ydFJlY3RhbmdsZTogZnVuY3Rpb24ocmVjdGFuZ2xlKSB7XG4gICAgICAgIHJldHVybiAkLlJlY3QuZnJvbVN1bW1pdHMoXG4gICAgICAgICAgICB0aGlzLnBvaW50RnJvbVBpeGVsKHJlY3RhbmdsZS5nZXRUb3BMZWZ0KCksIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wb2ludEZyb21QaXhlbChyZWN0YW5nbGUuZ2V0VG9wUmlnaHQoKSwgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnBvaW50RnJvbVBpeGVsKHJlY3RhbmdsZS5nZXRCb3R0b21MZWZ0KCksIHRydWUpXG4gICAgICAgICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSByZWN0YW5nbGUgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gcGl4ZWwgY29vcmRpbmF0ZXMgcmVsYXRpdmVcbiAgICAgKiB0byB0aGUgdmlld2VyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlJlY3R9IHJlY3RhbmdsZSB0aGUgcmVjdGFuZ2xlIHRvIGNvbnZlcnRcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5SZWN0fSB0aGUgY29udmVydGVkIHJlY3RhbmdsZVxuICAgICAqL1xuICAgIHZpZXdwb3J0VG9WaWV3ZXJFbGVtZW50UmVjdGFuZ2xlOiBmdW5jdGlvbihyZWN0YW5nbGUpIHtcbiAgICAgICAgcmV0dXJuICQuUmVjdC5mcm9tU3VtbWl0cyhcbiAgICAgICAgICAgIHRoaXMucGl4ZWxGcm9tUG9pbnQocmVjdGFuZ2xlLmdldFRvcExlZnQoKSwgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnBpeGVsRnJvbVBvaW50KHJlY3RhbmdsZS5nZXRUb3BSaWdodCgpLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucGl4ZWxGcm9tUG9pbnQocmVjdGFuZ2xlLmdldEJvdHRvbUxlZnQoKSwgdHJ1ZSlcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBwaXhlbCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgd2luZG93IHRvIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWxcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICB3aW5kb3dUb1ZpZXdwb3J0Q29vcmRpbmF0ZXM6IGZ1bmN0aW9uKHBpeGVsKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQodGhpcy52aWV3ZXIsXG4gICAgICAgICAgICBcIltWaWV3cG9ydC53aW5kb3dUb1ZpZXdwb3J0Q29vcmRpbmF0ZXNdIHRoZSB2aWV3cG9ydCBtdXN0IGhhdmUgYSB2aWV3ZXIuXCIpO1xuICAgICAgICB2YXIgdmlld2VyQ29vcmRpbmF0ZXMgPSBwaXhlbC5taW51cyhcbiAgICAgICAgICAgICAgICAkLmdldEVsZW1lbnRQb3NpdGlvbih0aGlzLnZpZXdlci5lbGVtZW50KSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdlckVsZW1lbnRUb1ZpZXdwb3J0Q29vcmRpbmF0ZXModmlld2VyQ29vcmRpbmF0ZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIHBpeGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3cuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb2ludFxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fVxuICAgICAqL1xuICAgIHZpZXdwb3J0VG9XaW5kb3dDb29yZGluYXRlczogZnVuY3Rpb24ocG9pbnQpIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCh0aGlzLnZpZXdlcixcbiAgICAgICAgICAgIFwiW1ZpZXdwb3J0LnZpZXdwb3J0VG9XaW5kb3dDb29yZGluYXRlc10gdGhlIHZpZXdwb3J0IG11c3QgaGF2ZSBhIHZpZXdlci5cIik7XG4gICAgICAgIHZhciB2aWV3ZXJDb29yZGluYXRlcyA9IHRoaXMudmlld3BvcnRUb1ZpZXdlckVsZW1lbnRDb29yZGluYXRlcyhwb2ludCk7XG4gICAgICAgIHJldHVybiB2aWV3ZXJDb29yZGluYXRlcy5wbHVzKFxuICAgICAgICAgICAgICAgICQuZ2V0RWxlbWVudFBvc2l0aW9uKHRoaXMudmlld2VyLmVsZW1lbnQpKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIHZpZXdwb3J0IHpvb20gdG8gYW4gaW1hZ2Ugem9vbS5cbiAgICAgKiBJbWFnZSB6b29tOiByYXRpbyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZSB0byBkaXNwbGF5ZWQgaW1hZ2Ugc2l6ZS5cbiAgICAgKiAxIG1lYW5zIG9yaWdpbmFsIGltYWdlIHNpemUsIDAuNSBoYWxmIHNpemUuLi5cbiAgICAgKiBWaWV3cG9ydCB6b29tOiByYXRpbyBvZiB0aGUgZGlzcGxheWVkIGltYWdlJ3Mgd2lkdGggdG8gdmlld3BvcnQncyB3aWR0aC5cbiAgICAgKiAxIG1lYW5zIGlkZW50aWNhbCB3aWR0aCwgMiBtZWFucyBpbWFnZSdzIHdpZHRoIGlzIHR3aWNlIHRoZSB2aWV3cG9ydCdzIHdpZHRoLi4uXG4gICAgICogTm90ZTogbm90IGFjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2UuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHZpZXdwb3J0Wm9vbSBUaGUgdmlld3BvcnQgem9vbVxuICAgICAqIHRhcmdldCB6b29tLlxuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9IGltYWdlWm9vbSBUaGUgaW1hZ2Ugem9vbVxuICAgICAqL1xuICAgIHZpZXdwb3J0VG9JbWFnZVpvb206IGZ1bmN0aW9uKHZpZXdwb3J0Wm9vbSkge1xuICAgICAgICBpZiAodGhpcy52aWV3ZXIpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1Db3VudCgpO1xuICAgICAgICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgICQuY29uc29sZS5lcnJvcignW1ZpZXdwb3J0LnZpZXdwb3J0VG9JbWFnZVpvb21dIGlzIG5vdCAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2FjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2UuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgLy8gSXQgaXMgYmV0dGVyIHRvIHVzZSBUaWxlZEltYWdlLnZpZXdwb3J0VG9JbWFnZVpvb21cbiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMuX2NvbnRlbnRCb3VuZHNOb1JvdGF0ZSBjYW4gbm90IGJlIHJlbGllZCBvblxuICAgICAgICAgICAgICAgIC8vIHdpdGggY2xpcHBpbmcuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnZpZXdlci53b3JsZC5nZXRJdGVtQXQoMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0udmlld3BvcnRUb0ltYWdlWm9vbSh2aWV3cG9ydFpvb20pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGltYWdlV2lkdGggPSB0aGlzLl9jb250ZW50U2l6ZU5vUm90YXRlLng7XG4gICAgICAgIHZhciBjb250YWluZXJXaWR0aCA9IHRoaXMuX2NvbnRhaW5lcklubmVyU2l6ZS54O1xuICAgICAgICB2YXIgc2NhbGUgPSB0aGlzLl9jb250ZW50Qm91bmRzTm9Sb3RhdGUud2lkdGg7XG4gICAgICAgIHZhciB2aWV3cG9ydFRvSW1hZ2Vab29tUmF0aW8gPSAoY29udGFpbmVyV2lkdGggLyBpbWFnZVdpZHRoKSAqIHNjYWxlO1xuICAgICAgICByZXR1cm4gdmlld3BvcnRab29tICogdmlld3BvcnRUb0ltYWdlWm9vbVJhdGlvO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGFuIGltYWdlIHpvb20gdG8gYSB2aWV3cG9ydCB6b29tLlxuICAgICAqIEltYWdlIHpvb206IHJhdGlvIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSBzaXplIHRvIGRpc3BsYXllZCBpbWFnZSBzaXplLlxuICAgICAqIDEgbWVhbnMgb3JpZ2luYWwgaW1hZ2Ugc2l6ZSwgMC41IGhhbGYgc2l6ZS4uLlxuICAgICAqIFZpZXdwb3J0IHpvb206IHJhdGlvIG9mIHRoZSBkaXNwbGF5ZWQgaW1hZ2UncyB3aWR0aCB0byB2aWV3cG9ydCdzIHdpZHRoLlxuICAgICAqIDEgbWVhbnMgaWRlbnRpY2FsIHdpZHRoLCAyIG1lYW5zIGltYWdlJ3Mgd2lkdGggaXMgdHdpY2UgdGhlIHZpZXdwb3J0J3Mgd2lkdGguLi5cbiAgICAgKiBOb3RlOiBub3QgYWNjdXJhdGUgd2l0aCBtdWx0aS1pbWFnZS5cbiAgICAgKiBAZnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaW1hZ2Vab29tIFRoZSBpbWFnZSB6b29tXG4gICAgICogdGFyZ2V0IHpvb20uXG4gICAgICogQHJldHVybnMge051bWJlcn0gdmlld3BvcnRab29tIFRoZSB2aWV3cG9ydCB6b29tXG4gICAgICovXG4gICAgaW1hZ2VUb1ZpZXdwb3J0Wm9vbTogZnVuY3Rpb24oaW1hZ2Vab29tKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdlcikge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gdGhpcy52aWV3ZXIud29ybGQuZ2V0SXRlbUNvdW50KCk7XG4gICAgICAgICAgICBpZiAoY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgJC5jb25zb2xlLmVycm9yKCdbVmlld3BvcnQuaW1hZ2VUb1ZpZXdwb3J0Wm9vbV0gaXMgbm90IGFjY3VyYXRlICcgK1xuICAgICAgICAgICAgICAgICAgICAnd2l0aCBtdWx0aS1pbWFnZS4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBJdCBpcyBiZXR0ZXIgdG8gdXNlIFRpbGVkSW1hZ2UuaW1hZ2VUb1ZpZXdwb3J0Wm9vbVxuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcy5fY29udGVudEJvdW5kc05vUm90YXRlIGNhbiBub3QgYmUgcmVsaWVkIG9uXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBjbGlwcGluZy5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1BdCgwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pbWFnZVRvVmlld3BvcnRab29tKGltYWdlWm9vbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW1hZ2VXaWR0aCA9IHRoaXMuX2NvbnRlbnRTaXplTm9Sb3RhdGUueDtcbiAgICAgICAgdmFyIGNvbnRhaW5lcldpZHRoID0gdGhpcy5fY29udGFpbmVySW5uZXJTaXplLng7XG4gICAgICAgIHZhciBzY2FsZSA9IHRoaXMuX2NvbnRlbnRCb3VuZHNOb1JvdGF0ZS53aWR0aDtcbiAgICAgICAgdmFyIHZpZXdwb3J0VG9JbWFnZVpvb21SYXRpbyA9IChpbWFnZVdpZHRoIC8gY29udGFpbmVyV2lkdGgpIC8gc2NhbGU7XG4gICAgICAgIHJldHVybiBpbWFnZVpvb20gKiB2aWV3cG9ydFRvSW1hZ2Vab29tUmF0aW87XG4gICAgfVxufTtcblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLypcbiAqIE9wZW5TZWFkcmFnb24gLSBUaWxlZEltYWdlXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vKipcbiAqIFlvdSBzaG91bGRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBUaWxlZEltYWdlIGRpcmVjdGx5OyB1c2Uge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyI29wZW59XG4gKiBvciB7QGxpbmsgT3BlblNlYWRyYWdvbi5WaWV3ZXIjYWRkVGlsZWRJbWFnZX0gaW5zdGVhZC5cbiAqIEBjbGFzcyBUaWxlZEltYWdlXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGV4dGVuZHMgT3BlblNlYWRyYWdvbi5FdmVudFNvdXJjZVxuICogQGNsYXNzZGVzYyBIYW5kbGVzIHJlbmRlcmluZyBvZiB0aWxlcyBmb3IgYW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uVmlld2VyfS5cbiAqIEEgbmV3IGluc3RhbmNlIGlzIGNyZWF0ZWQgZm9yIGVhY2ggVGlsZVNvdXJjZSBvcGVuZWQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gZm9yIHRoaXMgVGlsZWRJbWFnZS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5UaWxlU291cmNlfSBvcHRpb25zLnNvdXJjZSAtIFRoZSBUaWxlU291cmNlIHRoYXQgZGVmaW5lcyB0aGlzIFRpbGVkSW1hZ2UuXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVmlld2VyfSBvcHRpb25zLnZpZXdlciAtIFRoZSBWaWV3ZXIgdGhhdCBvd25zIHRoaXMgVGlsZWRJbWFnZS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5UaWxlQ2FjaGV9IG9wdGlvbnMudGlsZUNhY2hlIC0gVGhlIFRpbGVDYWNoZSBmb3IgdGhpcyBUaWxlZEltYWdlIHRvIHVzZS5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5EcmF3ZXJ9IG9wdGlvbnMuZHJhd2VyIC0gVGhlIERyYXdlciBmb3IgdGhpcyBUaWxlZEltYWdlIHRvIGRyYXcgb250by5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5JbWFnZUxvYWRlcn0gb3B0aW9ucy5pbWFnZUxvYWRlciAtIFRoZSBJbWFnZUxvYWRlciBmb3IgdGhpcyBUaWxlZEltYWdlIHRvIHVzZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy54PTBdIC0gTGVmdCBwb3NpdGlvbiwgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMueT0wXSAtIFRvcCBwb3NpdGlvbiwgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMud2lkdGg9MV0gLSBXaWR0aCwgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuaGVpZ2h0XSAtIEhlaWdodCwgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdH0gW29wdGlvbnMuZml0Qm91bmRzXSBUaGUgYm91bmRzIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzXG4gKiB0byBmaXQgdGhlIGltYWdlIGludG8uIElmIHNwZWNpZmllZCwgeCwgeSwgd2lkdGggYW5kIGhlaWdodCBnZXQgaWdub3JlZC5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5QbGFjZW1lbnR9IFtvcHRpb25zLmZpdEJvdW5kc1BsYWNlbWVudD1PcGVuU2VhZHJhZ29uLlBsYWNlbWVudC5DRU5URVJdXG4gKiBIb3cgdG8gYW5jaG9yIHRoZSBpbWFnZSBpbiB0aGUgYm91bmRzIGlmIG9wdGlvbnMuZml0Qm91bmRzIGlzIHNldC5cbiAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5SZWN0fSBbb3B0aW9ucy5jbGlwXSAtIEFuIGFyZWEsIGluIGltYWdlIHBpeGVscywgdG8gY2xpcCB0b1xuICogKHBvcnRpb25zIG9mIHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoaXMgYXJlYSB3aWxsIG5vdCBiZSB2aXNpYmxlKS4gT25seSB3b3JrcyBvblxuICogYnJvd3NlcnMgdGhhdCBzdXBwb3J0IHRoZSBIVE1MNSBjYW52YXMuXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuc3ByaW5nU3RpZmZuZXNzXSAtIFNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYW5pbWF0aW9uVGltZV0gLSBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMubWluWm9vbUltYWdlUmF0aW9dIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy53cmFwSG9yaXpvbnRhbF0gLSBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLndyYXBWZXJ0aWNhbF0gLSBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmltbWVkaWF0ZVJlbmRlcl0gLSBTZWUge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuYmxlbmRUaW1lXSAtIFNlZSB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYWx3YXlzQmxlbmRdIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm1pblBpeGVsUmF0aW9dIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnNtb290aFRpbGVFZGdlc01pblpvb21dIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5pT1NEZXZpY2VdIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLm9wYWNpdHk9MV0gLSBPcGFjaXR5IHRoZSB0aWxlZCBpbWFnZSBzaG91bGQgYmUgZHJhd24gYXQuXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdGlvbnMuY29tcG9zaXRlT3BlcmF0aW9uXSAtIEhvdyB0aGUgaW1hZ2UgaXMgY29tcG9zaXRlZCBvbnRvIG90aGVyIGltYWdlczsgc2VlIGNvbXBvc2l0ZU9wZXJhdGlvbiBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfSBmb3IgcG9zc2libGUgdmFsdWVzLlxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5kZWJ1Z01vZGVdIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtTdHJpbmd8Q2FudmFzR3JhZGllbnR8Q2FudmFzUGF0dGVybnxGdW5jdGlvbn0gW29wdGlvbnMucGxhY2Vob2xkZXJGaWxsU3R5bGVdIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICogQHBhcmFtIHtTdHJpbmd8Qm9vbGVhbn0gW29wdGlvbnMuY3Jvc3NPcmlnaW5Qb2xpY3ldIC0gU2VlIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICovXG4kLlRpbGVkSW1hZ2UgPSBmdW5jdGlvbiggb3B0aW9ucyApIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgJC5jb25zb2xlLmFzc2VydCggb3B0aW9ucy50aWxlQ2FjaGUsIFwiW1RpbGVkSW1hZ2VdIG9wdGlvbnMudGlsZUNhY2hlIGlzIHJlcXVpcmVkXCIgKTtcbiAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLmRyYXdlciwgXCJbVGlsZWRJbWFnZV0gb3B0aW9ucy5kcmF3ZXIgaXMgcmVxdWlyZWRcIiApO1xuICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMudmlld2VyLCBcIltUaWxlZEltYWdlXSBvcHRpb25zLnZpZXdlciBpcyByZXF1aXJlZFwiICk7XG4gICAgJC5jb25zb2xlLmFzc2VydCggb3B0aW9ucy5pbWFnZUxvYWRlciwgXCJbVGlsZWRJbWFnZV0gb3B0aW9ucy5pbWFnZUxvYWRlciBpcyByZXF1aXJlZFwiICk7XG4gICAgJC5jb25zb2xlLmFzc2VydCggb3B0aW9ucy5zb3VyY2UsIFwiW1RpbGVkSW1hZ2VdIG9wdGlvbnMuc291cmNlIGlzIHJlcXVpcmVkXCIgKTtcbiAgICAkLmNvbnNvbGUuYXNzZXJ0KCFvcHRpb25zLmNsaXAgfHwgb3B0aW9ucy5jbGlwIGluc3RhbmNlb2YgJC5SZWN0LFxuICAgICAgICBcIltUaWxlZEltYWdlXSBvcHRpb25zLmNsaXAgbXVzdCBiZSBhbiBPcGVuU2VhZHJhZ29uLlJlY3QgaWYgcHJlc2VudFwiKTtcblxuICAgICQuRXZlbnRTb3VyY2UuY2FsbCggdGhpcyApO1xuXG4gICAgdGhpcy5fdGlsZUNhY2hlID0gb3B0aW9ucy50aWxlQ2FjaGU7XG4gICAgZGVsZXRlIG9wdGlvbnMudGlsZUNhY2hlO1xuXG4gICAgdGhpcy5fZHJhd2VyID0gb3B0aW9ucy5kcmF3ZXI7XG4gICAgZGVsZXRlIG9wdGlvbnMuZHJhd2VyO1xuXG4gICAgdGhpcy5faW1hZ2VMb2FkZXIgPSBvcHRpb25zLmltYWdlTG9hZGVyO1xuICAgIGRlbGV0ZSBvcHRpb25zLmltYWdlTG9hZGVyO1xuXG4gICAgaWYgKG9wdGlvbnMuY2xpcCBpbnN0YW5jZW9mICQuUmVjdCkge1xuICAgICAgICB0aGlzLl9jbGlwID0gb3B0aW9ucy5jbGlwLmNsb25lKCk7XG4gICAgfVxuXG4gICAgZGVsZXRlIG9wdGlvbnMuY2xpcDtcblxuICAgIHZhciB4ID0gb3B0aW9ucy54IHx8IDA7XG4gICAgZGVsZXRlIG9wdGlvbnMueDtcbiAgICB2YXIgeSA9IG9wdGlvbnMueSB8fCAwO1xuICAgIGRlbGV0ZSBvcHRpb25zLnk7XG5cbiAgICAvLyBSYXRpbyBvZiB6b29tYWJsZSBpbWFnZSBoZWlnaHQgdG8gd2lkdGguXG4gICAgdGhpcy5ub3JtSGVpZ2h0ID0gb3B0aW9ucy5zb3VyY2UuZGltZW5zaW9ucy55IC8gb3B0aW9ucy5zb3VyY2UuZGltZW5zaW9ucy54O1xuICAgIHRoaXMuY29udGVudEFzcGVjdFggPSBvcHRpb25zLnNvdXJjZS5kaW1lbnNpb25zLnggLyBvcHRpb25zLnNvdXJjZS5kaW1lbnNpb25zLnk7XG5cbiAgICB2YXIgc2NhbGUgPSAxO1xuICAgIGlmICggb3B0aW9ucy53aWR0aCApIHtcbiAgICAgICAgc2NhbGUgPSBvcHRpb25zLndpZHRoO1xuICAgICAgICBkZWxldGUgb3B0aW9ucy53aWR0aDtcblxuICAgICAgICBpZiAoIG9wdGlvbnMuaGVpZ2h0ICkge1xuICAgICAgICAgICAgJC5jb25zb2xlLmVycm9yKCBcInNwZWNpZnlpbmcgYm90aCB3aWR0aCBhbmQgaGVpZ2h0IHRvIGEgdGlsZWRJbWFnZSBpcyBub3Qgc3VwcG9ydGVkXCIgKTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLmhlaWdodDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIG9wdGlvbnMuaGVpZ2h0ICkge1xuICAgICAgICBzY2FsZSA9IG9wdGlvbnMuaGVpZ2h0IC8gdGhpcy5ub3JtSGVpZ2h0O1xuICAgICAgICBkZWxldGUgb3B0aW9ucy5oZWlnaHQ7XG4gICAgfVxuXG4gICAgdmFyIGZpdEJvdW5kcyA9IG9wdGlvbnMuZml0Qm91bmRzO1xuICAgIGRlbGV0ZSBvcHRpb25zLmZpdEJvdW5kcztcbiAgICB2YXIgZml0Qm91bmRzUGxhY2VtZW50ID0gb3B0aW9ucy5maXRCb3VuZHNQbGFjZW1lbnQgfHwgT3BlblNlYWRyYWdvbi5QbGFjZW1lbnQuQ0VOVEVSO1xuICAgIGRlbGV0ZSBvcHRpb25zLmZpdEJvdW5kc1BsYWNlbWVudDtcblxuICAgICQuZXh0ZW5kKCB0cnVlLCB0aGlzLCB7XG5cbiAgICAgICAgLy9pbnRlcm5hbCBzdGF0ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHZpZXdlcjogICAgICAgICBudWxsLFxuICAgICAgICB0aWxlc01hdHJpeDogICAge30sICAgIC8vIEEgJzNkJyBkaWN0aW9uYXJ5IFtsZXZlbF1beF1beV0gLS0+IFRpbGUuXG4gICAgICAgIGNvdmVyYWdlOiAgICAgICB7fSwgICAgLy8gQSAnM2QnIGRpY3Rpb25hcnkgW2xldmVsXVt4XVt5XSAtLT4gQm9vbGVhbi5cbiAgICAgICAgbGFzdERyYXduOiAgICAgIFtdLCAgICAvLyBBbiB1bm9yZGVyZWQgbGlzdCBvZiBUaWxlcyBkcmF3biBsYXN0IGZyYW1lLlxuICAgICAgICBsYXN0UmVzZXRUaW1lOiAgMCwgICAgIC8vIExhc3QgdGltZSBmb3Igd2hpY2ggdGhlIHRpbGVkSW1hZ2Ugd2FzIHJlc2V0LlxuICAgICAgICBfbWlkRHJhdzogICAgICAgZmFsc2UsIC8vIElzIHRoZSB0aWxlZEltYWdlIGN1cnJlbnRseSB1cGRhdGluZyB0aGUgdmlld3BvcnQ/XG4gICAgICAgIF9uZWVkc0RyYXc6ICAgICB0cnVlLCAgLy8gRG9lcyB0aGUgdGlsZWRJbWFnZSBuZWVkIHRvIHVwZGF0ZSB0aGUgdmlld3BvcnQgYWdhaW4/XG4gICAgICAgIF9oYXNPcGFxdWVUaWxlOiBmYWxzZSwgIC8vIERvIHdlIGhhdmUgZXZlbiBvbmUgZnVsbHkgb3BhcXVlIHRpbGU/XG4gICAgICAgIC8vY29uZmlndXJhYmxlIHNldHRpbmdzXG4gICAgICAgIHNwcmluZ1N0aWZmbmVzczogICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5zcHJpbmdTdGlmZm5lc3MsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6ICAgICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5hbmltYXRpb25UaW1lLFxuICAgICAgICBtaW5ab29tSW1hZ2VSYXRpbzogICAgICAkLkRFRkFVTFRfU0VUVElOR1MubWluWm9vbUltYWdlUmF0aW8sXG4gICAgICAgIHdyYXBIb3Jpem9udGFsOiAgICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy53cmFwSG9yaXpvbnRhbCxcbiAgICAgICAgd3JhcFZlcnRpY2FsOiAgICAgICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLndyYXBWZXJ0aWNhbCxcbiAgICAgICAgaW1tZWRpYXRlUmVuZGVyOiAgICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmltbWVkaWF0ZVJlbmRlcixcbiAgICAgICAgYmxlbmRUaW1lOiAgICAgICAgICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmJsZW5kVGltZSxcbiAgICAgICAgYWx3YXlzQmxlbmQ6ICAgICAgICAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmFsd2F5c0JsZW5kLFxuICAgICAgICBtaW5QaXhlbFJhdGlvOiAgICAgICAgICAkLkRFRkFVTFRfU0VUVElOR1MubWluUGl4ZWxSYXRpbyxcbiAgICAgICAgc21vb3RoVGlsZUVkZ2VzTWluWm9vbTogJC5ERUZBVUxUX1NFVFRJTkdTLnNtb290aFRpbGVFZGdlc01pblpvb20sXG4gICAgICAgIGlPU0RldmljZTogICAgICAgICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5pT1NEZXZpY2UsXG4gICAgICAgIGRlYnVnTW9kZTogICAgICAgICAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5kZWJ1Z01vZGUsXG4gICAgICAgIGNyb3NzT3JpZ2luUG9saWN5OiAgICAgICQuREVGQVVMVF9TRVRUSU5HUy5jcm9zc09yaWdpblBvbGljeSxcbiAgICAgICAgcGxhY2Vob2xkZXJGaWxsU3R5bGU6ICAgJC5ERUZBVUxUX1NFVFRJTkdTLnBsYWNlaG9sZGVyRmlsbFN0eWxlLFxuICAgICAgICBvcGFjaXR5OiAgICAgICAgICAgICAgICAkLkRFRkFVTFRfU0VUVElOR1Mub3BhY2l0eSxcbiAgICAgICAgY29tcG9zaXRlT3BlcmF0aW9uOiAgICAgJC5ERUZBVUxUX1NFVFRJTkdTLmNvbXBvc2l0ZU9wZXJhdGlvblxuXG4gICAgfSwgb3B0aW9ucyApO1xuXG4gICAgdGhpcy5feFNwcmluZyA9IG5ldyAkLlNwcmluZyh7XG4gICAgICAgIGluaXRpYWw6IHgsXG4gICAgICAgIHNwcmluZ1N0aWZmbmVzczogdGhpcy5zcHJpbmdTdGlmZm5lc3MsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6IHRoaXMuYW5pbWF0aW9uVGltZVxuICAgIH0pO1xuXG4gICAgdGhpcy5feVNwcmluZyA9IG5ldyAkLlNwcmluZyh7XG4gICAgICAgIGluaXRpYWw6IHksXG4gICAgICAgIHNwcmluZ1N0aWZmbmVzczogdGhpcy5zcHJpbmdTdGlmZm5lc3MsXG4gICAgICAgIGFuaW1hdGlvblRpbWU6IHRoaXMuYW5pbWF0aW9uVGltZVxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2NhbGVTcHJpbmcgPSBuZXcgJC5TcHJpbmcoe1xuICAgICAgICBpbml0aWFsOiBzY2FsZSxcbiAgICAgICAgc3ByaW5nU3RpZmZuZXNzOiB0aGlzLnNwcmluZ1N0aWZmbmVzcyxcbiAgICAgICAgYW5pbWF0aW9uVGltZTogdGhpcy5hbmltYXRpb25UaW1lXG4gICAgfSk7XG5cbiAgICB0aGlzLl91cGRhdGVGb3JTY2FsZSgpO1xuXG4gICAgaWYgKGZpdEJvdW5kcykge1xuICAgICAgICB0aGlzLmZpdEJvdW5kcyhmaXRCb3VuZHMsIGZpdEJvdW5kc1BsYWNlbWVudCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCBhIGNhbGxiYWNrIHRvIGdpdmUgaW1hZ2UgbWFuaXB1bGF0aW9uIGEgY2hhbmNlIHRvIGhhcHBlblxuICAgIHRoaXMuX2RyYXdpbmdIYW5kbGVyID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGp1c3QgYmVmb3JlIHRoZSB0aWxlIGlzIGRyYXduIGdpdmluZyB0aGUgYXBwbGljYXRpb24gYSBjaGFuY2UgdG8gYWx0ZXIgdGhlIGltYWdlLlxuICAgICAgICpcbiAgICAgICAqIE5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBmaXJlZCB3aGVuIHRoZSBkcmF3ZXIgaXMgdXNpbmcgYSAmbHQ7Y2FudmFzJmd0Oy5cbiAgICAgICAqXG4gICAgICAgKiBAZXZlbnQgdGlsZS1kcmF3aW5nXG4gICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5UaWxlfSB0aWxlIC0gVGhlIFRpbGUgYmVpbmcgZHJhd24uXG4gICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gdGlsZWRJbWFnZSAtIFdoaWNoIFRpbGVkSW1hZ2UgaXMgYmVpbmcgZHJhd24uXG4gICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZX0gY29udGV4dCAtIFRoZSBIVE1MIGNhbnZhcyBjb250ZXh0IGJlaW5nIGRyYXduIGludG8uXG4gICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZX0gcmVuZGVyZWQgLSBUaGUgSFRNTCBjYW52YXMgY29udGV4dCBjb250YWluaW5nIHRoZSB0aWxlIGltYWdlcnkuXG4gICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgICAgX3RoaXMudmlld2VyLnJhaXNlRXZlbnQoJ3RpbGUtZHJhd2luZycsICQuZXh0ZW5kKHtcbiAgICAgICAgICAgIHRpbGVkSW1hZ2U6IF90aGlzXG4gICAgICAgIH0sIGFyZ3MpKTtcbiAgICB9O1xufTtcblxuJC5leHRlbmQoJC5UaWxlZEltYWdlLnByb3RvdHlwZSwgJC5FdmVudFNvdXJjZS5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5UaWxlZEltYWdlLnByb3RvdHlwZSAqL3tcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gV2hldGhlciB0aGUgVGlsZWRJbWFnZSBuZWVkcyB0byBiZSBkcmF3bi5cbiAgICAgKi9cbiAgICBuZWVkc0RyYXc6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmVlZHNEcmF3O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgYWxsIHRpbGVzIGFuZCB0cmlnZ2VycyBhbiB1cGRhdGUgb24gdGhlIG5leHQgY2FsbCB0b1xuICAgICAqIHtAbGluayBPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2UjdXBkYXRlfS5cbiAgICAgKi9cbiAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX3RpbGVDYWNoZS5jbGVhclRpbGVzRm9yKHRoaXMpO1xuICAgICAgICB0aGlzLmxhc3RSZXNldFRpbWUgPSAkLm5vdygpO1xuICAgICAgICB0aGlzLl9uZWVkc0RyYXcgPSB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBUaWxlZEltYWdlJ3MgYm91bmRzLCBhbmltYXRpbmcgaWYgbmVlZGVkLlxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufSBXaGV0aGVyIHRoZSBUaWxlZEltYWdlIGFuaW1hdGVkLlxuICAgICAqL1xuICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBvbGRYID0gdGhpcy5feFNwcmluZy5jdXJyZW50LnZhbHVlO1xuICAgICAgICB2YXIgb2xkWSA9IHRoaXMuX3lTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICAgICAgdmFyIG9sZFNjYWxlID0gdGhpcy5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgICAgICB0aGlzLl94U3ByaW5nLnVwZGF0ZSgpO1xuICAgICAgICB0aGlzLl95U3ByaW5nLnVwZGF0ZSgpO1xuICAgICAgICB0aGlzLl9zY2FsZVNwcmluZy51cGRhdGUoKTtcblxuICAgICAgICBpZiAodGhpcy5feFNwcmluZy5jdXJyZW50LnZhbHVlICE9PSBvbGRYIHx8IHRoaXMuX3lTcHJpbmcuY3VycmVudC52YWx1ZSAhPT0gb2xkWSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWUgIT09IG9sZFNjYWxlKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGb3JTY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5fbmVlZHNEcmF3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBEcmF3cyB0aGUgVGlsZWRJbWFnZSB0byBpdHMgRHJhd2VyLlxuICAgICAqL1xuICAgIGRyYXc6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9taWREcmF3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fbWlkRHJhdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kgdGhlIFRpbGVkSW1hZ2UgKHVubG9hZCBjdXJyZW50IGxvYWRlZCB0aWxlcykuXG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUmVjdH0gVGhpcyBUaWxlZEltYWdlJ3MgYm91bmRzIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbjsgZmFsc2UgZm9yIHRhcmdldCBsb2NhdGlvbi5cbiAgICAgKi9cbiAgICBnZXRCb3VuZHM6IGZ1bmN0aW9uKGN1cnJlbnQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgJC5SZWN0KCB0aGlzLl94U3ByaW5nLmN1cnJlbnQudmFsdWUsIHRoaXMuX3lTcHJpbmcuY3VycmVudC52YWx1ZSxcbiAgICAgICAgICAgICAgICB0aGlzLl93b3JsZFdpZHRoQ3VycmVudCwgdGhpcy5fd29ybGRIZWlnaHRDdXJyZW50ICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3ICQuUmVjdCggdGhpcy5feFNwcmluZy50YXJnZXQudmFsdWUsIHRoaXMuX3lTcHJpbmcudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgdGhpcy5fd29ybGRXaWR0aFRhcmdldCwgdGhpcy5fd29ybGRIZWlnaHRUYXJnZXQgKTtcbiAgICB9LFxuXG4gICAgLy8gZGVwcmVjYXRlZFxuICAgIGdldFdvcmxkQm91bmRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5jb25zb2xlLmVycm9yKCdbVGlsZWRJbWFnZS5nZXRXb3JsZEJvdW5kc10gaXMgZGVwcmVjYXRlZDsgdXNlIFRpbGVkSW1hZ2UuZ2V0Qm91bmRzIGluc3RlYWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Qm91bmRzKCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYm91bmRzIG9mIHRoZSBkaXNwbGF5ZWQgcGFydCBvZiB0aGUgdGlsZWQgaW1hZ2UuXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbY3VycmVudD1mYWxzZV0gUGFzcyB0cnVlIGZvciB0aGUgY3VycmVudCBsb2NhdGlvbixcbiAgICAgKiBmYWxzZSBmb3IgdGhlIHRhcmdldCBsb2NhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7JC5SZWN0fSBUaGUgY2xpcHBlZCBib3VuZHMgaW4gdmlld3BvcnQgY29vcmRpbmF0ZXMuXG4gICAgICovXG4gICAgZ2V0Q2xpcHBlZEJvdW5kczogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICB2YXIgYm91bmRzID0gdGhpcy5nZXRCb3VuZHMoY3VycmVudCk7XG4gICAgICAgIGlmICh0aGlzLl9jbGlwKSB7XG4gICAgICAgICAgICB2YXIgcmF0aW8gPSB0aGlzLl93b3JsZFdpZHRoQ3VycmVudCAvIHRoaXMuc291cmNlLmRpbWVuc2lvbnMueDtcbiAgICAgICAgICAgIHZhciBjbGlwID0gdGhpcy5fY2xpcC50aW1lcyhyYXRpbyk7XG4gICAgICAgICAgICBib3VuZHMgPSBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgICAgIGJvdW5kcy54ICsgY2xpcC54LFxuICAgICAgICAgICAgICAgIGJvdW5kcy55ICsgY2xpcC55LFxuICAgICAgICAgICAgICAgIGNsaXAud2lkdGgsXG4gICAgICAgICAgICAgICAgY2xpcC5oZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBUaGlzIFRpbGVkSW1hZ2UncyBjb250ZW50IHNpemUsIGluIG9yaWdpbmFsIHBpeGVscy5cbiAgICAgKi9cbiAgICBnZXRDb250ZW50U2l6ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCh0aGlzLnNvdXJjZS5kaW1lbnNpb25zLngsIHRoaXMuc291cmNlLmRpbWVuc2lvbnMueSk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfdmlld3BvcnRUb0ltYWdlRGVsdGE6IGZ1bmN0aW9uKCB2aWV3ZXJYLCB2aWV3ZXJZLCBjdXJyZW50ICkge1xuICAgICAgICB2YXIgc2NhbGUgPSAoY3VycmVudCA/IHRoaXMuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWUgOiB0aGlzLl9zY2FsZVNwcmluZy50YXJnZXQudmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3ICQuUG9pbnQodmlld2VyWCAqICh0aGlzLnNvdXJjZS5kaW1lbnNpb25zLnggLyBzY2FsZSksXG4gICAgICAgICAgICB2aWV3ZXJZICogKCh0aGlzLnNvdXJjZS5kaW1lbnNpb25zLnkgKiB0aGlzLmNvbnRlbnRBc3BlY3RYKSAvIHNjYWxlKSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFRyYW5zbGF0ZXMgZnJvbSBPcGVuU2VhZHJhZ29uIHZpZXdlciBjb29yZGluYXRlIHN5c3RlbSB0byBpbWFnZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGVpdGhlciBieSBwYXNzaW5nIFgsWSBjb29yZGluYXRlcyBvciBhbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5Qb2ludH0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ8T3BlblNlYWRyYWdvbi5Qb2ludH0gdmlld2VyWCAtIFRoZSBYIGNvb3JkaW5hdGUgb3IgcG9pbnQgaW4gdmlld3BvcnQgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3ZXJZXSAtIFRoZSBZIGNvb3JkaW5hdGUgaW4gdmlld3BvcnQgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBbY3VycmVudD1mYWxzZV0gLSBQYXNzIHRydWUgdG8gdXNlIHRoZSBjdXJyZW50IGxvY2F0aW9uOyBmYWxzZSBmb3IgdGFyZ2V0IGxvY2F0aW9uLlxuICAgICAqIEByZXR1cm4ge09wZW5TZWFkcmFnb24uUG9pbnR9IEEgcG9pbnQgcmVwcmVzZW50aW5nIHRoZSBjb29yZGluYXRlcyBpbiB0aGUgaW1hZ2UuXG4gICAgICovXG4gICAgdmlld3BvcnRUb0ltYWdlQ29vcmRpbmF0ZXM6IGZ1bmN0aW9uKCB2aWV3ZXJYLCB2aWV3ZXJZLCBjdXJyZW50ICkge1xuICAgICAgICBpZiAodmlld2VyWCBpbnN0YW5jZW9mICQuUG9pbnQpIHtcbiAgICAgICAgICAgIC8vdGhleSBwYXNzZWQgYSBwb2ludCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgY29tcG9uZW50c1xuICAgICAgICAgICAgY3VycmVudCA9IHZpZXdlclk7XG4gICAgICAgICAgICB2aWV3ZXJZID0gdmlld2VyWC55O1xuICAgICAgICAgICAgdmlld2VyWCA9IHZpZXdlclgueDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRUb0ltYWdlRGVsdGEodmlld2VyWCAtIHRoaXMuX3hTcHJpbmcuY3VycmVudC52YWx1ZSxcbiAgICAgICAgICAgICAgICB2aWV3ZXJZIC0gdGhpcy5feVNwcmluZy5jdXJyZW50LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3cG9ydFRvSW1hZ2VEZWx0YSh2aWV3ZXJYIC0gdGhpcy5feFNwcmluZy50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICB2aWV3ZXJZIC0gdGhpcy5feVNwcmluZy50YXJnZXQudmFsdWUpO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2ltYWdlVG9WaWV3cG9ydERlbHRhOiBmdW5jdGlvbiggaW1hZ2VYLCBpbWFnZVksIGN1cnJlbnQgKSB7XG4gICAgICAgIHZhciBzY2FsZSA9IChjdXJyZW50ID8gdGhpcy5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZSA6IHRoaXMuX3NjYWxlU3ByaW5nLnRhcmdldC52YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgJC5Qb2ludCgoaW1hZ2VYIC8gdGhpcy5zb3VyY2UuZGltZW5zaW9ucy54KSAqIHNjYWxlLFxuICAgICAgICAgICAgKGltYWdlWSAvIHRoaXMuc291cmNlLmRpbWVuc2lvbnMueSAvIHRoaXMuY29udGVudEFzcGVjdFgpICogc2NhbGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGVzIGZyb20gaW1hZ2UgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gT3BlblNlYWRyYWdvbiB2aWV3ZXIgY29vcmRpbmF0ZSBzeXN0ZW1cbiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGVpdGhlciBieSBwYXNzaW5nIFgsWSBjb29yZGluYXRlcyBvciBhbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5Qb2ludH0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ8T3BlblNlYWRyYWdvbi5Qb2ludH0gaW1hZ2VYIC0gVGhlIFggY29vcmRpbmF0ZSBvciBwb2ludCBpbiBpbWFnZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW2ltYWdlWV0gLSBUaGUgWSBjb29yZGluYXRlIGluIGltYWdlIGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIHRvIHVzZSB0aGUgY3VycmVudCBsb2NhdGlvbjsgZmFsc2UgZm9yIHRhcmdldCBsb2NhdGlvbi5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBBIHBvaW50IHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgaW4gdGhlIHZpZXdwb3J0LlxuICAgICAqL1xuICAgIGltYWdlVG9WaWV3cG9ydENvb3JkaW5hdGVzOiBmdW5jdGlvbiggaW1hZ2VYLCBpbWFnZVksIGN1cnJlbnQgKSB7XG4gICAgICAgIGlmIChpbWFnZVggaW5zdGFuY2VvZiAkLlBvaW50KSB7XG4gICAgICAgICAgICAvL3RoZXkgcGFzc2VkIGEgcG9pbnQgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHNcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpbWFnZVk7XG4gICAgICAgICAgICBpbWFnZVkgPSBpbWFnZVgueTtcbiAgICAgICAgICAgIGltYWdlWCA9IGltYWdlWC54O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5faW1hZ2VUb1ZpZXdwb3J0RGVsdGEoaW1hZ2VYLCBpbWFnZVkpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcG9pbnQueCArPSB0aGlzLl94U3ByaW5nLmN1cnJlbnQudmFsdWU7XG4gICAgICAgICAgICBwb2ludC55ICs9IHRoaXMuX3lTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50LnggKz0gdGhpcy5feFNwcmluZy50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICBwb2ludC55ICs9IHRoaXMuX3lTcHJpbmcudGFyZ2V0LnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvaW50O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2xhdGVzIGZyb20gYSByZWN0YW5nbGUgd2hpY2ggZGVzY3JpYmVzIGEgcG9ydGlvbiBvZiB0aGUgaW1hZ2UgaW5cbiAgICAgKiBwaXhlbCBjb29yZGluYXRlcyB0byBPcGVuU2VhZHJhZ29uIHZpZXdwb3J0IHJlY3RhbmdsZSBjb29yZGluYXRlcy5cbiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGVpdGhlciBieSBwYXNzaW5nIFgsWSx3aWR0aCxoZWlnaHQgb3IgYW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uUmVjdH0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ8T3BlblNlYWRyYWdvbi5SZWN0fSBpbWFnZVggLSBUaGUgbGVmdCBjb29yZGluYXRlIG9yIHJlY3RhbmdsZSBpbiBpbWFnZSBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW2ltYWdlWV0gLSBUaGUgdG9wIGNvb3JkaW5hdGUgaW4gaW1hZ2UgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtwaXhlbFdpZHRoXSAtIFRoZSB3aWR0aCBpbiBwaXhlbCBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbcGl4ZWxIZWlnaHRdIC0gVGhlIGhlaWdodCBpbiBwaXhlbCBvZiB0aGUgcmVjdGFuZ2xlLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIHRvIHVzZSB0aGUgY3VycmVudCBsb2NhdGlvbjsgZmFsc2UgZm9yIHRhcmdldCBsb2NhdGlvbi5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlJlY3R9IEEgcmVjdCByZXByZXNlbnRpbmcgdGhlIGNvb3JkaW5hdGVzIGluIHRoZSB2aWV3cG9ydC5cbiAgICAgKi9cbiAgICBpbWFnZVRvVmlld3BvcnRSZWN0YW5nbGU6IGZ1bmN0aW9uKCBpbWFnZVgsIGltYWdlWSwgcGl4ZWxXaWR0aCwgcGl4ZWxIZWlnaHQsIGN1cnJlbnQgKSB7XG4gICAgICAgIHZhciByZWN0ID0gaW1hZ2VYO1xuICAgICAgICBpZiAocmVjdCBpbnN0YW5jZW9mICQuUmVjdCkge1xuICAgICAgICAgICAgLy90aGV5IHBhc3NlZCBhIHJlY3QgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHNcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpbWFnZVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWN0ID0gbmV3ICQuUmVjdChpbWFnZVgsIGltYWdlWSwgcGl4ZWxXaWR0aCwgcGl4ZWxIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvb3JkQSA9IHRoaXMuaW1hZ2VUb1ZpZXdwb3J0Q29vcmRpbmF0ZXMocmVjdC5nZXRUb3BMZWZ0KCksIGN1cnJlbnQpO1xuICAgICAgICB2YXIgY29vcmRCID0gdGhpcy5faW1hZ2VUb1ZpZXdwb3J0RGVsdGEocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQsIGN1cnJlbnQpO1xuXG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgY29vcmRBLngsXG4gICAgICAgICAgICBjb29yZEEueSxcbiAgICAgICAgICAgIGNvb3JkQi54LFxuICAgICAgICAgICAgY29vcmRCLnksXG4gICAgICAgICAgICByZWN0LmRlZ3JlZXNcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVHJhbnNsYXRlcyBmcm9tIGEgcmVjdGFuZ2xlIHdoaWNoIGRlc2NyaWJlcyBhIHBvcnRpb24gb2ZcbiAgICAgKiB0aGUgdmlld3BvcnQgaW4gcG9pbnQgY29vcmRpbmF0ZXMgdG8gaW1hZ2UgcmVjdGFuZ2xlIGNvb3JkaW5hdGVzLlxuICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgZWl0aGVyIGJ5IHBhc3NpbmcgWCxZLHdpZHRoLGhlaWdodCBvciBhbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5SZWN0fS5cbiAgICAgKiBAcGFyYW0ge051bWJlcnxPcGVuU2VhZHJhZ29uLlJlY3R9IHZpZXdlclggLSBUaGUgbGVmdCBjb29yZGluYXRlIG9yIHJlY3RhbmdsZSBpbiB2aWV3cG9ydCBjb29yZGluYXRlIHN5c3RlbS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW3ZpZXdlclldIC0gVGhlIHRvcCBjb29yZGluYXRlIGluIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbcG9pbnRXaWR0aF0gLSBUaGUgd2lkdGggaW4gdmlld3BvcnQgY29vcmRpbmF0ZSBzeXN0ZW0uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtwb2ludEhlaWdodF0gLSBUaGUgaGVpZ2h0IGluIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3lzdGVtLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2N1cnJlbnQ9ZmFsc2VdIC0gUGFzcyB0cnVlIHRvIHVzZSB0aGUgY3VycmVudCBsb2NhdGlvbjsgZmFsc2UgZm9yIHRhcmdldCBsb2NhdGlvbi5cbiAgICAgKiBAcmV0dXJuIHtPcGVuU2VhZHJhZ29uLlJlY3R9IEEgcmVjdCByZXByZXNlbnRpbmcgdGhlIGNvb3JkaW5hdGVzIGluIHRoZSBpbWFnZS5cbiAgICAgKi9cbiAgICB2aWV3cG9ydFRvSW1hZ2VSZWN0YW5nbGU6IGZ1bmN0aW9uKCB2aWV3ZXJYLCB2aWV3ZXJZLCBwb2ludFdpZHRoLCBwb2ludEhlaWdodCwgY3VycmVudCApIHtcbiAgICAgICAgdmFyIHJlY3QgPSB2aWV3ZXJYO1xuICAgICAgICBpZiAodmlld2VyWCBpbnN0YW5jZW9mICQuUmVjdCkge1xuICAgICAgICAgICAgLy90aGV5IHBhc3NlZCBhIHJlY3QgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIGNvbXBvbmVudHNcbiAgICAgICAgICAgIGN1cnJlbnQgPSB2aWV3ZXJZO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjdCA9IG5ldyAkLlJlY3Qodmlld2VyWCwgdmlld2VyWSwgcG9pbnRXaWR0aCwgcG9pbnRIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvb3JkQSA9IHRoaXMudmlld3BvcnRUb0ltYWdlQ29vcmRpbmF0ZXMocmVjdC5nZXRUb3BMZWZ0KCksIGN1cnJlbnQpO1xuICAgICAgICB2YXIgY29vcmRCID0gdGhpcy5fdmlld3BvcnRUb0ltYWdlRGVsdGEocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQsIGN1cnJlbnQpO1xuXG4gICAgICAgIHJldHVybiBuZXcgJC5SZWN0KFxuICAgICAgICAgICAgY29vcmRBLngsXG4gICAgICAgICAgICBjb29yZEEueSxcbiAgICAgICAgICAgIGNvb3JkQi54LFxuICAgICAgICAgICAgY29vcmRCLnksXG4gICAgICAgICAgICByZWN0LmRlZ3JlZXNcbiAgICAgICAgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBwaXhlbCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgdmlld2VyIGVsZW1lbnQgdG8gaW1hZ2VcbiAgICAgKiBjb29yZGluYXRlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBpeGVsXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgdmlld2VyRWxlbWVudFRvSW1hZ2VDb29yZGluYXRlczogZnVuY3Rpb24oIHBpeGVsICkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLnZpZXdwb3J0LnBvaW50RnJvbVBpeGVsKCBwaXhlbCwgdHJ1ZSApO1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3cG9ydFRvSW1hZ2VDb29yZGluYXRlcyggcG9pbnQgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBwaXhlbCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgaW1hZ2UgdG9cbiAgICAgKiB2aWV3ZXIgZWxlbWVudCBjb29yZGluYXRlcy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBpeGVsXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgaW1hZ2VUb1ZpZXdlckVsZW1lbnRDb29yZGluYXRlczogZnVuY3Rpb24oIHBpeGVsICkge1xuICAgICAgICB2YXIgcG9pbnQgPSB0aGlzLmltYWdlVG9WaWV3cG9ydENvb3JkaW5hdGVzKCBwaXhlbCApO1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3cG9ydC5waXhlbEZyb21Qb2ludCggcG9pbnQsIHRydWUgKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBwaXhlbCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUgd2luZG93IHRvIGltYWdlIGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5Qb2ludH0gcGl4ZWxcbiAgICAgKiBAcmV0dXJucyB7T3BlblNlYWRyYWdvbi5Qb2ludH1cbiAgICAgKi9cbiAgICB3aW5kb3dUb0ltYWdlQ29vcmRpbmF0ZXM6IGZ1bmN0aW9uKCBwaXhlbCApIHtcbiAgICAgICAgdmFyIHZpZXdlckNvb3JkaW5hdGVzID0gcGl4ZWwubWludXMoXG4gICAgICAgICAgICAgICAgT3BlblNlYWRyYWdvbi5nZXRFbGVtZW50UG9zaXRpb24oIHRoaXMudmlld2VyLmVsZW1lbnQgKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdlckVsZW1lbnRUb0ltYWdlQ29vcmRpbmF0ZXMoIHZpZXdlckNvb3JkaW5hdGVzICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgaW1hZ2UgY29vcmRpbmF0ZXMgdG8gcGl4ZWwgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHdpbmRvdy5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUG9pbnR9IHBpeGVsXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uUG9pbnR9XG4gICAgICovXG4gICAgaW1hZ2VUb1dpbmRvd0Nvb3JkaW5hdGVzOiBmdW5jdGlvbiggcGl4ZWwgKSB7XG4gICAgICAgIHZhciB2aWV3ZXJDb29yZGluYXRlcyA9IHRoaXMuaW1hZ2VUb1ZpZXdlckVsZW1lbnRDb29yZGluYXRlcyggcGl4ZWwgKTtcbiAgICAgICAgcmV0dXJuIHZpZXdlckNvb3JkaW5hdGVzLnBsdXMoXG4gICAgICAgICAgICAgICAgT3BlblNlYWRyYWdvbi5nZXRFbGVtZW50UG9zaXRpb24oIHRoaXMudmlld2VyLmVsZW1lbnQgKSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSB2aWV3cG9ydCB6b29tIHRvIGFuIGltYWdlIHpvb20uXG4gICAgICogSW1hZ2Ugem9vbTogcmF0aW8gb2YgdGhlIG9yaWdpbmFsIGltYWdlIHNpemUgdG8gZGlzcGxheWVkIGltYWdlIHNpemUuXG4gICAgICogMSBtZWFucyBvcmlnaW5hbCBpbWFnZSBzaXplLCAwLjUgaGFsZiBzaXplLi4uXG4gICAgICogVmlld3BvcnQgem9vbTogcmF0aW8gb2YgdGhlIGRpc3BsYXllZCBpbWFnZSdzIHdpZHRoIHRvIHZpZXdwb3J0J3Mgd2lkdGguXG4gICAgICogMSBtZWFucyBpZGVudGljYWwgd2lkdGgsIDIgbWVhbnMgaW1hZ2UncyB3aWR0aCBpcyB0d2ljZSB0aGUgdmlld3BvcnQncyB3aWR0aC4uLlxuICAgICAqIEBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2aWV3cG9ydFpvb20gVGhlIHZpZXdwb3J0IHpvb21cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBpbWFnZVpvb20gVGhlIGltYWdlIHpvb21cbiAgICAgKi9cbiAgICB2aWV3cG9ydFRvSW1hZ2Vab29tOiBmdW5jdGlvbiggdmlld3BvcnRab29tICkge1xuICAgICAgICB2YXIgcmF0aW8gPSB0aGlzLl9zY2FsZVNwcmluZy5jdXJyZW50LnZhbHVlICpcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Ll9jb250YWluZXJJbm5lclNpemUueCAvIHRoaXMuc291cmNlLmRpbWVuc2lvbnMueDtcbiAgICAgICAgcmV0dXJuIHJhdGlvICogdmlld3BvcnRab29tIDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBhbiBpbWFnZSB6b29tIHRvIGEgdmlld3BvcnQgem9vbS5cbiAgICAgKiBJbWFnZSB6b29tOiByYXRpbyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZSB0byBkaXNwbGF5ZWQgaW1hZ2Ugc2l6ZS5cbiAgICAgKiAxIG1lYW5zIG9yaWdpbmFsIGltYWdlIHNpemUsIDAuNSBoYWxmIHNpemUuLi5cbiAgICAgKiBWaWV3cG9ydCB6b29tOiByYXRpbyBvZiB0aGUgZGlzcGxheWVkIGltYWdlJ3Mgd2lkdGggdG8gdmlld3BvcnQncyB3aWR0aC5cbiAgICAgKiAxIG1lYW5zIGlkZW50aWNhbCB3aWR0aCwgMiBtZWFucyBpbWFnZSdzIHdpZHRoIGlzIHR3aWNlIHRoZSB2aWV3cG9ydCdzIHdpZHRoLi4uXG4gICAgICogTm90ZTogbm90IGFjY3VyYXRlIHdpdGggbXVsdGktaW1hZ2UuXG4gICAgICogQGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGltYWdlWm9vbSBUaGUgaW1hZ2Ugem9vbVxuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9IHZpZXdwb3J0Wm9vbSBUaGUgdmlld3BvcnQgem9vbVxuICAgICAqL1xuICAgIGltYWdlVG9WaWV3cG9ydFpvb206IGZ1bmN0aW9uKCBpbWFnZVpvb20gKSB7XG4gICAgICAgIHZhciByYXRpbyA9IHRoaXMuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWUgKlxuICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnQuX2NvbnRhaW5lcklubmVyU2l6ZS54IC8gdGhpcy5zb3VyY2UuZGltZW5zaW9ucy54O1xuICAgICAgICByZXR1cm4gaW1hZ2Vab29tIC8gcmF0aW87XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIFRpbGVkSW1hZ2UncyBwb3NpdGlvbiBpbiB0aGUgd29ybGQuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlBvaW50fSBwb3NpdGlvbiAtIFRoZSBuZXcgcG9zaXRpb24sIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ltbWVkaWF0ZWx5PWZhbHNlXSAtIFdoZXRoZXIgdG8gYW5pbWF0ZSB0byB0aGUgbmV3IHBvc2l0aW9uIG9yIHNuYXAgaW1tZWRpYXRlbHkuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uVGlsZWRJbWFnZS5ldmVudDpib3VuZHMtY2hhbmdlXG4gICAgICovXG4gICAgc2V0UG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uLCBpbW1lZGlhdGVseSkge1xuICAgICAgICB2YXIgc2FtZVRhcmdldCA9ICh0aGlzLl94U3ByaW5nLnRhcmdldC52YWx1ZSA9PT0gcG9zaXRpb24ueCAmJlxuICAgICAgICAgICAgdGhpcy5feVNwcmluZy50YXJnZXQudmFsdWUgPT09IHBvc2l0aW9uLnkpO1xuXG4gICAgICAgIGlmIChpbW1lZGlhdGVseSkge1xuICAgICAgICAgICAgaWYgKHNhbWVUYXJnZXQgJiYgdGhpcy5feFNwcmluZy5jdXJyZW50LnZhbHVlID09PSBwb3NpdGlvbi54ICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3lTcHJpbmcuY3VycmVudC52YWx1ZSA9PT0gcG9zaXRpb24ueSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5feFNwcmluZy5yZXNldFRvKHBvc2l0aW9uLngpO1xuICAgICAgICAgICAgdGhpcy5feVNwcmluZy5yZXNldFRvKHBvc2l0aW9uLnkpO1xuICAgICAgICAgICAgdGhpcy5fbmVlZHNEcmF3ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzYW1lVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl94U3ByaW5nLnNwcmluZ1RvKHBvc2l0aW9uLngpO1xuICAgICAgICAgICAgdGhpcy5feVNwcmluZy5zcHJpbmdUbyhwb3NpdGlvbi55KTtcbiAgICAgICAgICAgIHRoaXMuX25lZWRzRHJhdyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNhbWVUYXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlQm91bmRzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgVGlsZWRJbWFnZSdzIHdpZHRoIGluIHRoZSB3b3JsZCwgYWRqdXN0aW5nIHRoZSBoZWlnaHQgdG8gbWF0Y2ggYmFzZWQgb24gYXNwZWN0IHJhdGlvLlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB3aWR0aCAtIFRoZSBuZXcgd2lkdGgsIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ltbWVkaWF0ZWx5PWZhbHNlXSAtIFdoZXRoZXIgdG8gYW5pbWF0ZSB0byB0aGUgbmV3IHNpemUgb3Igc25hcCBpbW1lZGlhdGVseS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5UaWxlZEltYWdlLmV2ZW50OmJvdW5kcy1jaGFuZ2VcbiAgICAgKi9cbiAgICBzZXRXaWR0aDogZnVuY3Rpb24od2lkdGgsIGltbWVkaWF0ZWx5KSB7XG4gICAgICAgIHRoaXMuX3NldFNjYWxlKHdpZHRoLCBpbW1lZGlhdGVseSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIFRpbGVkSW1hZ2UncyBoZWlnaHQgaW4gdGhlIHdvcmxkLCBhZGp1c3RpbmcgdGhlIHdpZHRoIHRvIG1hdGNoIGJhc2VkIG9uIGFzcGVjdCByYXRpby5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaGVpZ2h0IC0gVGhlIG5ldyBoZWlnaHQsIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ltbWVkaWF0ZWx5PWZhbHNlXSAtIFdoZXRoZXIgdG8gYW5pbWF0ZSB0byB0aGUgbmV3IHNpemUgb3Igc25hcCBpbW1lZGlhdGVseS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5UaWxlZEltYWdlLmV2ZW50OmJvdW5kcy1jaGFuZ2VcbiAgICAgKi9cbiAgICBzZXRIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCwgaW1tZWRpYXRlbHkpIHtcbiAgICAgICAgdGhpcy5fc2V0U2NhbGUoaGVpZ2h0IC8gdGhpcy5ub3JtSGVpZ2h0LCBpbW1lZGlhdGVseSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9ucyBhbmQgc2NhbGVzIHRoZSBUaWxlZEltYWdlIHRvIGZpdCBpbiB0aGUgc3BlY2lmaWVkIGJvdW5kcy5cbiAgICAgKiBOb3RlOiB0aGlzIG1ldGhvZCBmaXJlcyBPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2UuZXZlbnQ6Ym91bmRzLWNoYW5nZVxuICAgICAqIHR3aWNlXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlJlY3R9IGJvdW5kcyBUaGUgYm91bmRzIHRvIGZpdCB0aGUgaW1hZ2UgaW50by5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUGxhY2VtZW50fSBbYW5jaG9yPU9wZW5TZWFkcmFnb24uUGxhY2VtZW50LkNFTlRFUl1cbiAgICAgKiBIb3cgdG8gYW5jaG9yIHRoZSBpbWFnZSBpbiB0aGUgYm91bmRzLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW2ltbWVkaWF0ZWx5PWZhbHNlXSBXaGV0aGVyIHRvIGFuaW1hdGUgdG8gdGhlIG5ldyBzaXplXG4gICAgICogb3Igc25hcCBpbW1lZGlhdGVseS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5UaWxlZEltYWdlLmV2ZW50OmJvdW5kcy1jaGFuZ2VcbiAgICAgKi9cbiAgICBmaXRCb3VuZHM6IGZ1bmN0aW9uKGJvdW5kcywgYW5jaG9yLCBpbW1lZGlhdGVseSkge1xuICAgICAgICBhbmNob3IgPSBhbmNob3IgfHwgJC5QbGFjZW1lbnQuQ0VOVEVSO1xuICAgICAgICB2YXIgYW5jaG9yUHJvcGVydGllcyA9ICQuUGxhY2VtZW50LnByb3BlcnRpZXNbYW5jaG9yXTtcbiAgICAgICAgdmFyIGFzcGVjdFJhdGlvID0gdGhpcy5jb250ZW50QXNwZWN0WDtcbiAgICAgICAgdmFyIHhPZmZzZXQgPSAwO1xuICAgICAgICB2YXIgeU9mZnNldCA9IDA7XG4gICAgICAgIHZhciBkaXNwbGF5ZWRXaWR0aFJhdGlvID0gMTtcbiAgICAgICAgdmFyIGRpc3BsYXllZEhlaWdodFJhdGlvID0gMTtcbiAgICAgICAgaWYgKHRoaXMuX2NsaXApIHtcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvID0gdGhpcy5fY2xpcC5nZXRBc3BlY3RSYXRpbygpO1xuICAgICAgICAgICAgZGlzcGxheWVkV2lkdGhSYXRpbyA9IHRoaXMuX2NsaXAud2lkdGggLyB0aGlzLnNvdXJjZS5kaW1lbnNpb25zLng7XG4gICAgICAgICAgICBkaXNwbGF5ZWRIZWlnaHRSYXRpbyA9IHRoaXMuX2NsaXAuaGVpZ2h0IC8gdGhpcy5zb3VyY2UuZGltZW5zaW9ucy55O1xuICAgICAgICAgICAgaWYgKGJvdW5kcy5nZXRBc3BlY3RSYXRpbygpID4gYXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgICAgICB4T2Zmc2V0ID0gdGhpcy5fY2xpcC54IC8gdGhpcy5fY2xpcC5oZWlnaHQgKiBib3VuZHMuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHlPZmZzZXQgPSB0aGlzLl9jbGlwLnkgLyB0aGlzLl9jbGlwLmhlaWdodCAqIGJvdW5kcy5oZWlnaHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHhPZmZzZXQgPSB0aGlzLl9jbGlwLnggLyB0aGlzLl9jbGlwLndpZHRoICogYm91bmRzLndpZHRoO1xuICAgICAgICAgICAgICAgIHlPZmZzZXQgPSB0aGlzLl9jbGlwLnkgLyB0aGlzLl9jbGlwLndpZHRoICogYm91bmRzLndpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJvdW5kcy5nZXRBc3BlY3RSYXRpbygpID4gYXNwZWN0UmF0aW8pIHtcbiAgICAgICAgICAgIC8vIFdlIHdpbGwgaGF2ZSBtYXJnaW5zIG9uIHRoZSBYIGF4aXNcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBib3VuZHMuaGVpZ2h0IC8gZGlzcGxheWVkSGVpZ2h0UmF0aW87XG4gICAgICAgICAgICB2YXIgbWFyZ2luTGVmdCA9IDA7XG4gICAgICAgICAgICBpZiAoYW5jaG9yUHJvcGVydGllcy5pc0hvcml6b250YWxseUNlbnRlcmVkKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdCA9IChib3VuZHMud2lkdGggLSBib3VuZHMuaGVpZ2h0ICogYXNwZWN0UmF0aW8pIC8gMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYW5jaG9yUHJvcGVydGllcy5pc1JpZ2h0KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdCA9IGJvdW5kcy53aWR0aCAtIGJvdW5kcy5oZWlnaHQgKiBhc3BlY3RSYXRpbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oXG4gICAgICAgICAgICAgICAgbmV3ICQuUG9pbnQoYm91bmRzLnggLSB4T2Zmc2V0ICsgbWFyZ2luTGVmdCwgYm91bmRzLnkgLSB5T2Zmc2V0KSxcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVseSk7XG4gICAgICAgICAgICB0aGlzLnNldEhlaWdodChoZWlnaHQsIGltbWVkaWF0ZWx5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIHdpbGwgaGF2ZSBtYXJnaW5zIG9uIHRoZSBZIGF4aXNcbiAgICAgICAgICAgIHZhciB3aWR0aCA9IGJvdW5kcy53aWR0aCAvIGRpc3BsYXllZFdpZHRoUmF0aW87XG4gICAgICAgICAgICB2YXIgbWFyZ2luVG9wID0gMDtcbiAgICAgICAgICAgIGlmIChhbmNob3JQcm9wZXJ0aWVzLmlzVmVydGljYWxseUNlbnRlcmVkKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wID0gKGJvdW5kcy5oZWlnaHQgLSBib3VuZHMud2lkdGggLyBhc3BlY3RSYXRpbykgLyAyO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhbmNob3JQcm9wZXJ0aWVzLmlzQm90dG9tKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wID0gYm91bmRzLmhlaWdodCAtIGJvdW5kcy53aWR0aCAvIGFzcGVjdFJhdGlvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbihcbiAgICAgICAgICAgICAgICBuZXcgJC5Qb2ludChib3VuZHMueCAtIHhPZmZzZXQsIGJvdW5kcy55IC0geU9mZnNldCArIG1hcmdpblRvcCksXG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkpO1xuICAgICAgICAgICAgdGhpcy5zZXRXaWR0aCh3aWR0aCwgaW1tZWRpYXRlbHkpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlJlY3R8bnVsbH0gVGhlIFRpbGVkSW1hZ2UncyBjdXJyZW50IGNsaXAgcmVjdGFuZ2xlLFxuICAgICAqIGluIGltYWdlIHBpeGVscywgb3IgbnVsbCBpZiBub25lLlxuICAgICAqL1xuICAgIGdldENsaXA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5fY2xpcCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NsaXAuY2xvbmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uUmVjdHxudWxsfSBuZXdDbGlwIC0gQW4gYXJlYSwgaW4gaW1hZ2UgcGl4ZWxzLCB0byBjbGlwIHRvXG4gICAgICogKHBvcnRpb25zIG9mIHRoZSBpbWFnZSBvdXRzaWRlIG9mIHRoaXMgYXJlYSB3aWxsIG5vdCBiZSB2aXNpYmxlKS4gT25seSB3b3JrcyBvblxuICAgICAqIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0aGUgSFRNTDUgY2FudmFzLlxuICAgICAqL1xuICAgIHNldENsaXA6IGZ1bmN0aW9uKG5ld0NsaXApIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCghbmV3Q2xpcCB8fCBuZXdDbGlwIGluc3RhbmNlb2YgJC5SZWN0LFxuICAgICAgICAgICAgXCJbVGlsZWRJbWFnZS5zZXRDbGlwXSBuZXdDbGlwIG11c3QgYmUgYW4gT3BlblNlYWRyYWdvbi5SZWN0IG9yIG51bGxcIik7XG5cbiAgICAgICAgaWYgKG5ld0NsaXAgaW5zdGFuY2VvZiAkLlJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaXAgPSBuZXdDbGlwLmNsb25lKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jbGlwID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25lZWRzRHJhdyA9IHRydWU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBUaWxlZEltYWdlJ3MgY3VycmVudCBvcGFjaXR5LlxuICAgICAqL1xuICAgIGdldE9wYWNpdHk6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gb3BhY2l0eSBPcGFjaXR5IHRoZSB0aWxlZCBpbWFnZSBzaG91bGQgYmUgZHJhd24gYXQuXG4gICAgICovXG4gICAgc2V0T3BhY2l0eTogZnVuY3Rpb24ob3BhY2l0eSkge1xuICAgICAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgICAgICB0aGlzLl9uZWVkc0RyYXcgPSB0cnVlO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVGlsZWRJbWFnZSdzIGN1cnJlbnQgY29tcG9zaXRlT3BlcmF0aW9uLlxuICAgICAqL1xuICAgIGdldENvbXBvc2l0ZU9wZXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbXBvc2l0ZU9wZXJhdGlvbiB0aGUgdGlsZWQgaW1hZ2Ugc2hvdWxkIGJlIGRyYXduIHdpdGggdGhpcyBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24uXG4gICAgICovXG4gICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9uOiBmdW5jdGlvbihjb21wb3NpdGVPcGVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5jb21wb3NpdGVPcGVyYXRpb24gPSBjb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIHRoaXMuX25lZWRzRHJhdyA9IHRydWU7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfc2V0U2NhbGU6IGZ1bmN0aW9uKHNjYWxlLCBpbW1lZGlhdGVseSkge1xuICAgICAgICB2YXIgc2FtZVRhcmdldCA9ICh0aGlzLl9zY2FsZVNwcmluZy50YXJnZXQudmFsdWUgPT09IHNjYWxlKTtcbiAgICAgICAgaWYgKGltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICBpZiAoc2FtZVRhcmdldCAmJiB0aGlzLl9zY2FsZVNwcmluZy5jdXJyZW50LnZhbHVlID09PSBzY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc2NhbGVTcHJpbmcucmVzZXRUbyhzY2FsZSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGb3JTY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5fbmVlZHNEcmF3ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzYW1lVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zY2FsZVNwcmluZy5zcHJpbmdUbyhzY2FsZSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGb3JTY2FsZSgpO1xuICAgICAgICAgICAgdGhpcy5fbmVlZHNEcmF3ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2FtZVRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fcmFpc2VCb3VuZHNDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX3VwZGF0ZUZvclNjYWxlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fd29ybGRXaWR0aFRhcmdldCA9IHRoaXMuX3NjYWxlU3ByaW5nLnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5fd29ybGRIZWlnaHRUYXJnZXQgPSB0aGlzLm5vcm1IZWlnaHQgKiB0aGlzLl9zY2FsZVNwcmluZy50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMuX3dvcmxkV2lkdGhDdXJyZW50ID0gdGhpcy5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5fd29ybGRIZWlnaHRDdXJyZW50ID0gdGhpcy5ub3JtSGVpZ2h0ICogdGhpcy5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIF9yYWlzZUJvdW5kc0NoYW5nZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgVGlsZWRJbWFnZSdzIGJvdW5kcyBhcmUgY2hhbmdlZC5cbiAgICAgICAgICogTm90ZSB0aGF0IHRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIG9ubHkgd2hlbiB0aGUgYW5pbWF0aW9uIHRhcmdldCBpcyBjaGFuZ2VkO1xuICAgICAgICAgKiBub3QgZm9yIGV2ZXJ5IGZyYW1lIG9mIGFuaW1hdGlvbi5cbiAgICAgICAgICogQGV2ZW50IGJvdW5kcy1jaGFuZ2VcbiAgICAgICAgICogQG1lbWJlck9mIE9wZW5TZWFkcmFnb24uVGlsZWRJbWFnZVxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uV29ybGR9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFRpbGVkSW1hZ2Ugd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCdib3VuZHMtY2hhbmdlJyk7XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfaXNCb3R0b21JdGVtOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld2VyLndvcmxkLmdldEl0ZW1BdCgwKSA9PT0gdGhpcztcbiAgICB9XG59KTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQGlubmVyXG4gKiBQcmV0dHkgbXVjaCBldmVyeSBvdGhlciBsaW5lIGluIHRoaXMgbmVlZHMgdG8gYmUgZG9jdW1lbnRlZCBzbyBpdCdzIGNsZWFyXG4gKiBob3cgZWFjaCBwaWVjZSBvZiB0aGlzIHJvdXRpbmUgY29udHJpYnV0ZXMgdG8gdGhlIGRyYXdpbmcgcHJvY2Vzcy4gIFRoYXQnc1xuICogd2h5IHRoZXJlIGFyZSBzbyBtYW55IFRPRE8ncyBpbnNpZGUgdGhpcyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnQoIHRpbGVkSW1hZ2UgKSB7XG5cbiAgICB0aWxlZEltYWdlLl9uZWVkc0RyYXcgPSBmYWxzZTtcblxuICAgIHZhciB0aWxlLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgYmVzdCAgICAgICAgICAgID0gbnVsbCxcbiAgICAgICAgaGF2ZURyYXduICAgICAgID0gZmFsc2UsXG4gICAgICAgIGN1cnJlbnRUaW1lICAgICA9ICQubm93KCksXG4gICAgICAgIHZpZXdwb3J0Qm91bmRzICA9IHRpbGVkSW1hZ2Uudmlld3BvcnQuZ2V0Qm91bmRzV2l0aE1hcmdpbnMoIHRydWUgKSxcbiAgICAgICAgemVyb1JhdGlvQyAgICAgID0gdGlsZWRJbWFnZS52aWV3cG9ydC5kZWx0YVBpeGVsc0Zyb21Qb2ludHNOb1JvdGF0ZShcbiAgICAgICAgICAgIHRpbGVkSW1hZ2Uuc291cmNlLmdldFBpeGVsUmF0aW8oIDAgKSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKS54ICogdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZSxcbiAgICAgICAgbG93ZXN0TGV2ZWwgICAgID0gTWF0aC5tYXgoXG4gICAgICAgICAgICB0aWxlZEltYWdlLnNvdXJjZS5taW5MZXZlbCxcbiAgICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgTWF0aC5sb2coIHRpbGVkSW1hZ2UubWluWm9vbUltYWdlUmF0aW8gKSAvXG4gICAgICAgICAgICAgICAgTWF0aC5sb2coIDIgKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBoaWdoZXN0TGV2ZWwgICAgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIE1hdGguYWJzKHRpbGVkSW1hZ2Uuc291cmNlLm1heExldmVsKSxcbiAgICAgICAgICAgIE1hdGguYWJzKE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgTWF0aC5sb2coIHplcm9SYXRpb0MgLyB0aWxlZEltYWdlLm1pblBpeGVsUmF0aW8gKSAvXG4gICAgICAgICAgICAgICAgTWF0aC5sb2coIDIgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKSxcbiAgICAgICAgcmVuZGVyUGl4ZWxSYXRpb0MsXG4gICAgICAgIHJlbmRlclBpeGVsUmF0aW9ULFxuICAgICAgICB6ZXJvUmF0aW9ULFxuICAgICAgICBvcHRpbWFsUmF0aW8sXG4gICAgICAgIGxldmVsT3BhY2l0eSxcbiAgICAgICAgbGV2ZWxWaXNpYmlsaXR5O1xuXG4gICAgLy8gUmVzZXQgdGlsZSdzIGludGVybmFsIGRyYXduIHN0YXRlXG4gICAgd2hpbGUgKHRpbGVkSW1hZ2UubGFzdERyYXduLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGlsZSA9IHRpbGVkSW1hZ2UubGFzdERyYXduLnBvcCgpO1xuICAgICAgICB0aWxlLmJlaW5nRHJhd24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRpbGVkSW1hZ2Uud3JhcEhvcml6b250YWwgJiYgIXRpbGVkSW1hZ2Uud3JhcFZlcnRpY2FsKSB7XG4gICAgICAgIHZhciB0aWxlZEltYWdlQm91bmRzID0gdGlsZWRJbWFnZS5nZXRDbGlwcGVkQm91bmRzKHRydWUpO1xuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gdmlld3BvcnRCb3VuZHMuaW50ZXJzZWN0aW9uKHRpbGVkSW1hZ2VCb3VuZHMpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmlld3BvcnRCb3VuZHMgPSBpbnRlcnNlY3Rpb247XG4gICAgfVxuICAgIHZpZXdwb3J0Qm91bmRzID0gdmlld3BvcnRCb3VuZHMuZ2V0Qm91bmRpbmdCb3goKTtcbiAgICB2aWV3cG9ydEJvdW5kcy54IC09IHRpbGVkSW1hZ2UuX3hTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICB2aWV3cG9ydEJvdW5kcy55IC09IHRpbGVkSW1hZ2UuX3lTcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgIHZhciB2aWV3cG9ydFRMID0gdmlld3BvcnRCb3VuZHMuZ2V0VG9wTGVmdCgpO1xuICAgIHZhciB2aWV3cG9ydEJSID0gdmlld3BvcnRCb3VuZHMuZ2V0Qm90dG9tUmlnaHQoKTtcblxuICAgIC8vRG9uJ3QgZHJhdyBpZiBjb21wbGV0ZWx5IG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0XG4gICAgaWYgICggIXRpbGVkSW1hZ2Uud3JhcEhvcml6b250YWwgJiYgKHZpZXdwb3J0QlIueCA8IDAgfHwgdmlld3BvcnRUTC54ID4gdGlsZWRJbWFnZS5fd29ybGRXaWR0aEN1cnJlbnQgKSApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICggIXRpbGVkSW1hZ2Uud3JhcFZlcnRpY2FsICYmICggdmlld3BvcnRCUi55IDwgMCB8fCB2aWV3cG9ydFRMLnkgPiB0aWxlZEltYWdlLl93b3JsZEhlaWdodEN1cnJlbnQgKSApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB2aWV3cG9ydCByZWN0IC8gYm91bmRzXG4gICAgaWYgKCAhdGlsZWRJbWFnZS53cmFwSG9yaXpvbnRhbCApIHtcbiAgICAgICAgdmlld3BvcnRUTC54ID0gTWF0aC5tYXgoIHZpZXdwb3J0VEwueCwgMCApO1xuICAgICAgICB2aWV3cG9ydEJSLnggPSBNYXRoLm1pbiggdmlld3BvcnRCUi54LCB0aWxlZEltYWdlLl93b3JsZFdpZHRoQ3VycmVudCApO1xuICAgIH1cblxuICAgIGlmICggIXRpbGVkSW1hZ2Uud3JhcFZlcnRpY2FsICkge1xuICAgICAgICB2aWV3cG9ydFRMLnkgPSBNYXRoLm1heCggdmlld3BvcnRUTC55LCAwICk7XG4gICAgICAgIHZpZXdwb3J0QlIueSA9IE1hdGgubWluKCB2aWV3cG9ydEJSLnksIHRpbGVkSW1hZ2UuX3dvcmxkSGVpZ2h0Q3VycmVudCApO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0aW9ucyBmb3IgdGhlIGludGVydmFsIG9mIGxldmVscyB0byBkcmF3XG4gICAgLy8gKGFib3ZlIGluIGluaXRpYWwgdmFyIHN0YXRlbWVudClcbiAgICAvLyBjYW4gcmV0dXJuIGludmFsaWQgaW50ZXJ2YWxzOyBmaXggdGhhdCBoZXJlIGlmIG5lY2Vzc2FyeVxuICAgIGxvd2VzdExldmVsID0gTWF0aC5taW4oIGxvd2VzdExldmVsLCBoaWdoZXN0TGV2ZWwgKTtcblxuICAgIC8vIFVwZGF0ZSBhbnkgbGV2ZWwgdGhhdCB3aWxsIGJlIGRyYXduXG4gICAgdmFyIGRyYXdMZXZlbDsgLy8gRklYTUU6IGRyYXdMZXZlbCBzaG91bGQgaGF2ZSBhIG1vcmUgZXhwbGFuYXRvcnkgbmFtZVxuICAgIGZvciAoIGxldmVsID0gaGlnaGVzdExldmVsOyBsZXZlbCA+PSBsb3dlc3RMZXZlbDsgbGV2ZWwtLSApIHtcbiAgICAgICAgZHJhd0xldmVsID0gZmFsc2U7XG5cbiAgICAgICAgLy9Bdm9pZCBjYWxjdWxhdGlvbnMgZm9yIGRyYXcgaWYgd2UgaGF2ZSBhbHJlYWR5IGRyYXduIHRoaXNcbiAgICAgICAgcmVuZGVyUGl4ZWxSYXRpb0MgPSB0aWxlZEltYWdlLnZpZXdwb3J0LmRlbHRhUGl4ZWxzRnJvbVBvaW50c05vUm90YXRlKFxuICAgICAgICAgICAgdGlsZWRJbWFnZS5zb3VyY2UuZ2V0UGl4ZWxSYXRpbyggbGV2ZWwgKSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKS54ICogdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgICAgICBpZiAoICggIWhhdmVEcmF3biAmJiByZW5kZXJQaXhlbFJhdGlvQyA+PSB0aWxlZEltYWdlLm1pblBpeGVsUmF0aW8gKSB8fFxuICAgICAgICAgICAgICggbGV2ZWwgPT0gbG93ZXN0TGV2ZWwgKSApIHtcbiAgICAgICAgICAgIGRyYXdMZXZlbCA9IHRydWU7XG4gICAgICAgICAgICBoYXZlRHJhd24gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCAhaGF2ZURyYXduICkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvL1BlcmZvcm0gY2FsY3VsYXRpb25zIGZvciBkcmF3IGlmIHdlIGhhdmVuJ3QgZHJhd24gdGhpc1xuICAgICAgICByZW5kZXJQaXhlbFJhdGlvVCA9IHRpbGVkSW1hZ2Uudmlld3BvcnQuZGVsdGFQaXhlbHNGcm9tUG9pbnRzTm9Sb3RhdGUoXG4gICAgICAgICAgICB0aWxlZEltYWdlLnNvdXJjZS5nZXRQaXhlbFJhdGlvKCBsZXZlbCApLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKS54ICogdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgICAgICB6ZXJvUmF0aW9UICAgICAgPSB0aWxlZEltYWdlLnZpZXdwb3J0LmRlbHRhUGl4ZWxzRnJvbVBvaW50c05vUm90YXRlKFxuICAgICAgICAgICAgdGlsZWRJbWFnZS5zb3VyY2UuZ2V0UGl4ZWxSYXRpbyhcbiAgICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgdGlsZWRJbWFnZS5zb3VyY2UuZ2V0Q2xvc2VzdExldmVsKCB0aWxlZEltYWdlLnZpZXdwb3J0LmNvbnRhaW5lclNpemUgKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKS54ICogdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcblxuICAgICAgICBvcHRpbWFsUmF0aW8gICAgPSB0aWxlZEltYWdlLmltbWVkaWF0ZVJlbmRlciA/XG4gICAgICAgICAgICAxIDpcbiAgICAgICAgICAgIHplcm9SYXRpb1Q7XG5cbiAgICAgICAgbGV2ZWxPcGFjaXR5ICAgID0gTWF0aC5taW4oIDEsICggcmVuZGVyUGl4ZWxSYXRpb0MgLSAwLjUgKSAvIDAuNSApO1xuXG4gICAgICAgIGxldmVsVmlzaWJpbGl0eSA9IG9wdGltYWxSYXRpbyAvIE1hdGguYWJzKFxuICAgICAgICAgICAgb3B0aW1hbFJhdGlvIC0gcmVuZGVyUGl4ZWxSYXRpb1RcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIGxldmVsIGFuZCBrZWVwIHRyYWNrIG9mICdiZXN0JyB0aWxlIHRvIGxvYWRcbiAgICAgICAgYmVzdCA9IHVwZGF0ZUxldmVsKFxuICAgICAgICAgICAgdGlsZWRJbWFnZSxcbiAgICAgICAgICAgIGhhdmVEcmF3bixcbiAgICAgICAgICAgIGRyYXdMZXZlbCxcbiAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgbGV2ZWxPcGFjaXR5LFxuICAgICAgICAgICAgbGV2ZWxWaXNpYmlsaXR5LFxuICAgICAgICAgICAgdmlld3BvcnRUTCxcbiAgICAgICAgICAgIHZpZXdwb3J0QlIsXG4gICAgICAgICAgICBjdXJyZW50VGltZSxcbiAgICAgICAgICAgIGJlc3RcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTdG9wIHRoZSBsb29wIGlmIGxvd2VyLXJlcyB0aWxlcyB3b3VsZCBhbGwgYmUgY292ZXJlZCBieVxuICAgICAgICAvLyBhbHJlYWR5IGRyYXduIHRpbGVzXG4gICAgICAgIGlmICggIHByb3ZpZGVzQ292ZXJhZ2UoIHRpbGVkSW1hZ2UuY292ZXJhZ2UsIGxldmVsICkgKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gdGhlIGFjdHVhbCBkcmF3aW5nXG4gICAgZHJhd1RpbGVzKCB0aWxlZEltYWdlLCB0aWxlZEltYWdlLmxhc3REcmF3biApO1xuXG4gICAgLy8gTG9hZCB0aGUgbmV3ICdiZXN0JyB0aWxlXG4gICAgaWYgKGJlc3QgJiYgIWJlc3QuY29udGV4dDJEKSB7XG4gICAgICAgIGxvYWRUaWxlKCB0aWxlZEltYWdlLCBiZXN0LCBjdXJyZW50VGltZSApO1xuICAgIH1cblxufVxuXG5cbmZ1bmN0aW9uIHVwZGF0ZUxldmVsKCB0aWxlZEltYWdlLCBoYXZlRHJhd24sIGRyYXdMZXZlbCwgbGV2ZWwsIGxldmVsT3BhY2l0eSwgbGV2ZWxWaXNpYmlsaXR5LCB2aWV3cG9ydFRMLCB2aWV3cG9ydEJSLCBjdXJyZW50VGltZSwgYmVzdCApe1xuXG4gICAgdmFyIHgsIHksXG4gICAgICAgIHRpbGVUTCxcbiAgICAgICAgdGlsZUJSLFxuICAgICAgICBudW1iZXJPZlRpbGVzLFxuICAgICAgICB2aWV3cG9ydENlbnRlciAgPSB0aWxlZEltYWdlLnZpZXdwb3J0LnBpeGVsRnJvbVBvaW50KCB0aWxlZEltYWdlLnZpZXdwb3J0LmdldENlbnRlcigpICk7XG5cblxuICAgIGlmKCB0aWxlZEltYWdlLnZpZXdlciApe1xuICAgICAgICAvKipcbiAgICAgICAgICogPGVtPi0gTmVlZHMgZG9jdW1lbnRhdGlvbiAtPC9lbT5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV2ZW50IHVwZGF0ZS1sZXZlbFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5UaWxlZEltYWdlfSB0aWxlZEltYWdlIC0gV2hpY2ggVGlsZWRJbWFnZSBpcyBiZWluZyBkcmF3bi5cbiAgICAgICAgICogQHByb3BlcnR5IHtPYmplY3R9IGhhdmVkcmF3blxuICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gbGV2ZWxcbiAgICAgICAgICogQHByb3BlcnR5IHtPYmplY3R9IG9wYWNpdHlcbiAgICAgICAgICogQHByb3BlcnR5IHtPYmplY3R9IHZpc2liaWxpdHlcbiAgICAgICAgICogQHByb3BlcnR5IHtPYmplY3R9IHRvcGxlZnRcbiAgICAgICAgICogQHByb3BlcnR5IHtPYmplY3R9IGJvdHRvbXJpZ2h0XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBjdXJyZW50dGltZVxuICAgICAgICAgKiBAcHJvcGVydHkge09iamVjdH0gYmVzdFxuICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICB0aWxlZEltYWdlLnZpZXdlci5yYWlzZUV2ZW50KCAndXBkYXRlLWxldmVsJywge1xuICAgICAgICAgICAgdGlsZWRJbWFnZTogdGlsZWRJbWFnZSxcbiAgICAgICAgICAgIGhhdmVkcmF3bjogaGF2ZURyYXduLFxuICAgICAgICAgICAgbGV2ZWw6IGxldmVsLFxuICAgICAgICAgICAgb3BhY2l0eTogbGV2ZWxPcGFjaXR5LFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogbGV2ZWxWaXNpYmlsaXR5LFxuICAgICAgICAgICAgdG9wbGVmdDogdmlld3BvcnRUTCxcbiAgICAgICAgICAgIGJvdHRvbXJpZ2h0OiB2aWV3cG9ydEJSLFxuICAgICAgICAgICAgY3VycmVudHRpbWU6IGN1cnJlbnRUaW1lLFxuICAgICAgICAgICAgYmVzdDogYmVzdFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvL09LLCBhIG5ldyBkcmF3aW5nIHNvIGRvIHlvdXIgY2FsY3VsYXRpb25zXG4gICAgdGlsZVRMICAgID0gdGlsZWRJbWFnZS5zb3VyY2UuZ2V0VGlsZUF0UG9pbnQoIGxldmVsLCB2aWV3cG9ydFRMLmRpdmlkZSggdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZSApKTtcbiAgICB0aWxlQlIgICAgPSB0aWxlZEltYWdlLnNvdXJjZS5nZXRUaWxlQXRQb2ludCggbGV2ZWwsIHZpZXdwb3J0QlIuZGl2aWRlKCB0aWxlZEltYWdlLl9zY2FsZVNwcmluZy5jdXJyZW50LnZhbHVlICkpO1xuICAgIG51bWJlck9mVGlsZXMgID0gdGlsZWRJbWFnZS5zb3VyY2UuZ2V0TnVtVGlsZXMoIGxldmVsICk7XG5cbiAgICByZXNldENvdmVyYWdlKCB0aWxlZEltYWdlLmNvdmVyYWdlLCBsZXZlbCApO1xuXG4gICAgaWYgKCAhdGlsZWRJbWFnZS53cmFwSG9yaXpvbnRhbCApIHtcbiAgICAgICAgdGlsZUJSLnggPSBNYXRoLm1pbiggdGlsZUJSLngsIG51bWJlck9mVGlsZXMueCAtIDEgKTtcbiAgICB9XG4gICAgaWYgKCAhdGlsZWRJbWFnZS53cmFwVmVydGljYWwgKSB7XG4gICAgICAgIHRpbGVCUi55ID0gTWF0aC5taW4oIHRpbGVCUi55LCBudW1iZXJPZlRpbGVzLnkgLSAxICk7XG4gICAgfVxuXG4gICAgZm9yICggeCA9IHRpbGVUTC54OyB4IDw9IHRpbGVCUi54OyB4KysgKSB7XG4gICAgICAgIGZvciAoIHkgPSB0aWxlVEwueTsgeSA8PSB0aWxlQlIueTsgeSsrICkge1xuXG4gICAgICAgICAgICBiZXN0ID0gdXBkYXRlVGlsZShcbiAgICAgICAgICAgICAgICB0aWxlZEltYWdlLFxuICAgICAgICAgICAgICAgIGRyYXdMZXZlbCxcbiAgICAgICAgICAgICAgICBoYXZlRHJhd24sXG4gICAgICAgICAgICAgICAgeCwgeSxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBsZXZlbE9wYWNpdHksXG4gICAgICAgICAgICAgICAgbGV2ZWxWaXNpYmlsaXR5LFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0Q2VudGVyLFxuICAgICAgICAgICAgICAgIG51bWJlck9mVGlsZXMsXG4gICAgICAgICAgICAgICAgY3VycmVudFRpbWUsXG4gICAgICAgICAgICAgICAgYmVzdFxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJlc3Q7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRpbGUoIHRpbGVkSW1hZ2UsIGRyYXdMZXZlbCwgaGF2ZURyYXduLCB4LCB5LCBsZXZlbCwgbGV2ZWxPcGFjaXR5LCBsZXZlbFZpc2liaWxpdHksIHZpZXdwb3J0Q2VudGVyLCBudW1iZXJPZlRpbGVzLCBjdXJyZW50VGltZSwgYmVzdCl7XG5cbiAgICB2YXIgdGlsZSA9IGdldFRpbGUoXG4gICAgICAgICAgICB4LCB5LFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICB0aWxlZEltYWdlLnNvdXJjZSxcbiAgICAgICAgICAgIHRpbGVkSW1hZ2UudGlsZXNNYXRyaXgsXG4gICAgICAgICAgICBjdXJyZW50VGltZSxcbiAgICAgICAgICAgIG51bWJlck9mVGlsZXMsXG4gICAgICAgICAgICB0aWxlZEltYWdlLl93b3JsZFdpZHRoQ3VycmVudCxcbiAgICAgICAgICAgIHRpbGVkSW1hZ2UuX3dvcmxkSGVpZ2h0Q3VycmVudFxuICAgICAgICApLFxuICAgICAgICBkcmF3VGlsZSA9IGRyYXdMZXZlbDtcblxuICAgIGlmKCB0aWxlZEltYWdlLnZpZXdlciApe1xuICAgICAgICAvKipcbiAgICAgICAgICogPGVtPi0gTmVlZHMgZG9jdW1lbnRhdGlvbiAtPC9lbT5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV2ZW50IHVwZGF0ZS10aWxlXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBWaWV3ZXIgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2V9IHRpbGVkSW1hZ2UgLSBXaGljaCBUaWxlZEltYWdlIGlzIGJlaW5nIGRyYXduLlxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZX0gdGlsZVxuICAgICAgICAgKiBAcHJvcGVydHkgez9PYmplY3R9IHVzZXJEYXRhIC0gQXJiaXRyYXJ5IHN1YnNjcmliZXItZGVmaW5lZCBvYmplY3QuXG4gICAgICAgICAqL1xuICAgICAgICB0aWxlZEltYWdlLnZpZXdlci5yYWlzZUV2ZW50KCAndXBkYXRlLXRpbGUnLCB7XG4gICAgICAgICAgICB0aWxlZEltYWdlOiB0aWxlZEltYWdlLFxuICAgICAgICAgICAgdGlsZTogdGlsZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRDb3ZlcmFnZSggdGlsZWRJbWFnZS5jb3ZlcmFnZSwgbGV2ZWwsIHgsIHksIGZhbHNlICk7XG5cbiAgICBpZiAoICF0aWxlLmV4aXN0cyApIHtcbiAgICAgICAgcmV0dXJuIGJlc3Q7XG4gICAgfVxuXG4gICAgaWYgKCBoYXZlRHJhd24gJiYgIWRyYXdUaWxlICkge1xuICAgICAgICBpZiAoIGlzQ292ZXJlZCggdGlsZWRJbWFnZS5jb3ZlcmFnZSwgbGV2ZWwsIHgsIHkgKSApIHtcbiAgICAgICAgICAgIHNldENvdmVyYWdlKCB0aWxlZEltYWdlLmNvdmVyYWdlLCBsZXZlbCwgeCwgeSwgdHJ1ZSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHJhd1RpbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCAhZHJhd1RpbGUgKSB7XG4gICAgICAgIHJldHVybiBiZXN0O1xuICAgIH1cblxuICAgIHBvc2l0aW9uVGlsZShcbiAgICAgICAgdGlsZSxcbiAgICAgICAgdGlsZWRJbWFnZS5zb3VyY2UudGlsZU92ZXJsYXAsXG4gICAgICAgIHRpbGVkSW1hZ2Uudmlld3BvcnQsXG4gICAgICAgIHZpZXdwb3J0Q2VudGVyLFxuICAgICAgICBsZXZlbFZpc2liaWxpdHksXG4gICAgICAgIHRpbGVkSW1hZ2VcbiAgICApO1xuXG4gICAgaWYgKCF0aWxlLmxvYWRlZCkge1xuICAgICAgICBpZiAodGlsZS5jb250ZXh0MkQpIHtcbiAgICAgICAgICAgIHNldFRpbGVMb2FkZWQodGlsZWRJbWFnZSwgdGlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaW1hZ2VSZWNvcmQgPSB0aWxlZEltYWdlLl90aWxlQ2FjaGUuZ2V0SW1hZ2VSZWNvcmQodGlsZS51cmwpO1xuICAgICAgICAgICAgaWYgKGltYWdlUmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gaW1hZ2VSZWNvcmQuZ2V0SW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBzZXRUaWxlTG9hZGVkKHRpbGVkSW1hZ2UsIHRpbGUsIGltYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICggdGlsZS5sb2FkZWQgKSB7XG4gICAgICAgIHZhciBuZWVkc0RyYXcgPSBibGVuZFRpbGUoXG4gICAgICAgICAgICB0aWxlZEltYWdlLFxuICAgICAgICAgICAgdGlsZSxcbiAgICAgICAgICAgIHgsIHksXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGxldmVsT3BhY2l0eSxcbiAgICAgICAgICAgIGN1cnJlbnRUaW1lXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCBuZWVkc0RyYXcgKSB7XG4gICAgICAgICAgICB0aWxlZEltYWdlLl9uZWVkc0RyYXcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICggdGlsZS5sb2FkaW5nICkge1xuICAgICAgICAvLyB0aGUgdGlsZSBpcyBhbHJlYWR5IGluIHRoZSBkb3dubG9hZCBxdWV1ZVxuICAgICAgICAvLyB0aGFua3Mgam9zaDEwOTMgZm9yIGZpbmFsbHkgdHJhbnNsYXRpbmcgdGhpcyB0eXBvXG4gICAgfSBlbHNlIHtcbiAgICAgICAgYmVzdCA9IGNvbXBhcmVUaWxlcyggYmVzdCwgdGlsZSApO1xuICAgIH1cblxuICAgIHJldHVybiBiZXN0O1xufVxuXG5mdW5jdGlvbiBnZXRUaWxlKCB4LCB5LCBsZXZlbCwgdGlsZVNvdXJjZSwgdGlsZXNNYXRyaXgsIHRpbWUsIG51bVRpbGVzLCB3b3JsZFdpZHRoLCB3b3JsZEhlaWdodCApIHtcbiAgICB2YXIgeE1vZCxcbiAgICAgICAgeU1vZCxcbiAgICAgICAgYm91bmRzLFxuICAgICAgICBleGlzdHMsXG4gICAgICAgIHVybCxcbiAgICAgICAgY29udGV4dDJELFxuICAgICAgICB0aWxlO1xuXG4gICAgaWYgKCAhdGlsZXNNYXRyaXhbIGxldmVsIF0gKSB7XG4gICAgICAgIHRpbGVzTWF0cml4WyBsZXZlbCBdID0ge307XG4gICAgfVxuICAgIGlmICggIXRpbGVzTWF0cml4WyBsZXZlbCBdWyB4IF0gKSB7XG4gICAgICAgIHRpbGVzTWF0cml4WyBsZXZlbCBdWyB4IF0gPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoICF0aWxlc01hdHJpeFsgbGV2ZWwgXVsgeCBdWyB5IF0gKSB7XG4gICAgICAgIHhNb2QgICAgPSAoIG51bVRpbGVzLnggKyAoIHggJSBudW1UaWxlcy54ICkgKSAlIG51bVRpbGVzLng7XG4gICAgICAgIHlNb2QgICAgPSAoIG51bVRpbGVzLnkgKyAoIHkgJSBudW1UaWxlcy55ICkgKSAlIG51bVRpbGVzLnk7XG4gICAgICAgIGJvdW5kcyAgPSB0aWxlU291cmNlLmdldFRpbGVCb3VuZHMoIGxldmVsLCB4TW9kLCB5TW9kICk7XG4gICAgICAgIGV4aXN0cyAgPSB0aWxlU291cmNlLnRpbGVFeGlzdHMoIGxldmVsLCB4TW9kLCB5TW9kICk7XG4gICAgICAgIHVybCAgICAgPSB0aWxlU291cmNlLmdldFRpbGVVcmwoIGxldmVsLCB4TW9kLCB5TW9kICk7XG4gICAgICAgIGNvbnRleHQyRCA9IHRpbGVTb3VyY2UuZ2V0Q29udGV4dDJEID9cbiAgICAgICAgICAgIHRpbGVTb3VyY2UuZ2V0Q29udGV4dDJEKGxldmVsLCB4TW9kLCB5TW9kKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBib3VuZHMueCArPSAoIHggLSB4TW9kICkgLyBudW1UaWxlcy54O1xuICAgICAgICBib3VuZHMueSArPSAod29ybGRIZWlnaHQgLyB3b3JsZFdpZHRoKSAqICgoIHkgLSB5TW9kICkgLyBudW1UaWxlcy55KTtcblxuICAgICAgICB0aWxlc01hdHJpeFsgbGV2ZWwgXVsgeCBdWyB5IF0gPSBuZXcgJC5UaWxlKFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgeSxcbiAgICAgICAgICAgIGJvdW5kcyxcbiAgICAgICAgICAgIGV4aXN0cyxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGNvbnRleHQyRFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHRpbGUgPSB0aWxlc01hdHJpeFsgbGV2ZWwgXVsgeCBdWyB5IF07XG4gICAgdGlsZS5sYXN0VG91Y2hUaW1lID0gdGltZTtcblxuICAgIHJldHVybiB0aWxlO1xufVxuXG5mdW5jdGlvbiBsb2FkVGlsZSggdGlsZWRJbWFnZSwgdGlsZSwgdGltZSApIHtcbiAgICB0aWxlLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRpbGVkSW1hZ2UuX2ltYWdlTG9hZGVyLmFkZEpvYih7XG4gICAgICAgIHNyYzogdGlsZS51cmwsXG4gICAgICAgIGNyb3NzT3JpZ2luUG9saWN5OiB0aWxlZEltYWdlLmNyb3NzT3JpZ2luUG9saWN5LFxuICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oIGltYWdlLCBlcnJvck1zZyApe1xuICAgICAgICAgICAgb25UaWxlTG9hZCggdGlsZWRJbWFnZSwgdGlsZSwgdGltZSwgaW1hZ2UsIGVycm9yTXNnICk7XG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRpbGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uVGlsZUxvYWQoIHRpbGVkSW1hZ2UsIHRpbGUsIHRpbWUsIGltYWdlLCBlcnJvck1zZyApIHtcbiAgICBpZiAoICFpbWFnZSApIHtcbiAgICAgICAgJC5jb25zb2xlLmxvZyggXCJUaWxlICVzIGZhaWxlZCB0byBsb2FkOiAlcyAtIGVycm9yOiAlc1wiLCB0aWxlLCB0aWxlLnVybCwgZXJyb3JNc2cgKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyaWdnZXJlZCB3aGVuIGEgdGlsZSBmYWlscyB0byBsb2FkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXZlbnQgdGlsZS1sb2FkLWZhaWxlZFxuICAgICAgICAgKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvbi5WaWV3ZXJcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGV9IHRpbGUgLSBUaGUgdGlsZSB0aGF0IGZhaWxlZCB0byBsb2FkLlxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gdGlsZWRJbWFnZSAtIFRoZSB0aWxlZCBpbWFnZSB0aGUgdGlsZSBiZWxvbmdzIHRvLlxuICAgICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gdGltZSAtIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoZSB0aWxlIGxvYWQgYmVnYW4uXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICB0aWxlZEltYWdlLnZpZXdlci5yYWlzZUV2ZW50KFwidGlsZS1sb2FkLWZhaWxlZFwiLCB7dGlsZTogdGlsZSwgdGlsZWRJbWFnZTogdGlsZWRJbWFnZSwgdGltZTogdGltZSwgbWVzc2FnZTogZXJyb3JNc2d9KTtcbiAgICAgICAgdGlsZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRpbGUuZXhpc3RzID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIHRpbWUgPCB0aWxlZEltYWdlLmxhc3RSZXNldFRpbWUgKSB7XG4gICAgICAgICQuY29uc29sZS5sb2coIFwiSWdub3JpbmcgdGlsZSAlcyBsb2FkZWQgYmVmb3JlIHJlc2V0OiAlc1wiLCB0aWxlLCB0aWxlLnVybCApO1xuICAgICAgICB0aWxlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBmaW5pc2ggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGN1dG9mZiA9IE1hdGguY2VpbCggTWF0aC5sb2coXG4gICAgICAgICAgICB0aWxlZEltYWdlLnNvdXJjZS5nZXRUaWxlV2lkdGgodGlsZS5sZXZlbCkgKSAvIE1hdGgubG9nKCAyICkgKTtcbiAgICAgICAgc2V0VGlsZUxvYWRlZCh0aWxlZEltYWdlLCB0aWxlLCBpbWFnZSwgY3V0b2ZmKTtcbiAgICB9O1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgbWlkLXVwZGF0ZTsgdGhpcyBjYW4gaGFwcGVuIG9uIElFOCBiZWNhdXNlIGltYWdlIGxvYWQgZXZlbnRzIGZvclxuICAgIC8vIGNhY2hlZCBpbWFnZXMgaGFwcGVuIGltbWVkaWF0ZWx5IHRoZXJlXG4gICAgaWYgKCAhdGlsZWRJbWFnZS5fbWlkRHJhdyApIHtcbiAgICAgICAgZmluaXNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgdXBkYXRlLCBpbiBjYXNlIGNhY2hpbmcgdW5sb2FkcyBhbnkgdGlsZXNcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoIGZpbmlzaCwgMSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXRUaWxlTG9hZGVkKHRpbGVkSW1hZ2UsIHRpbGUsIGltYWdlLCBjdXRvZmYpIHtcbiAgICB2YXIgaW5jcmVtZW50ID0gMDtcblxuICAgIGZ1bmN0aW9uIGdldENvbXBsZXRpb25DYWxsYmFjaygpIHtcbiAgICAgICAgaW5jcmVtZW50Kys7XG4gICAgICAgIHJldHVybiBjb21wbGV0aW9uQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcGxldGlvbkNhbGxiYWNrKCkge1xuICAgICAgICBpbmNyZW1lbnQtLTtcbiAgICAgICAgaWYgKGluY3JlbWVudCA9PT0gMCkge1xuICAgICAgICAgICAgdGlsZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aWxlLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoIXRpbGUuY29udGV4dDJEKSB7XG4gICAgICAgICAgICAgICAgdGlsZWRJbWFnZS5fdGlsZUNhY2hlLmNhY2hlVGlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiBpbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgdGlsZTogdGlsZSxcbiAgICAgICAgICAgICAgICAgICAgY3V0b2ZmOiBjdXRvZmYsXG4gICAgICAgICAgICAgICAgICAgIHRpbGVkSW1hZ2U6IHRpbGVkSW1hZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbGVkSW1hZ2UuX25lZWRzRHJhdyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgd2hlbiBhIHRpbGUgaGFzIGp1c3QgYmVlbiBsb2FkZWQgaW4gbWVtb3J5LiBUaGF0IG1lYW5zIHRoYXQgdGhlXG4gICAgICogaW1hZ2UgaGFzIGJlZW4gZG93bmxvYWRlZCBhbmQgY2FuIGJlIG1vZGlmaWVkIGJlZm9yZSBiZWluZyBkcmF3biB0byB0aGUgY2FudmFzLlxuICAgICAqXG4gICAgICogQGV2ZW50IHRpbGUtbG9hZGVkXG4gICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAcHJvcGVydHkge0ltYWdlfSBpbWFnZSAtIFRoZSBpbWFnZSBvZiB0aGUgdGlsZS5cbiAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gdGlsZWRJbWFnZSAtIFRoZSB0aWxlZCBpbWFnZSBvZiB0aGUgbG9hZGVkIHRpbGUuXG4gICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGV9IHRpbGUgLSBUaGUgdGlsZSB3aGljaCBoYXMgYmVlbiBsb2FkZWQuXG4gICAgICogQHByb3BlcnR5IHtmdW5jdGlvbn0gZ2V0Q29tcGxldGlvbkNhbGxiYWNrIC0gQSBmdW5jdGlvbiBnaXZpbmcgYSBjYWxsYmFjayB0byBjYWxsXG4gICAgICogd2hlbiB0aGUgYXN5bmNocm9ub3VzIHByb2Nlc3Npbmcgb2YgdGhlIGltYWdlIGlzIGRvbmUuIFRoZSBpbWFnZSB3aWxsIGJlXG4gICAgICogbWFya2VkIGFzIGVudGlyZWx5IGxvYWRlZCB3aGVuIHRoZSBjYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQgb25jZSBmb3IgZWFjaFxuICAgICAqIGNhbGwgdG8gZ2V0Q29tcGxldGlvbkNhbGxiYWNrLlxuICAgICAqL1xuICAgIHRpbGVkSW1hZ2Uudmlld2VyLnJhaXNlRXZlbnQoXCJ0aWxlLWxvYWRlZFwiLCB7XG4gICAgICAgIHRpbGU6IHRpbGUsXG4gICAgICAgIHRpbGVkSW1hZ2U6IHRpbGVkSW1hZ2UsXG4gICAgICAgIGltYWdlOiBpbWFnZSxcbiAgICAgICAgZ2V0Q29tcGxldGlvbkNhbGxiYWNrOiBnZXRDb21wbGV0aW9uQ2FsbGJhY2tcbiAgICB9KTtcbiAgICAvLyBJbiBjYXNlIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGlzIG5ldmVyIGNhbGxlZCwgd2UgYXQgbGVhc3QgZm9yY2UgaXQgb25jZS5cbiAgICBnZXRDb21wbGV0aW9uQ2FsbGJhY2soKSgpO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblRpbGUoIHRpbGUsIG92ZXJsYXAsIHZpZXdwb3J0LCB2aWV3cG9ydENlbnRlciwgbGV2ZWxWaXNpYmlsaXR5LCB0aWxlZEltYWdlICl7XG4gICAgdmFyIGJvdW5kc1RMICAgICA9IHRpbGUuYm91bmRzLmdldFRvcExlZnQoKTtcblxuICAgIGJvdW5kc1RMLnggKj0gdGlsZWRJbWFnZS5fc2NhbGVTcHJpbmcuY3VycmVudC52YWx1ZTtcbiAgICBib3VuZHNUTC55ICo9IHRpbGVkSW1hZ2UuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWU7XG4gICAgYm91bmRzVEwueCArPSB0aWxlZEltYWdlLl94U3ByaW5nLmN1cnJlbnQudmFsdWU7XG4gICAgYm91bmRzVEwueSArPSB0aWxlZEltYWdlLl95U3ByaW5nLmN1cnJlbnQudmFsdWU7XG5cbiAgICB2YXIgYm91bmRzU2l6ZSAgID0gdGlsZS5ib3VuZHMuZ2V0U2l6ZSgpO1xuXG4gICAgYm91bmRzU2l6ZS54ICo9IHRpbGVkSW1hZ2UuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWU7XG4gICAgYm91bmRzU2l6ZS55ICo9IHRpbGVkSW1hZ2UuX3NjYWxlU3ByaW5nLmN1cnJlbnQudmFsdWU7XG5cbiAgICB2YXIgcG9zaXRpb25DICAgID0gdmlld3BvcnQucGl4ZWxGcm9tUG9pbnROb1JvdGF0ZShib3VuZHNUTCwgdHJ1ZSksXG4gICAgICAgIHBvc2l0aW9uVCAgICA9IHZpZXdwb3J0LnBpeGVsRnJvbVBvaW50Tm9Sb3RhdGUoYm91bmRzVEwsIGZhbHNlKSxcbiAgICAgICAgc2l6ZUMgICAgICAgID0gdmlld3BvcnQuZGVsdGFQaXhlbHNGcm9tUG9pbnRzTm9Sb3RhdGUoYm91bmRzU2l6ZSwgdHJ1ZSksXG4gICAgICAgIHNpemVUICAgICAgICA9IHZpZXdwb3J0LmRlbHRhUGl4ZWxzRnJvbVBvaW50c05vUm90YXRlKGJvdW5kc1NpemUsIGZhbHNlKSxcbiAgICAgICAgdGlsZUNlbnRlciAgID0gcG9zaXRpb25ULnBsdXMoIHNpemVULmRpdmlkZSggMiApICksXG4gICAgICAgIHRpbGVEaXN0YW5jZSA9IHZpZXdwb3J0Q2VudGVyLmRpc3RhbmNlVG8oIHRpbGVDZW50ZXIgKTtcblxuICAgIGlmICggIW92ZXJsYXAgKSB7XG4gICAgICAgIHNpemVDID0gc2l6ZUMucGx1cyggbmV3ICQuUG9pbnQoIDEsIDEgKSApO1xuICAgIH1cblxuICAgIHRpbGUucG9zaXRpb24gICA9IHBvc2l0aW9uQztcbiAgICB0aWxlLnNpemUgICAgICAgPSBzaXplQztcbiAgICB0aWxlLmRpc3RhbmNlICAgPSB0aWxlRGlzdGFuY2U7XG4gICAgdGlsZS52aXNpYmlsaXR5ID0gbGV2ZWxWaXNpYmlsaXR5O1xufVxuXG5cbmZ1bmN0aW9uIGJsZW5kVGlsZSggdGlsZWRJbWFnZSwgdGlsZSwgeCwgeSwgbGV2ZWwsIGxldmVsT3BhY2l0eSwgY3VycmVudFRpbWUgKXtcbiAgICB2YXIgYmxlbmRUaW1lTWlsbGlzID0gMTAwMCAqIHRpbGVkSW1hZ2UuYmxlbmRUaW1lLFxuICAgICAgICBkZWx0YVRpbWUsXG4gICAgICAgIG9wYWNpdHk7XG5cbiAgICBpZiAoICF0aWxlLmJsZW5kU3RhcnQgKSB7XG4gICAgICAgIHRpbGUuYmxlbmRTdGFydCA9IGN1cnJlbnRUaW1lO1xuICAgIH1cblxuICAgIGRlbHRhVGltZSAgID0gY3VycmVudFRpbWUgLSB0aWxlLmJsZW5kU3RhcnQ7XG4gICAgb3BhY2l0eSAgICAgPSBibGVuZFRpbWVNaWxsaXMgPyBNYXRoLm1pbiggMSwgZGVsdGFUaW1lIC8gKCBibGVuZFRpbWVNaWxsaXMgKSApIDogMTtcblxuICAgIGlmICggdGlsZWRJbWFnZS5hbHdheXNCbGVuZCApIHtcbiAgICAgICAgb3BhY2l0eSAqPSBsZXZlbE9wYWNpdHk7XG4gICAgfVxuXG4gICAgdGlsZS5vcGFjaXR5ID0gb3BhY2l0eTtcblxuICAgIHRpbGVkSW1hZ2UubGFzdERyYXduLnB1c2goIHRpbGUgKTtcblxuICAgIGlmICggb3BhY2l0eSA9PSAxICkge1xuICAgICAgICBzZXRDb3ZlcmFnZSggdGlsZWRJbWFnZS5jb3ZlcmFnZSwgbGV2ZWwsIHgsIHksIHRydWUgKTtcbiAgICAgICAgdGlsZWRJbWFnZS5faGFzT3BhcXVlVGlsZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmICggZGVsdGFUaW1lIDwgYmxlbmRUaW1lTWlsbGlzICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB0aWxlIHByb3ZpZGVzIGNvdmVyYWdlIHRvIGxvd2VyLWxldmVsIHRpbGVzIG9mXG4gKiBsb3dlciByZXNvbHV0aW9uIHJlcHJlc2VudGluZyB0aGUgc2FtZSBjb250ZW50LiBJZiBuZWl0aGVyIHggbm9yIHkgaXNcbiAqIGdpdmVuLCByZXR1cm5zIHRydWUgaWYgdGhlIGVudGlyZSB2aXNpYmxlIGxldmVsIHByb3ZpZGVzIGNvdmVyYWdlLlxuICpcbiAqIE5vdGUgdGhhdCBvdXQtb2YtYm91bmRzIHRpbGVzIHByb3ZpZGUgY292ZXJhZ2UgaW4gdGhpcyBzZW5zZSwgc2luY2VcbiAqIHRoZXJlJ3Mgbm8gY29udGVudCB0aGF0IHRoZXkgd291bGQgbmVlZCB0byBjb3Zlci4gVGlsZXMgYXQgbm9uLWV4aXN0ZW50XG4gKiBsZXZlbHMgdGhhdCBhcmUgd2l0aGluIHRoZSBpbWFnZSBib3VuZHMsIGhvd2V2ZXIsIGRvIG5vdC5cbiAqL1xuZnVuY3Rpb24gcHJvdmlkZXNDb3ZlcmFnZSggY292ZXJhZ2UsIGxldmVsLCB4LCB5ICkge1xuICAgIHZhciByb3dzLFxuICAgICAgICBjb2xzLFxuICAgICAgICBpLCBqO1xuXG4gICAgaWYgKCAhY292ZXJhZ2VbIGxldmVsIF0gKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIHggPT09IHVuZGVmaW5lZCB8fCB5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJvd3MgPSBjb3ZlcmFnZVsgbGV2ZWwgXTtcbiAgICAgICAgZm9yICggaSBpbiByb3dzICkge1xuICAgICAgICAgICAgaWYgKCByb3dzLmhhc093blByb3BlcnR5KCBpICkgKSB7XG4gICAgICAgICAgICAgICAgY29scyA9IHJvd3NbIGkgXTtcbiAgICAgICAgICAgICAgICBmb3IgKCBqIGluIGNvbHMgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggY29scy5oYXNPd25Qcm9wZXJ0eSggaiApICYmICFjb2xzWyBqIF0gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICBjb3ZlcmFnZVsgbGV2ZWwgXVsgeF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBjb3ZlcmFnZVsgbGV2ZWwgXVsgeCBdWyB5IF0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBjb3ZlcmFnZVsgbGV2ZWwgXVsgeCBdWyB5IF0gPT09IHRydWVcbiAgICApO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGlsZSBpcyBjb21wbGV0ZWx5IGNvdmVyZWQgYnkgaGlnaGVyLWxldmVsXG4gKiB0aWxlcyBvZiBoaWdoZXIgcmVzb2x1dGlvbiByZXByZXNlbnRpbmcgdGhlIHNhbWUgY29udGVudC4gSWYgbmVpdGhlciB4XG4gKiBub3IgeSBpcyBnaXZlbiwgcmV0dXJucyB0cnVlIGlmIHRoZSBlbnRpcmUgdmlzaWJsZSBsZXZlbCBpcyBjb3ZlcmVkLlxuICovXG5mdW5jdGlvbiBpc0NvdmVyZWQoIGNvdmVyYWdlLCBsZXZlbCwgeCwgeSApIHtcbiAgICBpZiAoIHggPT09IHVuZGVmaW5lZCB8fCB5ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHJldHVybiBwcm92aWRlc0NvdmVyYWdlKCBjb3ZlcmFnZSwgbGV2ZWwgKyAxICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICBwcm92aWRlc0NvdmVyYWdlKCBjb3ZlcmFnZSwgbGV2ZWwgKyAxLCAyICogeCwgMiAqIHkgKSAmJlxuICAgICAgICAgICAgIHByb3ZpZGVzQ292ZXJhZ2UoIGNvdmVyYWdlLCBsZXZlbCArIDEsIDIgKiB4LCAyICogeSArIDEgKSAmJlxuICAgICAgICAgICAgIHByb3ZpZGVzQ292ZXJhZ2UoIGNvdmVyYWdlLCBsZXZlbCArIDEsIDIgKiB4ICsgMSwgMiAqIHkgKSAmJlxuICAgICAgICAgICAgIHByb3ZpZGVzQ292ZXJhZ2UoIGNvdmVyYWdlLCBsZXZlbCArIDEsIDIgKiB4ICsgMSwgMiAqIHkgKyAxIClcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIEBpbm5lclxuICogU2V0cyB3aGV0aGVyIHRoZSBnaXZlbiB0aWxlIHByb3ZpZGVzIGNvdmVyYWdlIG9yIG5vdC5cbiAqL1xuZnVuY3Rpb24gc2V0Q292ZXJhZ2UoIGNvdmVyYWdlLCBsZXZlbCwgeCwgeSwgY292ZXJzICkge1xuICAgIGlmICggIWNvdmVyYWdlWyBsZXZlbCBdICkge1xuICAgICAgICAkLmNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiU2V0dGluZyBjb3ZlcmFnZSBmb3IgYSB0aWxlIGJlZm9yZSBpdHMgbGV2ZWwncyBjb3ZlcmFnZSBoYXMgYmVlbiByZXNldDogJXNcIixcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoICFjb3ZlcmFnZVsgbGV2ZWwgXVsgeCBdICkge1xuICAgICAgICBjb3ZlcmFnZVsgbGV2ZWwgXVsgeCBdID0ge307XG4gICAgfVxuXG4gICAgY292ZXJhZ2VbIGxldmVsIF1bIHggXVsgeSBdID0gY292ZXJzO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIFJlc2V0cyBjb3ZlcmFnZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIGxldmVsLiBUaGlzIHNob3VsZCBiZSBjYWxsZWRcbiAqIGFmdGVyIGV2ZXJ5IGRyYXcgcm91dGluZS4gTm90ZSB0aGF0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZHJhd1xuICogcm91dGluZSwgY292ZXJhZ2UgZm9yIGV2ZXJ5IHZpc2libGUgdGlsZSBzaG91bGQgYmUgZXhwbGljaXRseSBzZXQuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0Q292ZXJhZ2UoIGNvdmVyYWdlLCBsZXZlbCApIHtcbiAgICBjb3ZlcmFnZVsgbGV2ZWwgXSA9IHt9O1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAaW5uZXJcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgJ2xhc3QgYmVzdCcgdGlsZSBmb3IgdGhlIGFyZWEgaXMgYmV0dGVyIHRoYW4gdGhlXG4gKiB0aWxlIGluIHF1ZXN0aW9uLlxuICovXG5mdW5jdGlvbiBjb21wYXJlVGlsZXMoIHByZXZpb3VzQmVzdCwgdGlsZSApIHtcbiAgICBpZiAoICFwcmV2aW91c0Jlc3QgKSB7XG4gICAgICAgIHJldHVybiB0aWxlO1xuICAgIH1cblxuICAgIGlmICggdGlsZS52aXNpYmlsaXR5ID4gcHJldmlvdXNCZXN0LnZpc2liaWxpdHkgKSB7XG4gICAgICAgIHJldHVybiB0aWxlO1xuICAgIH0gZWxzZSBpZiAoIHRpbGUudmlzaWJpbGl0eSA9PSBwcmV2aW91c0Jlc3QudmlzaWJpbGl0eSApIHtcbiAgICAgICAgaWYgKCB0aWxlLmRpc3RhbmNlIDwgcHJldmlvdXNCZXN0LmRpc3RhbmNlICkge1xuICAgICAgICAgICAgcmV0dXJuIHRpbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJldmlvdXNCZXN0O1xufVxuXG5mdW5jdGlvbiBkcmF3VGlsZXMoIHRpbGVkSW1hZ2UsIGxhc3REcmF3biApIHtcbiAgICBpZiAobGFzdERyYXduLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aWxlID0gbGFzdERyYXduWzBdO1xuXG4gICAgdmFyIHVzZVNrZXRjaCA9IHRpbGVkSW1hZ2Uub3BhY2l0eSA8IDEgfHxcbiAgICAgICAgKHRpbGVkSW1hZ2UuY29tcG9zaXRlT3BlcmF0aW9uICYmXG4gICAgICAgICAgICB0aWxlZEltYWdlLmNvbXBvc2l0ZU9wZXJhdGlvbiAhPT0gJ3NvdXJjZS1vdmVyJykgfHxcbiAgICAgICAgKCF0aWxlZEltYWdlLl9pc0JvdHRvbUl0ZW0oKSAmJiB0aWxlLl9oYXNUcmFuc3BhcmVuY3lDaGFubmVsKCkpO1xuXG4gICAgdmFyIHNrZXRjaFNjYWxlO1xuICAgIHZhciBza2V0Y2hUcmFuc2xhdGU7XG5cbiAgICB2YXIgem9vbSA9IHRpbGVkSW1hZ2Uudmlld3BvcnQuZ2V0Wm9vbSh0cnVlKTtcbiAgICB2YXIgaW1hZ2Vab29tID0gdGlsZWRJbWFnZS52aWV3cG9ydFRvSW1hZ2Vab29tKHpvb20pO1xuICAgIGlmIChpbWFnZVpvb20gPiB0aWxlZEltYWdlLnNtb290aFRpbGVFZGdlc01pblpvb20gJiYgIXRpbGVkSW1hZ2UuaU9TRGV2aWNlKSB7XG4gICAgICAgIC8vIFdoZW4gem9vbWVkIGluIGEgbG90ICg+MTAwJSkgdGhlIHRpbGUgZWRnZXMgYXJlIHZpc2libGUuXG4gICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gY29tcG9zaXRlIHRoZW0gYXQgfjEwMCUgYW5kIHNjYWxlIHRoZW0gdXAgdG9nZXRoZXIuXG4gICAgICAgIC8vIE5vdGU6IERpc2FibGVkIG9uIGlPUyBkZXZpY2VzIHBlciBkZWZhdWx0IGFzIGl0IGNhdXNlcyBhIG5hdGl2ZSBjcmFzaFxuICAgICAgICB1c2VTa2V0Y2ggPSB0cnVlO1xuICAgICAgICBza2V0Y2hTY2FsZSA9IHRpbGUuZ2V0U2NhbGVGb3JFZGdlU21vb3RoaW5nKCk7XG4gICAgICAgIHNrZXRjaFRyYW5zbGF0ZSA9IHRpbGUuZ2V0VHJhbnNsYXRpb25Gb3JFZGdlU21vb3RoaW5nKHNrZXRjaFNjYWxlLFxuICAgICAgICAgICAgdGlsZWRJbWFnZS5fZHJhd2VyLmdldENhbnZhc1NpemUoZmFsc2UpLFxuICAgICAgICAgICAgdGlsZWRJbWFnZS5fZHJhd2VyLmdldENhbnZhc1NpemUodHJ1ZSkpO1xuICAgIH1cblxuICAgIHZhciBib3VuZHM7XG4gICAgaWYgKHVzZVNrZXRjaCkge1xuICAgICAgICBpZiAoIXNrZXRjaFNjYWxlKSB7XG4gICAgICAgICAgICAvLyBFeGNlcHQgd2hlbiBlZGdlIHNtb290aGluZywgd2Ugb25seSBjbGVhbiB0aGUgcGFydCBvZiB0aGVcbiAgICAgICAgICAgIC8vIHNrZXRjaCBjYW52YXMgd2UgYXJlIGdvaW5nIHRvIHVzZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy5cbiAgICAgICAgICAgIGJvdW5kcyA9IHRpbGVkSW1hZ2Uudmlld3BvcnQudmlld3BvcnRUb1ZpZXdlckVsZW1lbnRSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgdGlsZWRJbWFnZS5nZXRDbGlwcGVkQm91bmRzKHRydWUpKVxuICAgICAgICAgICAgICAgIC5nZXRJbnRlZ2VyQm91bmRpbmdCb3goKVxuICAgICAgICAgICAgICAgIC50aW1lcygkLnBpeGVsRGVuc2l0eVJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuX2NsZWFyKHRydWUsIGJvdW5kcyk7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBzY2FsaW5nLCB3ZSBtdXN0IHJvdGF0ZSBvbmx5IHdoZW4gYmxlbmRpbmcgdGhlIHNrZXRjaCBjYW52YXMgdG8gYXZvaWRcbiAgICAvLyBpbnRlcnBvbGF0aW9uXG4gICAgaWYgKHRpbGVkSW1hZ2Uudmlld3BvcnQuZGVncmVlcyAhPT0gMCAmJiAhc2tldGNoU2NhbGUpIHtcbiAgICAgICAgdGlsZWRJbWFnZS5fZHJhd2VyLl9vZmZzZXRGb3JSb3RhdGlvbih0aWxlZEltYWdlLnZpZXdwb3J0LmRlZ3JlZXMsIHVzZVNrZXRjaCk7XG4gICAgfVxuXG4gICAgdmFyIHVzZWRDbGlwID0gZmFsc2U7XG4gICAgaWYgKCB0aWxlZEltYWdlLl9jbGlwICkge1xuICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuc2F2ZUNvbnRleHQodXNlU2tldGNoKTtcblxuICAgICAgICB2YXIgYm94ID0gdGlsZWRJbWFnZS5pbWFnZVRvVmlld3BvcnRSZWN0YW5nbGUodGlsZWRJbWFnZS5fY2xpcCwgdHJ1ZSk7XG4gICAgICAgIHZhciBjbGlwUmVjdCA9IHRpbGVkSW1hZ2UuX2RyYXdlci52aWV3cG9ydFRvRHJhd2VyUmVjdGFuZ2xlKGJveCk7XG4gICAgICAgIGlmIChza2V0Y2hTY2FsZSkge1xuICAgICAgICAgICAgY2xpcFJlY3QgPSBjbGlwUmVjdC50aW1lcyhza2V0Y2hTY2FsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNrZXRjaFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgY2xpcFJlY3QgPSBjbGlwUmVjdC50cmFuc2xhdGUoc2tldGNoVHJhbnNsYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuc2V0Q2xpcChjbGlwUmVjdCwgdXNlU2tldGNoKTtcblxuICAgICAgICB1c2VkQ2xpcCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCB0aWxlZEltYWdlLnBsYWNlaG9sZGVyRmlsbFN0eWxlICYmIHRpbGVkSW1hZ2UuX2hhc09wYXF1ZVRpbGUgPT09IGZhbHNlICkge1xuICAgICAgICB2YXIgcGxhY2Vob2xkZXJSZWN0ID0gdGlsZWRJbWFnZS5fZHJhd2VyLnZpZXdwb3J0VG9EcmF3ZXJSZWN0YW5nbGUodGlsZWRJbWFnZS5nZXRCb3VuZHModHJ1ZSkpO1xuICAgICAgICBpZiAoc2tldGNoU2NhbGUpIHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyUmVjdCA9IHBsYWNlaG9sZGVyUmVjdC50aW1lcyhza2V0Y2hTY2FsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNrZXRjaFRyYW5zbGF0ZSkge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXJSZWN0ID0gcGxhY2Vob2xkZXJSZWN0LnRyYW5zbGF0ZShza2V0Y2hUcmFuc2xhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpbGxTdHlsZSA9IG51bGw7XG4gICAgICAgIGlmICggdHlwZW9mIHRpbGVkSW1hZ2UucGxhY2Vob2xkZXJGaWxsU3R5bGUgPT09IFwiZnVuY3Rpb25cIiApIHtcbiAgICAgICAgICAgIGZpbGxTdHlsZSA9IHRpbGVkSW1hZ2UucGxhY2Vob2xkZXJGaWxsU3R5bGUodGlsZWRJbWFnZSwgdGlsZWRJbWFnZS5fZHJhd2VyLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmlsbFN0eWxlID0gdGlsZWRJbWFnZS5wbGFjZWhvbGRlckZpbGxTdHlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRpbGVkSW1hZ2UuX2RyYXdlci5kcmF3UmVjdGFuZ2xlKHBsYWNlaG9sZGVyUmVjdCwgZmlsbFN0eWxlLCB1c2VTa2V0Y2gpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSBsYXN0RHJhd24ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGlsZSA9IGxhc3REcmF3blsgaSBdO1xuICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuZHJhd1RpbGUoIHRpbGUsIHRpbGVkSW1hZ2UuX2RyYXdpbmdIYW5kbGVyLCB1c2VTa2V0Y2gsIHNrZXRjaFNjYWxlLCBza2V0Y2hUcmFuc2xhdGUgKTtcbiAgICAgICAgdGlsZS5iZWluZ0RyYXduID0gdHJ1ZTtcblxuICAgICAgICBpZiggdGlsZWRJbWFnZS52aWV3ZXIgKXtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogPGVtPi0gTmVlZHMgZG9jdW1lbnRhdGlvbiAtPC9lbT5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXZlbnQgdGlsZS1kcmF3blxuICAgICAgICAgICAgICogQG1lbWJlcm9mIE9wZW5TZWFkcmFnb24uVmlld2VyXG4gICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlZpZXdlcn0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgVmlld2VyIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gdGlsZWRJbWFnZSAtIFdoaWNoIFRpbGVkSW1hZ2UgaXMgYmVpbmcgZHJhd24uXG4gICAgICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZX0gdGlsZVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aWxlZEltYWdlLnZpZXdlci5yYWlzZUV2ZW50KCAndGlsZS1kcmF3bicsIHtcbiAgICAgICAgICAgICAgICB0aWxlZEltYWdlOiB0aWxlZEltYWdlLFxuICAgICAgICAgICAgICAgIHRpbGU6IHRpbGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCB1c2VkQ2xpcCApIHtcbiAgICAgICAgdGlsZWRJbWFnZS5fZHJhd2VyLnJlc3RvcmVDb250ZXh0KCB1c2VTa2V0Y2ggKTtcbiAgICB9XG5cbiAgICBpZiAodGlsZWRJbWFnZS52aWV3cG9ydC5kZWdyZWVzICE9PSAwICYmICFza2V0Y2hTY2FsZSkge1xuICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuX3Jlc3RvcmVSb3RhdGlvbkNoYW5nZXModXNlU2tldGNoKTtcbiAgICB9XG5cbiAgICBpZiAodXNlU2tldGNoKSB7XG4gICAgICAgIHZhciBvZmZzZXRGb3JSb3RhdGlvbiA9IHRpbGVkSW1hZ2Uudmlld3BvcnQuZGVncmVlcyAhPT0gMCAmJiBza2V0Y2hTY2FsZTtcbiAgICAgICAgaWYgKG9mZnNldEZvclJvdGF0aW9uKSB7XG4gICAgICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuX29mZnNldEZvclJvdGF0aW9uKHRpbGVkSW1hZ2Uudmlld3BvcnQuZGVncmVlcywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRpbGVkSW1hZ2UuX2RyYXdlci5ibGVuZFNrZXRjaCh7XG4gICAgICAgICAgICBvcGFjaXR5OiB0aWxlZEltYWdlLm9wYWNpdHksXG4gICAgICAgICAgICBzY2FsZTogc2tldGNoU2NhbGUsXG4gICAgICAgICAgICB0cmFuc2xhdGU6IHNrZXRjaFRyYW5zbGF0ZSxcbiAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbjogdGlsZWRJbWFnZS5jb21wb3NpdGVPcGVyYXRpb24sXG4gICAgICAgICAgICBib3VuZHM6IGJvdW5kc1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9mZnNldEZvclJvdGF0aW9uKSB7XG4gICAgICAgICAgICB0aWxlZEltYWdlLl9kcmF3ZXIuX3Jlc3RvcmVSb3RhdGlvbkNoYW5nZXMoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRyYXdEZWJ1Z0luZm8oIHRpbGVkSW1hZ2UsIGxhc3REcmF3biApO1xufVxuXG5mdW5jdGlvbiBkcmF3RGVidWdJbmZvKCB0aWxlZEltYWdlLCBsYXN0RHJhd24gKSB7XG4gICAgaWYoIHRpbGVkSW1hZ2UuZGVidWdNb2RlICkge1xuICAgICAgICBmb3IgKCB2YXIgaSA9IGxhc3REcmF3bi5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIHZhciB0aWxlID0gbGFzdERyYXduWyBpIF07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRpbGVkSW1hZ2UuX2RyYXdlci5kcmF3RGVidWdJbmZvKCB0aWxlLCBsYXN0RHJhd24ubGVuZ3RoLCBpICk7XG4gICAgICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICAgICAgICAkLmNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gVGlsZUNhY2hlXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDA5IENvZGVQbGV4IEZvdW5kYXRpb25cbiAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIE9wZW5TZWFkcmFnb24gY29udHJpYnV0b3JzXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlXG4gKiBtZXQ6XG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsXG4gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKlxuICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICogICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gKiAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIENvZGVQbGV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAqICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVFxuICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsXG4gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURURcbiAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1JcbiAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0ZcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVNcbiAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbihmdW5jdGlvbiggJCApe1xuXG4vLyBwcml2YXRlIGNsYXNzXG52YXIgVGlsZVJlY29yZCA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMgaXMgcmVxdWlyZWRcIiApO1xuICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMudGlsZSwgXCJbVGlsZUNhY2hlLmNhY2hlVGlsZV0gb3B0aW9ucy50aWxlIGlzIHJlcXVpcmVkXCIgKTtcbiAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLnRpbGVkSW1hZ2UsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMudGlsZWRJbWFnZSBpcyByZXF1aXJlZFwiICk7XG4gICAgdGhpcy50aWxlID0gb3B0aW9ucy50aWxlO1xuICAgIHRoaXMudGlsZWRJbWFnZSA9IG9wdGlvbnMudGlsZWRJbWFnZTtcbn07XG5cbi8vIHByaXZhdGUgY2xhc3NcbnZhciBJbWFnZVJlY29yZCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLCBcIltJbWFnZVJlY29yZF0gb3B0aW9ucyBpcyByZXF1aXJlZFwiICk7XG4gICAgJC5jb25zb2xlLmFzc2VydCggb3B0aW9ucy5pbWFnZSwgXCJbSW1hZ2VSZWNvcmRdIG9wdGlvbnMuaW1hZ2UgaXMgcmVxdWlyZWRcIiApO1xuICAgIHRoaXMuX2ltYWdlID0gb3B0aW9ucy5pbWFnZTtcbiAgICB0aGlzLl90aWxlcyA9IFtdO1xufTtcblxuSW1hZ2VSZWNvcmQucHJvdG90eXBlID0ge1xuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9pbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVkQ29udGV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMuX3RpbGVzID0gbnVsbDtcbiAgICB9LFxuXG4gICAgZ2V0SW1hZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2U7XG4gICAgfSxcblxuICAgIGdldFJlbmRlcmVkQ29udGV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb250ZXh0KSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2NhbnZhcycgKTtcbiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHRoaXMuX2ltYWdlLndpZHRoO1xuICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IHRoaXMuX2ltYWdlLmhlaWdodDtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVkQ29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZWRDb250ZXh0LmRyYXdJbWFnZSggdGhpcy5faW1hZ2UsIDAsIDAgKTtcbiAgICAgICAgICAgIC8vc2luY2Ugd2UgYXJlIGNhY2hpbmcgdGhlIHByZXJlbmRlcmVkIGltYWdlIG9uIGEgY2FudmFzXG4gICAgICAgICAgICAvL2FsbG93IHRoZSBpbWFnZSB0byBub3QgYmUgaGVsZCBpbiBtZW1vcnlcbiAgICAgICAgICAgIHRoaXMuX2ltYWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZXh0O1xuICAgIH0sXG5cbiAgICBzZXRSZW5kZXJlZENvbnRleHQ6IGZ1bmN0aW9uKHJlbmRlcmVkQ29udGV4dCkge1xuICAgICAgICAkLmNvbnNvbGUuZXJyb3IoXCJJbWFnZVJlY29yZC5zZXRSZW5kZXJlZENvbnRleHQgaXMgZGVwcmVjYXRlZC4gXCIgK1xuICAgICAgICAgICAgICAgIFwiVGhlIHJlbmRlcmVkIGNvbnRleHQgc2hvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIEltYWdlUmVjb3JkIFwiICtcbiAgICAgICAgICAgICAgICBcIml0c2VsZiB3aGVuIGNhbGxpbmcgSW1hZ2VSZWNvcmQuZ2V0UmVuZGVyZWRDb250ZXh0LlwiKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZWRDb250ZXh0ID0gcmVuZGVyZWRDb250ZXh0O1xuICAgIH0sXG5cbiAgICBhZGRUaWxlOiBmdW5jdGlvbih0aWxlKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQodGlsZSwgJ1tJbWFnZVJlY29yZC5hZGRUaWxlXSB0aWxlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIHRoaXMuX3RpbGVzLnB1c2godGlsZSk7XG4gICAgfSxcblxuICAgIHJlbW92ZVRpbGU6IGZ1bmN0aW9uKHRpbGUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl90aWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3RpbGVzW2ldID09PSB0aWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICQuY29uc29sZS53YXJuKCdbSW1hZ2VSZWNvcmQucmVtb3ZlVGlsZV0gdHJ5aW5nIHRvIHJlbW92ZSB1bmtub3duIHRpbGUnLCB0aWxlKTtcbiAgICB9LFxuXG4gICAgZ2V0VGlsZUNvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpbGVzLmxlbmd0aDtcbiAgICB9XG59O1xuXG4vKipcbiAqIEBjbGFzcyBUaWxlQ2FjaGVcbiAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uXG4gKiBAY2xhc3NkZXNjIFN0b3JlcyBhbGwgdGhlIHRpbGVzIGRpc3BsYXllZCBpbiBhIHtAbGluayBPcGVuU2VhZHJhZ29uLlZpZXdlcn0uXG4gKiBZb3UgZ2VuZXJhbGx5IHdvbid0IGhhdmUgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgVGlsZUNhY2hlIGRpcmVjdGx5LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIGZvciB0aGlzIFRpbGVDYWNoZS5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5tYXhJbWFnZUNhY2hlQ291bnRdIC0gU2VlIG1heEltYWdlQ2FjaGVDb3VudCBpblxuICoge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30gZm9yIGRldGFpbHMuXG4gKi9cbiQuVGlsZUNhY2hlID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLl9tYXhJbWFnZUNhY2hlQ291bnQgPSBvcHRpb25zLm1heEltYWdlQ2FjaGVDb3VudCB8fCAkLkRFRkFVTFRfU0VUVElOR1MubWF4SW1hZ2VDYWNoZUNvdW50O1xuICAgIHRoaXMuX3RpbGVzTG9hZGVkID0gW107XG4gICAgdGhpcy5faW1hZ2VzTG9hZGVkID0gW107XG4gICAgdGhpcy5faW1hZ2VzTG9hZGVkQ291bnQgPSAwO1xufTtcblxuLyoqIEBsZW5kcyBPcGVuU2VhZHJhZ29uLlRpbGVDYWNoZS5wcm90b3R5cGUgKi9cbiQuVGlsZUNhY2hlLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgdG90YWwgbnVtYmVyIG9mIHRpbGVzIHRoYXQgaGF2ZSBiZWVuIGxvYWRlZCBieVxuICAgICAqIHRoaXMgVGlsZUNhY2hlLlxuICAgICAqL1xuICAgIG51bVRpbGVzTG9hZGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpbGVzTG9hZGVkLmxlbmd0aDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2FjaGVzIHRoZSBzcGVjaWZpZWQgdGlsZSwgcmVtb3ZpbmcgYW4gb2xkIHRpbGUgaWYgbmVjZXNzYXJ5IHRvIHN0YXkgdW5kZXIgdGhlXG4gICAgICogbWF4SW1hZ2VDYWNoZUNvdW50IHNwZWNpZmllZCBvbiBjb25zdHJ1Y3Rpb24uIE5vdGUgdGhhdCBpZiBtdWx0aXBsZSB0aWxlcyByZWZlcmVuY2VcbiAgICAgKiB0aGUgc2FtZSBpbWFnZSwgdGhlcmUgbWF5IGJlIG1vcmUgdGlsZXMgdGhhbiBtYXhJbWFnZUNhY2hlQ291bnQ7IHRoZSBnb2FsIGlzIHRvIGtlZXBcbiAgICAgKiB0aGUgbnVtYmVyIG9mIGltYWdlcyBiZWxvdyB0aGF0IG51bWJlci4gTm90ZSwgYXMgd2VsbCwgdGhhdCBldmVuIHRoZSBudW1iZXIgb2YgaW1hZ2VzXG4gICAgICogbWF5IHRlbXBvcmFyaWx5IHN1cnBhc3MgdGhhdCBudW1iZXIsIGJ1dCBzaG91bGQgZXZlbnR1YWxseSBjb21lIGJhY2sgZG93biB0byB0aGUgbWF4IHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRpbGUgaW5mby5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVGlsZX0gb3B0aW9ucy50aWxlIC0gVGhlIHRpbGUgdG8gY2FjaGUuXG4gICAgICogQHBhcmFtIHtJbWFnZX0gb3B0aW9ucy5pbWFnZSAtIFRoZSBpbWFnZSBvZiB0aGUgdGlsZSB0byBjYWNoZS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gb3B0aW9ucy50aWxlZEltYWdlIC0gVGhlIFRpbGVkSW1hZ2UgdGhhdCBvd25zIHRoYXQgdGlsZS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuY3V0b2ZmPTBdIC0gSWYgYWRkaW5nIHRoaXMgdGlsZSBnb2VzIG92ZXIgdGhlIGNhY2hlIG1heCBjb3VudCwgdGhpc1xuICAgICAqIGZ1bmN0aW9uIHdpbGwgcmVsZWFzZSBhbiBvbGQgdGlsZS4gVGhlIGN1dG9mZiBvcHRpb24gc3BlY2lmaWVzIGEgdGlsZSBsZXZlbCBhdCBvciBiZWxvdyB3aGljaFxuICAgICAqIHRpbGVzIHdpbGwgbm90IGJlIHJlbGVhc2VkLlxuICAgICAqL1xuICAgIGNhY2hlVGlsZTogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMgaXMgcmVxdWlyZWRcIiApO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLnRpbGUsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMudGlsZSBpcyByZXF1aXJlZFwiICk7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMudGlsZS51cmwsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMudGlsZS51cmwgaXMgcmVxdWlyZWRcIiApO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KCBvcHRpb25zLnRpbGVkSW1hZ2UsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMudGlsZWRJbWFnZSBpcyByZXF1aXJlZFwiICk7XG5cbiAgICAgICAgdmFyIGN1dG9mZiA9IG9wdGlvbnMuY3V0b2ZmIHx8IDA7XG4gICAgICAgIHZhciBpbnNlcnRpb25JbmRleCA9IHRoaXMuX3RpbGVzTG9hZGVkLmxlbmd0aDtcblxuICAgICAgICB2YXIgaW1hZ2VSZWNvcmQgPSB0aGlzLl9pbWFnZXNMb2FkZWRbb3B0aW9ucy50aWxlLnVybF07XG4gICAgICAgIGlmICghaW1hZ2VSZWNvcmQpIHtcbiAgICAgICAgICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMuaW1hZ2UsIFwiW1RpbGVDYWNoZS5jYWNoZVRpbGVdIG9wdGlvbnMuaW1hZ2UgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGFuIEltYWdlUmVjb3JkXCIgKTtcbiAgICAgICAgICAgIGltYWdlUmVjb3JkID0gdGhpcy5faW1hZ2VzTG9hZGVkW29wdGlvbnMudGlsZS51cmxdID0gbmV3IEltYWdlUmVjb3JkKHtcbiAgICAgICAgICAgICAgICBpbWFnZTogb3B0aW9ucy5pbWFnZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2ltYWdlc0xvYWRlZENvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpbWFnZVJlY29yZC5hZGRUaWxlKG9wdGlvbnMudGlsZSk7XG4gICAgICAgIG9wdGlvbnMudGlsZS5jYWNoZUltYWdlUmVjb3JkID0gaW1hZ2VSZWNvcmQ7XG5cbiAgICAgICAgLy8gTm90ZSB0aGF0IGp1c3QgYmVjYXVzZSB3ZSdyZSB1bmxvYWRpbmcgYSB0aWxlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhblxuICAgICAgICAvLyB3ZSdyZSB1bmxvYWRpbmcgYW4gaW1hZ2UuIFdpdGggcmVwZWF0ZWQgY2FsbHMgaXQgc2hvdWxkIHNvcnQgaXRzZWxmIG91dCwgdGhvdWdoLlxuICAgICAgICBpZiAoIHRoaXMuX2ltYWdlc0xvYWRlZENvdW50ID4gdGhpcy5fbWF4SW1hZ2VDYWNoZUNvdW50ICkge1xuICAgICAgICAgICAgdmFyIHdvcnN0VGlsZSAgICAgICA9IG51bGw7XG4gICAgICAgICAgICB2YXIgd29yc3RUaWxlSW5kZXggID0gLTE7XG4gICAgICAgICAgICB2YXIgd29yc3RUaWxlUmVjb3JkID0gbnVsbDtcbiAgICAgICAgICAgIHZhciBwcmV2VGlsZSwgd29yc3RUaW1lLCB3b3JzdExldmVsLCBwcmV2VGltZSwgcHJldkxldmVsLCBwcmV2VGlsZVJlY29yZDtcblxuICAgICAgICAgICAgZm9yICggdmFyIGkgPSB0aGlzLl90aWxlc0xvYWRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgICAgICBwcmV2VGlsZVJlY29yZCA9IHRoaXMuX3RpbGVzTG9hZGVkWyBpIF07XG4gICAgICAgICAgICAgICAgcHJldlRpbGUgPSBwcmV2VGlsZVJlY29yZC50aWxlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2VGlsZS5sZXZlbCA8PSBjdXRvZmYgfHwgcHJldlRpbGUuYmVpbmdEcmF3biApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggIXdvcnN0VGlsZSApIHtcbiAgICAgICAgICAgICAgICAgICAgd29yc3RUaWxlICAgICAgID0gcHJldlRpbGU7XG4gICAgICAgICAgICAgICAgICAgIHdvcnN0VGlsZUluZGV4ICA9IGk7XG4gICAgICAgICAgICAgICAgICAgIHdvcnN0VGlsZVJlY29yZCA9IHByZXZUaWxlUmVjb3JkO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcmV2VGltZSAgICA9IHByZXZUaWxlLmxhc3RUb3VjaFRpbWU7XG4gICAgICAgICAgICAgICAgd29yc3RUaW1lICAgPSB3b3JzdFRpbGUubGFzdFRvdWNoVGltZTtcbiAgICAgICAgICAgICAgICBwcmV2TGV2ZWwgICA9IHByZXZUaWxlLmxldmVsO1xuICAgICAgICAgICAgICAgIHdvcnN0TGV2ZWwgID0gd29yc3RUaWxlLmxldmVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2VGltZSA8IHdvcnN0VGltZSB8fFxuICAgICAgICAgICAgICAgICAgICggcHJldlRpbWUgPT0gd29yc3RUaW1lICYmIHByZXZMZXZlbCA+IHdvcnN0TGV2ZWwgKSApIHtcbiAgICAgICAgICAgICAgICAgICAgd29yc3RUaWxlICAgICAgID0gcHJldlRpbGU7XG4gICAgICAgICAgICAgICAgICAgIHdvcnN0VGlsZUluZGV4ICA9IGk7XG4gICAgICAgICAgICAgICAgICAgIHdvcnN0VGlsZVJlY29yZCA9IHByZXZUaWxlUmVjb3JkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB3b3JzdFRpbGUgJiYgd29yc3RUaWxlSW5kZXggPj0gMCApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmxvYWRUaWxlKHdvcnN0VGlsZVJlY29yZCk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0aW9uSW5kZXggPSB3b3JzdFRpbGVJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RpbGVzTG9hZGVkWyBpbnNlcnRpb25JbmRleCBdID0gbmV3IFRpbGVSZWNvcmQoe1xuICAgICAgICAgICAgdGlsZTogb3B0aW9ucy50aWxlLFxuICAgICAgICAgICAgdGlsZWRJbWFnZTogb3B0aW9ucy50aWxlZEltYWdlXG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgYWxsIHRpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHRpbGVkSW1hZ2UuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2V9IHRpbGVkSW1hZ2VcbiAgICAgKi9cbiAgICBjbGVhclRpbGVzRm9yOiBmdW5jdGlvbiggdGlsZWRJbWFnZSApIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCh0aWxlZEltYWdlLCAnW1RpbGVDYWNoZS5jbGVhclRpbGVzRm9yXSB0aWxlZEltYWdlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIHZhciB0aWxlUmVjb3JkO1xuICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLl90aWxlc0xvYWRlZC5sZW5ndGg7ICsraSApIHtcbiAgICAgICAgICAgIHRpbGVSZWNvcmQgPSB0aGlzLl90aWxlc0xvYWRlZFsgaSBdO1xuICAgICAgICAgICAgaWYgKCB0aWxlUmVjb3JkLnRpbGVkSW1hZ2UgPT09IHRpbGVkSW1hZ2UgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW5sb2FkVGlsZSh0aWxlUmVjb3JkKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc0xvYWRlZC5zcGxpY2UoIGksIDEgKTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gcHJpdmF0ZVxuICAgIGdldEltYWdlUmVjb3JkOiBmdW5jdGlvbih1cmwpIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCh1cmwsICdbVGlsZUNhY2hlLmdldEltYWdlUmVjb3JkXSB1cmwgaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlc0xvYWRlZFt1cmxdO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX3VubG9hZFRpbGU6IGZ1bmN0aW9uKHRpbGVSZWNvcmQpIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydCh0aWxlUmVjb3JkLCAnW1RpbGVDYWNoZS5fdW5sb2FkVGlsZV0gdGlsZVJlY29yZCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB2YXIgdGlsZSA9IHRpbGVSZWNvcmQudGlsZTtcbiAgICAgICAgdmFyIHRpbGVkSW1hZ2UgPSB0aWxlUmVjb3JkLnRpbGVkSW1hZ2U7XG5cbiAgICAgICAgdGlsZS51bmxvYWQoKTtcbiAgICAgICAgdGlsZS5jYWNoZUltYWdlUmVjb3JkID0gbnVsbDtcblxuICAgICAgICB2YXIgaW1hZ2VSZWNvcmQgPSB0aGlzLl9pbWFnZXNMb2FkZWRbdGlsZS51cmxdO1xuICAgICAgICBpbWFnZVJlY29yZC5yZW1vdmVUaWxlKHRpbGUpO1xuICAgICAgICBpZiAoIWltYWdlUmVjb3JkLmdldFRpbGVDb3VudCgpKSB7XG4gICAgICAgICAgICBpbWFnZVJlY29yZC5kZXN0cm95KCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5faW1hZ2VzTG9hZGVkW3RpbGUudXJsXTtcbiAgICAgICAgICAgIHRoaXMuX2ltYWdlc0xvYWRlZENvdW50LS07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogVHJpZ2dlcmVkIHdoZW4gYSB0aWxlIGhhcyBqdXN0IGJlZW4gdW5sb2FkZWQgZnJvbSBtZW1vcnkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBldmVudCB0aWxlLXVubG9hZGVkXG4gICAgICAgICAqIEBtZW1iZXJvZiBPcGVuU2VhZHJhZ29uLlZpZXdlclxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gdGlsZWRJbWFnZSAtIFRoZSB0aWxlZCBpbWFnZSBvZiB0aGUgdW5sb2FkZWQgdGlsZS5cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGV9IHRpbGUgLSBUaGUgdGlsZSB3aGljaCBoYXMgYmVlbiB1bmxvYWRlZC5cbiAgICAgICAgICovXG4gICAgICAgIHRpbGVkSW1hZ2Uudmlld2VyLnJhaXNlRXZlbnQoXCJ0aWxlLXVubG9hZGVkXCIsIHtcbiAgICAgICAgICAgIHRpbGU6IHRpbGUsXG4gICAgICAgICAgICB0aWxlZEltYWdlOiB0aWxlZEltYWdlXG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbn0oIE9wZW5TZWFkcmFnb24gKSk7XG5cbi8qXG4gKiBPcGVuU2VhZHJhZ29uIC0gV29ybGRcbiAqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQ29kZVBsZXggRm91bmRhdGlvblxuICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMgT3BlblNlYWRyYWdvbiBjb250cmlidXRvcnNcbiAqXG4gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAqIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgQ29kZVBsZXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0c1xuICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbVxuICogICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlNcbiAqIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUlxuICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRFxuICogVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkdcbiAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxuKGZ1bmN0aW9uKCAkICl7XG5cbi8qKlxuICogQGNsYXNzIFdvcmxkXG4gKiBAbWVtYmVyb2YgT3BlblNlYWRyYWdvblxuICogQGV4dGVuZHMgT3BlblNlYWRyYWdvbi5FdmVudFNvdXJjZVxuICogQGNsYXNzZGVzYyBLZWVwcyB0cmFjayBvZiBhbGwgb2YgdGhlIHRpbGVkIGltYWdlcyBpbiB0aGUgc2NlbmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFdvcmxkIG9wdGlvbnMuXG4gKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVmlld2VyfSBvcHRpb25zLnZpZXdlciAtIFRoZSBWaWV3ZXIgdGhhdCBvd25zIHRoaXMgV29ybGQuXG4gKiovXG4kLldvcmxkID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICQuY29uc29sZS5hc3NlcnQoIG9wdGlvbnMudmlld2VyLCBcIltXb3JsZF0gb3B0aW9ucy52aWV3ZXIgaXMgcmVxdWlyZWRcIiApO1xuXG4gICAgJC5FdmVudFNvdXJjZS5jYWxsKCB0aGlzICk7XG5cbiAgICB0aGlzLnZpZXdlciA9IG9wdGlvbnMudmlld2VyO1xuICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgdGhpcy5fbmVlZHNEcmF3ID0gZmFsc2U7XG4gICAgdGhpcy5fYXV0b1JlZmlndXJlU2l6ZXMgPSB0cnVlO1xuICAgIHRoaXMuX25lZWRzU2l6ZXNGaWd1cmVkID0gZmFsc2U7XG4gICAgdGhpcy5fZGVsZWdhdGVkRmlndXJlU2l6ZXMgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICBpZiAoX3RoaXMuX2F1dG9SZWZpZ3VyZVNpemVzKSB7XG4gICAgICAgICAgICBfdGhpcy5fZmlndXJlU2l6ZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLl9uZWVkc1NpemVzRmlndXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fZmlndXJlU2l6ZXMoKTtcbn07XG5cbiQuZXh0ZW5kKCAkLldvcmxkLnByb3RvdHlwZSwgJC5FdmVudFNvdXJjZS5wcm90b3R5cGUsIC8qKiBAbGVuZHMgT3BlblNlYWRyYWdvbi5Xb3JsZC5wcm90b3R5cGUgKi97XG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBzcGVjaWZpZWQgaXRlbS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gaXRlbSAtIFRoZSBpdGVtIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMuaW5kZXhdIC0gSW5kZXggZm9yIHRoZSBpdGVtLiBJZiBub3Qgc3BlY2lmaWVkLCBnb2VzIGF0IHRoZSB0b3AuXG4gICAgICogQGZpcmVzIE9wZW5TZWFkcmFnb24uV29ybGQuZXZlbnQ6YWRkLWl0ZW1cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5Xb3JsZC5ldmVudDptZXRyaWNzLWNoYW5nZVxuICAgICAqL1xuICAgIGFkZEl0ZW06IGZ1bmN0aW9uKCBpdGVtLCBvcHRpb25zICkge1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGl0ZW0sIFwiW1dvcmxkLmFkZEl0ZW1dIGl0ZW0gaXMgcmVxdWlyZWRcIik7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoaXRlbSBpbnN0YW5jZW9mICQuVGlsZWRJbWFnZSwgXCJbV29ybGQuYWRkSXRlbV0gb25seSBUaWxlZEltYWdlcyBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lXCIpO1xuXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAob3B0aW9ucy5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0aGlzLl9pdGVtcy5sZW5ndGgsIG9wdGlvbnMuaW5kZXgpKTtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKCBpdGVtICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fYXV0b1JlZmlndXJlU2l6ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZ3VyZVNpemVzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZWVkc1NpemVzRmlndXJlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9uZWVkc0RyYXcgPSB0cnVlO1xuXG4gICAgICAgIGl0ZW0uYWRkSGFuZGxlcignYm91bmRzLWNoYW5nZScsIHRoaXMuX2RlbGVnYXRlZEZpZ3VyZVNpemVzKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmFpc2VkIHdoZW4gYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUgV29ybGQuXG4gICAgICAgICAqIEBldmVudCBhZGQtaXRlbVxuICAgICAgICAgKiBAbWVtYmVyT2YgT3BlblNlYWRyYWdvbi5Xb3JsZFxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVmlld2VyfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBXb3JsZCB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gaXRlbSAtIFRoZSBpdGVtIHRoYXQgaGFzIGJlZW4gYWRkZWQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ2FkZC1pdGVtJywge1xuICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICB9ICk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgaXRlbSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBpbmRleCAtIFRoZSBpdGVtJ3MgaW5kZXguXG4gICAgICogQHJldHVybnMge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gVGhlIGl0ZW0gYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKi9cbiAgICBnZXRJdGVtQXQ6IGZ1bmN0aW9uKCBpbmRleCApIHtcbiAgICAgICAgJC5jb25zb2xlLmFzc2VydChpbmRleCAhPT0gdW5kZWZpbmVkLCBcIltXb3JsZC5nZXRJdGVtQXRdIGluZGV4IGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNbIGluZGV4IF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIGl0ZW0gb3IgLTEgaWYgbm90IHByZXNlbnQuXG4gICAgICogQHBhcmFtIHtPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2V9IGl0ZW0gLSBUaGUgaXRlbS5cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgaW5kZXggb2YgdGhlIGl0ZW0gb3IgLTEgaWYgbm90IHByZXNlbnQuXG4gICAgICovXG4gICAgZ2V0SW5kZXhPZkl0ZW06IGZ1bmN0aW9uKCBpdGVtICkge1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGl0ZW0sIFwiW1dvcmxkLmdldEluZGV4T2ZJdGVtXSBpdGVtIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICByZXR1cm4gJC5pbmRleE9mKCB0aGlzLl9pdGVtcywgaXRlbSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtYmVyIG9mIGl0ZW1zIHVzZWQuXG4gICAgICovXG4gICAgZ2V0SXRlbUNvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBpbmRleCBvZiBhIGl0ZW0gc28gdGhhdCBpdCBhcHBlYXJzIG92ZXIgb3IgdW5kZXIgb3RoZXJzLlxuICAgICAqIEBwYXJhbSB7T3BlblNlYWRyYWdvbi5UaWxlZEltYWdlfSBpdGVtIC0gVGhlIGl0ZW0gdG8gbW92ZS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaW5kZXggLSBUaGUgbmV3IGluZGV4LlxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLldvcmxkLmV2ZW50Oml0ZW0taW5kZXgtY2hhbmdlXG4gICAgICovXG4gICAgc2V0SXRlbUluZGV4OiBmdW5jdGlvbiggaXRlbSwgaW5kZXggKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoaXRlbSwgXCJbV29ybGQuc2V0SXRlbUluZGV4XSBpdGVtIGlzIHJlcXVpcmVkXCIpO1xuICAgICAgICAkLmNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSB1bmRlZmluZWQsIFwiW1dvcmxkLnNldEl0ZW1JbmRleF0gaW5kZXggaXMgcmVxdWlyZWRcIik7XG5cbiAgICAgICAgdmFyIG9sZEluZGV4ID0gdGhpcy5nZXRJbmRleE9mSXRlbSggaXRlbSApO1xuXG4gICAgICAgIGlmICggaW5kZXggPj0gdGhpcy5faXRlbXMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCBcIkluZGV4IGJpZ2dlciB0aGFuIG51bWJlciBvZiBsYXllcnMuXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggaW5kZXggPT09IG9sZEluZGV4IHx8IG9sZEluZGV4ID09PSAtMSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZSggb2xkSW5kZXgsIDEgKTtcbiAgICAgICAgdGhpcy5faXRlbXMuc3BsaWNlKCBpbmRleCwgMCwgaXRlbSApO1xuICAgICAgICB0aGlzLl9uZWVkc0RyYXcgPSB0cnVlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiB0aGUgb3JkZXIgb2YgdGhlIGluZGV4ZXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgICAgICogQGV2ZW50IGl0ZW0taW5kZXgtY2hhbmdlXG4gICAgICAgICAqIEBtZW1iZXJPZiBPcGVuU2VhZHJhZ29uLldvcmxkXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5Xb3JsZH0gZXZlbnRTb3VyY2UgLSBBIHJlZmVyZW5jZSB0byB0aGUgV29ybGQgd2hpY2ggcmFpc2VkIHRoZSBldmVudC5cbiAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLlRpbGVkSW1hZ2V9IGl0ZW0gLSBUaGUgaXRlbSB3aG9zZSBpbmRleCBoYXNcbiAgICAgICAgICogYmVlbiBjaGFuZ2VkXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwcmV2aW91c0luZGV4IC0gVGhlIHByZXZpb3VzIGluZGV4IG9mIHRoZSBpdGVtXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBuZXdJbmRleCAtIFRoZSBuZXcgaW5kZXggb2YgdGhlIGl0ZW1cbiAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yYWlzZUV2ZW50KCAnaXRlbS1pbmRleC1jaGFuZ2UnLCB7XG4gICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgcHJldmlvdXNJbmRleDogb2xkSW5kZXgsXG4gICAgICAgICAgICBuZXdJbmRleDogaW5kZXhcbiAgICAgICAgfSApO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gaXRlbS5cbiAgICAgKiBAcGFyYW0ge09wZW5TZWFkcmFnb24uVGlsZWRJbWFnZX0gaXRlbSAtIFRoZSBpdGVtIHRvIHJlbW92ZS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5Xb3JsZC5ldmVudDpyZW1vdmUtaXRlbVxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLldvcmxkLmV2ZW50Om1ldHJpY3MtY2hhbmdlXG4gICAgICovXG4gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oIGl0ZW0gKSB7XG4gICAgICAgICQuY29uc29sZS5hc3NlcnQoaXRlbSwgXCJbV29ybGQucmVtb3ZlSXRlbV0gaXRlbSBpcyByZXF1aXJlZFwiKTtcblxuICAgICAgICB2YXIgaW5kZXggPSAkLmluZGV4T2YodGhpcy5faXRlbXMsIGl0ZW0gKTtcbiAgICAgICAgaWYgKCBpbmRleCA9PT0gLTEgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnJlbW92ZUhhbmRsZXIoJ2JvdW5kcy1jaGFuZ2UnLCB0aGlzLl9kZWxlZ2F0ZWRGaWd1cmVTaXplcyk7XG4gICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9pdGVtcy5zcGxpY2UoIGluZGV4LCAxICk7XG4gICAgICAgIHRoaXMuX2ZpZ3VyZVNpemVzKCk7XG4gICAgICAgIHRoaXMuX25lZWRzRHJhdyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3JhaXNlUmVtb3ZlSXRlbShpdGVtKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGFsbCBpdGVtcy5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5Xb3JsZC5ldmVudDpyZW1vdmUtaXRlbVxuICAgICAqIEBmaXJlcyBPcGVuU2VhZHJhZ29uLldvcmxkLmV2ZW50Om1ldHJpY3MtY2hhbmdlXG4gICAgICovXG4gICAgcmVtb3ZlQWxsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgYW55IHBlbmRpbmcgaW1hZ2VzIGFyZSBjYW5jZWxlZCBzbyB0aGUgd29ybGQgaXRlbXMgZG9uJ3QgZ2V0IG1lc3NlZCB1cFxuICAgICAgICB0aGlzLnZpZXdlci5fY2FuY2VsUGVuZGluZ0ltYWdlcygpO1xuICAgICAgICB2YXIgaXRlbTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2l0ZW1zW2ldO1xuICAgICAgICAgICAgaXRlbS5yZW1vdmVIYW5kbGVyKCdib3VuZHMtY2hhbmdlJywgdGhpcy5fZGVsZWdhdGVkRmlndXJlU2l6ZXMpO1xuICAgICAgICAgICAgaXRlbS5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVtb3ZlZEl0ZW1zID0gdGhpcy5faXRlbXM7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgICAgIHRoaXMuX2ZpZ3VyZVNpemVzKCk7XG4gICAgICAgIHRoaXMuX25lZWRzRHJhdyA9IHRydWU7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlbW92ZWRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaXRlbSA9IHJlbW92ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgIHRoaXMuX3JhaXNlUmVtb3ZlSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgYWxsIHRpbGVzIGFuZCB0cmlnZ2VycyB1cGRhdGVzIGZvciBhbGwgaXRlbXMuXG4gICAgICovXG4gICAgcmVzZXRJdGVtczogZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNbaV0ucmVzZXQoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIChpLmUuIGFuaW1hdGVzIGJvdW5kcyBvZikgYWxsIGl0ZW1zLlxuICAgICAqL1xuICAgIHVwZGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhbmltYXRlZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGFuaW1hdGVkID0gdGhpcy5faXRlbXNbaV0udXBkYXRlKCkgfHwgYW5pbWF0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5pbWF0ZWQ7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERyYXdzIGFsbCBpdGVtcy5cbiAgICAgKi9cbiAgICBkcmF3OiBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtc1tpXS5kcmF3KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9uZWVkc0RyYXcgPSBmYWxzZTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgYW55IGl0ZW1zIG5lZWQgdXBkYXRpbmcuXG4gICAgICovXG4gICAgbmVlZHNEcmF3OiBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuX2l0ZW1zW2ldLm5lZWRzRHJhdygpICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9uZWVkc0RyYXc7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtPcGVuU2VhZHJhZ29uLlJlY3R9IFRoZSBzbWFsbGVzdCByZWN0YW5nbGUgdGhhdCBlbmNsb3NlcyBhbGwgaXRlbXMsIGluIHZpZXdwb3J0IGNvb3JkaW5hdGVzLlxuICAgICAqL1xuICAgIGdldEhvbWVCb3VuZHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faG9tZUJvdW5kcy5jbG9uZSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBUbyBmYWNpbGl0YXRlIHpvb20gY29uc3RyYWludHMsIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHBpeGVsIGRlbnNpdHkgb2YgdGhlXG4gICAgICogZGVuc2VzdCBpdGVtIGluIHRoZSBXb3JsZCAoaS5lLiB0aGUgaXRlbSB3aG9zZSBjb250ZW50IHNpemUgdG8gdmlld3BvcnQgc2l6ZVxuICAgICAqIHJhdGlvIGlzIHRoZSBoaWdoZXN0KSBhbmQgc2F2ZSBpdCBhcyB0aGlzIFwiY29udGVudCBmYWN0b3JcIi5cbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfSB0aGUgbnVtYmVyIG9mIGNvbnRlbnQgdW5pdHMgcGVyIHZpZXdwb3J0IHVuaXQuXG4gICAgICovXG4gICAgZ2V0Q29udGVudEZhY3RvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RmFjdG9yO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc2V0dGluZyB0aGlzIGZsYWcgdG8gZmFsc2UgYWxsb3dzIHRoZSBib3VuZHMtY2hhbmdlIGV2ZW50IGhhbmRsZXJcbiAgICAgKiBvbiB0aWxlZEltYWdlcyB0byBza2lwIGNhbGN1bGF0aW9ucyBvbiB0aGUgd29ybGQgYm91bmRzLiBJZiBhIGxvdCBvZiBpbWFnZXMgYXJlIGdvaW5nIHRvIGJlIHBvc2l0aW9uZWQgaW5cbiAgICAgKiByYXBpZCBzdWNjZXNzaW9uLCB0aGlzIGlzIGEgZ29vZCBpZGVhLiBXaGVuIGZpbmlzaGVkLCBzZXRBdXRvUmVmaWd1cmVTaXplcyBzaG91bGQgYmUgY2FsbGVkIHdpdGggdHJ1ZVxuICAgICAqIG9yIHRoZSBzeXN0ZW0gbWF5IGJlaGF2ZSBvZGRseS5cbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IFt2YWx1ZV0gVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgZmxhZy5cbiAgICAgKi9cbiAgICBzZXRBdXRvUmVmaWd1cmVTaXplczogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYXV0b1JlZmlndXJlU2l6ZXMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYgdGhpcy5fbmVlZHNTaXplc0ZpZ3VyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZ3VyZVNpemVzKCk7XG4gICAgICAgICAgICB0aGlzLl9uZWVkc1NpemVzRmlndXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFycmFuZ2VzIGFsbCBvZiB0aGUgVGlsZWRJbWFnZXMgd2l0aCB0aGUgc3BlY2lmaWVkIHNldHRpbmdzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gU3BlY2lmaWVzIGhvdyB0byBhcnJhbmdlLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuaW1tZWRpYXRlbHk9ZmFsc2VdIC0gV2hldGhlciB0byBhbmltYXRlIHRvIHRoZSBuZXcgYXJyYW5nZW1lbnQuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmxheW91dF0gLSBTZWUgY29sbGVjdGlvbkxheW91dCBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMucm93c10gLSBTZWUgY29sbGVjdGlvblJvd3MgaW4ge0BsaW5rIE9wZW5TZWFkcmFnb24uT3B0aW9uc30uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLmNvbHVtbnNdIC0gU2VlIGNvbGxlY3Rpb25Db2x1bW5zIGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy50aWxlU2l6ZV0gLSBTZWUgY29sbGVjdGlvblRpbGVTaXplIGluIHtAbGluayBPcGVuU2VhZHJhZ29uLk9wdGlvbnN9LlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy50aWxlTWFyZ2luXSAtIFNlZSBjb2xsZWN0aW9uVGlsZU1hcmdpbiBpbiB7QGxpbmsgT3BlblNlYWRyYWdvbi5PcHRpb25zfS5cbiAgICAgKiBAZmlyZXMgT3BlblNlYWRyYWdvbi5Xb3JsZC5ldmVudDptZXRyaWNzLWNoYW5nZVxuICAgICAqL1xuICAgIGFycmFuZ2U6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIHZhciBpbW1lZGlhdGVseSA9IG9wdGlvbnMuaW1tZWRpYXRlbHkgfHwgZmFsc2U7XG4gICAgICAgIHZhciBsYXlvdXQgPSBvcHRpb25zLmxheW91dCB8fCAkLkRFRkFVTFRfU0VUVElOR1MuY29sbGVjdGlvbkxheW91dDtcbiAgICAgICAgdmFyIHJvd3MgPSBvcHRpb25zLnJvd3MgfHwgJC5ERUZBVUxUX1NFVFRJTkdTLmNvbGxlY3Rpb25Sb3dzO1xuICAgICAgICB2YXIgY29sdW1ucyA9IG9wdGlvbnMuY29sdW1ucyB8fCAkLkRFRkFVTFRfU0VUVElOR1MuY29sbGVjdGlvbkNvbHVtbnM7XG4gICAgICAgIHZhciB0aWxlU2l6ZSA9IG9wdGlvbnMudGlsZVNpemUgfHwgJC5ERUZBVUxUX1NFVFRJTkdTLmNvbGxlY3Rpb25UaWxlU2l6ZTtcbiAgICAgICAgdmFyIHRpbGVNYXJnaW4gPSBvcHRpb25zLnRpbGVNYXJnaW4gfHwgJC5ERUZBVUxUX1NFVFRJTkdTLmNvbGxlY3Rpb25UaWxlTWFyZ2luO1xuICAgICAgICB2YXIgaW5jcmVtZW50ID0gdGlsZVNpemUgKyB0aWxlTWFyZ2luO1xuICAgICAgICB2YXIgd3JhcDtcbiAgICAgICAgaWYgKCFvcHRpb25zLnJvd3MgJiYgY29sdW1ucykge1xuICAgICAgICAgICAgd3JhcCA9IGNvbHVtbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwID0gTWF0aC5jZWlsKHRoaXMuX2l0ZW1zLmxlbmd0aCAvIHJvd3MpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4ID0gMDtcbiAgICAgICAgdmFyIHkgPSAwO1xuICAgICAgICB2YXIgaXRlbSwgYm94LCB3aWR0aCwgaGVpZ2h0LCBwb3NpdGlvbjtcblxuICAgICAgICB0aGlzLnNldEF1dG9SZWZpZ3VyZVNpemVzKGZhbHNlKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgJiYgKGkgJSB3cmFwKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgICAgICB5ICs9IGluY3JlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgeCA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeCArPSBpbmNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2l0ZW1zW2ldO1xuICAgICAgICAgICAgYm94ID0gaXRlbS5nZXRCb3VuZHMoKTtcbiAgICAgICAgICAgIGlmIChib3gud2lkdGggPiBib3guaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZSAqIChib3gud2lkdGggLyBib3guaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGVpZ2h0ID0gd2lkdGggKiAoYm94LmhlaWdodCAvIGJveC53aWR0aCk7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IG5ldyAkLlBvaW50KHggKyAoKHRpbGVTaXplIC0gd2lkdGgpIC8gMiksXG4gICAgICAgICAgICAgICAgeSArICgodGlsZVNpemUgLSBoZWlnaHQpIC8gMikpO1xuXG4gICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKHBvc2l0aW9uLCBpbW1lZGlhdGVseSk7XG4gICAgICAgICAgICBpdGVtLnNldFdpZHRoKHdpZHRoLCBpbW1lZGlhdGVseSk7XG5cbiAgICAgICAgICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgIHggKz0gaW5jcmVtZW50O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB5ICs9IGluY3JlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEF1dG9SZWZpZ3VyZVNpemVzKHRydWUpO1xuICAgIH0sXG5cbiAgICAvLyBwcml2YXRlXG4gICAgX2ZpZ3VyZVNpemVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9sZEhvbWVCb3VuZHMgPSB0aGlzLl9ob21lQm91bmRzID8gdGhpcy5faG9tZUJvdW5kcy5jbG9uZSgpIDogbnVsbDtcbiAgICAgICAgdmFyIG9sZENvbnRlbnRTaXplID0gdGhpcy5fY29udGVudFNpemUgPyB0aGlzLl9jb250ZW50U2l6ZS5jbG9uZSgpIDogbnVsbDtcbiAgICAgICAgdmFyIG9sZENvbnRlbnRGYWN0b3IgPSB0aGlzLl9jb250ZW50RmFjdG9yIHx8IDA7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2hvbWVCb3VuZHMgPSBuZXcgJC5SZWN0KDAsIDAsIDEsIDEpO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudFNpemUgPSBuZXcgJC5Qb2ludCgxLCAxKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRGYWN0b3IgPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1swXTtcbiAgICAgICAgICAgIHZhciBib3VuZHMgPSBpdGVtLmdldEJvdW5kcygpO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudEZhY3RvciA9IGl0ZW0uZ2V0Q29udGVudFNpemUoKS54IC8gYm91bmRzLndpZHRoO1xuICAgICAgICAgICAgdmFyIGNsaXBwZWRCb3VuZHMgPSBpdGVtLmdldENsaXBwZWRCb3VuZHMoKTtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gY2xpcHBlZEJvdW5kcy54O1xuICAgICAgICAgICAgdmFyIHRvcCA9IGNsaXBwZWRCb3VuZHMueTtcbiAgICAgICAgICAgIHZhciByaWdodCA9IGNsaXBwZWRCb3VuZHMueCArIGNsaXBwZWRCb3VuZHMud2lkdGg7XG4gICAgICAgICAgICB2YXIgYm90dG9tID0gY2xpcHBlZEJvdW5kcy55ICsgY2xpcHBlZEJvdW5kcy5oZWlnaHQ7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuX2l0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGJvdW5kcyA9IGl0ZW0uZ2V0Qm91bmRzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudEZhY3RvciA9IE1hdGgubWF4KHRoaXMuX2NvbnRlbnRGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZ2V0Q29udGVudFNpemUoKS54IC8gYm91bmRzLndpZHRoKTtcbiAgICAgICAgICAgICAgICBjbGlwcGVkQm91bmRzID0gaXRlbS5nZXRDbGlwcGVkQm91bmRzKCk7XG4gICAgICAgICAgICAgICAgbGVmdCA9IE1hdGgubWluKGxlZnQsIGNsaXBwZWRCb3VuZHMueCk7XG4gICAgICAgICAgICAgICAgdG9wID0gTWF0aC5taW4odG9wLCBjbGlwcGVkQm91bmRzLnkpO1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gTWF0aC5tYXgocmlnaHQsIGNsaXBwZWRCb3VuZHMueCArIGNsaXBwZWRCb3VuZHMud2lkdGgpO1xuICAgICAgICAgICAgICAgIGJvdHRvbSA9IE1hdGgubWF4KGJvdHRvbSwgY2xpcHBlZEJvdW5kcy55ICsgY2xpcHBlZEJvdW5kcy5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9ob21lQm91bmRzID0gbmV3ICQuUmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9wKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRTaXplID0gbmV3ICQuUG9pbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5faG9tZUJvdW5kcy53aWR0aCAqIHRoaXMuX2NvbnRlbnRGYWN0b3IsXG4gICAgICAgICAgICAgICAgdGhpcy5faG9tZUJvdW5kcy5oZWlnaHQgKiB0aGlzLl9jb250ZW50RmFjdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jb250ZW50RmFjdG9yICE9PSBvbGRDb250ZW50RmFjdG9yIHx8XG4gICAgICAgICAgICAhdGhpcy5faG9tZUJvdW5kcy5lcXVhbHMob2xkSG9tZUJvdW5kcykgfHxcbiAgICAgICAgICAgICF0aGlzLl9jb250ZW50U2l6ZS5lcXVhbHMob2xkQ29udGVudFNpemUpKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJhaXNlZCB3aGVuIHRoZSBob21lIGJvdW5kcyBvciBjb250ZW50IGZhY3RvciBjaGFuZ2UuXG4gICAgICAgICAgICAgKiBAZXZlbnQgbWV0cmljcy1jaGFuZ2VcbiAgICAgICAgICAgICAqIEBtZW1iZXJPZiBPcGVuU2VhZHJhZ29uLldvcmxkXG4gICAgICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgICAgICogQHByb3BlcnR5IHtPcGVuU2VhZHJhZ29uLldvcmxkfSBldmVudFNvdXJjZSAtIEEgcmVmZXJlbmNlIHRvIHRoZSBXb3JsZCB3aGljaCByYWlzZWQgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICogQHByb3BlcnR5IHs/T2JqZWN0fSB1c2VyRGF0YSAtIEFyYml0cmFyeSBzdWJzY3JpYmVyLWRlZmluZWQgb2JqZWN0LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnJhaXNlRXZlbnQoJ21ldHJpY3MtY2hhbmdlJywge30pO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIHByaXZhdGVcbiAgICBfcmFpc2VSZW1vdmVJdGVtOiBmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSYWlzZWQgd2hlbiBhbiBpdGVtIGlzIHJlbW92ZWQuXG4gICAgICAgICAqIEBldmVudCByZW1vdmUtaXRlbVxuICAgICAgICAgKiBAbWVtYmVyT2YgT3BlblNlYWRyYWdvbi5Xb3JsZFxuICAgICAgICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgICAgICAgKiBAcHJvcGVydHkge09wZW5TZWFkcmFnb24uV29ybGR9IGV2ZW50U291cmNlIC0gQSByZWZlcmVuY2UgdG8gdGhlIFdvcmxkIHdoaWNoIHJhaXNlZCB0aGUgZXZlbnQuXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7T3BlblNlYWRyYWdvbi5UaWxlZEltYWdlfSBpdGVtIC0gVGhlIGl0ZW0ncyB1bmRlcmx5aW5nIGl0ZW0uXG4gICAgICAgICAqIEBwcm9wZXJ0eSB7P09iamVjdH0gdXNlckRhdGEgLSBBcmJpdHJhcnkgc3Vic2NyaWJlci1kZWZpbmVkIG9iamVjdC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucmFpc2VFdmVudCggJ3JlbW92ZS1pdGVtJywgeyBpdGVtOiBpdGVtIH0gKTtcbiAgICB9XG59KTtcblxufSggT3BlblNlYWRyYWdvbiApKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3BlbnNlYWRyYWdvbi5qcy5tYXAiLCIvKipcbiAqIEFsbG93cyBhcHBsaWNhdGlvbiB0byBhY2Nlc3MgYW5kIHVwZGF0ZSBjdXJyZW50IGFwcCBzdGF0ZSB2aWEgcXVlcnkgc3RyaW5nXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gcXVlcnlTdGF0ZTtcblxudmFyIGV2ZW50aWZ5ID0gcmVxdWlyZSgnbmdyYXBoLmV2ZW50cycpO1xudmFyIHdpbmRvd0hhc2hIaXN0b3J5ID0gcmVxdWlyZSgnLi9saWIvd2luZG93SGFzaEhpc3RvcnkuanMnKTtcblxuLyoqXG4gKiBKdXN0IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBhIHF1ZXJ5IHN0YXRlXG4gKi9cbnF1ZXJ5U3RhdGUuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuLy8gdGhpcyB2YXJpYWJsZSBob2xkcyBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHF1ZXJ5IHN0YXRlXG52YXIgc2luZ2xldG9uUVM7XG5cbi8qKlxuICogQ3JlYXRlcyBuZXcgaW5zdGFuY2Ugb2YgdGhlIHF1ZXJ5IHN0YXRlLlxuICovXG5mdW5jdGlvbiBxdWVyeVN0YXRlKGRlZmF1bHRzLCBoaXN0b3J5KSB7XG4gIGhpc3RvcnkgPSBoaXN0b3J5IHx8IHdpbmRvd0hhc2hIaXN0b3J5KGRlZmF1bHRzKTtcbiAgdmFsaWRhdGVIaXN0b3J5QVBJKGhpc3RvcnkpO1xuXG4gIGhpc3Rvcnkub25DaGFuZ2VkKHVwZGF0ZVF1ZXJ5KVxuXG4gIHZhciBxdWVyeSA9IGhpc3RvcnkuZ2V0KCkgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICB2YXIgYXBpID0ge1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBjdXJyZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmc/fSBrZXlOYW1lIGlmIHByZXNlbnQgdGhlbiB2YWx1ZSBmb3IgdGhpcyBrZXkgaXMgcmV0dXJuZWQuXG4gICAgICogT3RoZXJ3aXNlIHRoZSBlbnRpcmUgYXBwIHN0YXRlIGlzIHJldHVyZW5kLlxuICAgICAqL1xuICAgIGdldDogZ2V0VmFsdWUsXG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgY3VycmVudCBhcHAgc3RhdGUgd2l0aCBuZXcga2V5L3ZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBuYW1lXG4gICAgICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGRhdGV9IHZhbHVlXG4gICAgICovXG4gICAgc2V0OiBzZXRWYWx1ZSxcblxuICAgIC8qKlxuICAgICAqIFNpbWlsYXIgdG8gYHNldCgpYCwgYnV0IG9ubHkgc2V0cyB2YWx1ZSBpZiBpdCB3YXMgbm90IHNldCBiZWZvcmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IG5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8ZGF0ZX0gdmFsdWVcbiAgICAgKi9cbiAgICBzZXRJZkVtcHR5OiBzZXRJZkVtcHR5LFxuXG4gICAgLyoqXG4gICAgICogUmVsZWFzZXMgYWxsIHJlc291cmNlcyBhY3F1aXJlZCBieSBxdWVyeSBzdGF0ZS4gQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZFxuICAgICAqIG5vIGhhc2ggbW9uaXRvcmluZyB3aWxsIGhhcHBlbiBhbmQgbm8gbW9yZSBldmVudHMgd2lsbCBiZSBmaXJlZC5cbiAgICAgKi9cbiAgICBkaXNwb3NlOiBkaXNwb3NlLFxuXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIG9mZkNoYW5nZTogb2ZmQ2hhbmdlLFxuXG4gICAgZ2V0SGlzdG9yeU9iamVjdDogZ2V0SGlzdG9yeU9iamVjdCxcbiAgfVxuXG4gIHZhciBldmVudEJ1cyA9IGV2ZW50aWZ5KHt9KTtcblxuICByZXR1cm4gYXBpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKGNhbGxiYWNrLCBjdHgpIHtcbiAgICBldmVudEJ1cy5vbignY2hhbmdlJywgY2FsbGJhY2ssIGN0eCk7XG4gIH1cblxuICBmdW5jdGlvbiBvZmZDaGFuZ2UoY2FsbGJhY2ssIGN0eCkge1xuICAgIGV2ZW50QnVzLm9mZignY2hhbmdlJywgY2FsbGJhY2ssIGN0eClcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEhpc3RvcnlPYmplY3QoKSB7XG4gICAgcmV0dXJuIGhpc3Rvcnk7XG4gIH1cblxuICBmdW5jdGlvbiBkaXNwb3NlKCkge1xuICAgIC8vIGRpc3Bvc2UgYWxsIGhpc3RvcnkgbGlzdGVuZXJzXG4gICAgaGlzdG9yeS5kaXNwb3NlKCk7XG5cbiAgICAvLyBBbmQgcmVtb3ZlIG91ciBvd24gbGlzdGVuZXJzXG4gICAgZXZlbnRCdXMub2ZmKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRWYWx1ZShrZXlOYW1lKSB7XG4gICAgaWYgKGtleU5hbWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHF1ZXJ5O1xuXG4gICAgcmV0dXJuIHF1ZXJ5W2tleU5hbWVdO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0VmFsdWUoa2V5TmFtZSwgdmFsdWUpIHtcbiAgICB2YXIga2V5TmFtZVR5cGUgPSB0eXBlb2Yga2V5TmFtZTtcblxuICAgIGlmIChrZXlOYW1lVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKGtleU5hbWUpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHF1ZXJ5W2tleV0gPSBrZXlOYW1lW2tleV07XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGtleU5hbWVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgcXVlcnlba2V5TmFtZV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBoaXN0b3J5LnNldChxdWVyeSk7XG5cbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlUXVlcnkobmV3QXBwU3RhdGUpIHtcbiAgICBxdWVyeSA9IG5ld0FwcFN0YXRlO1xuICAgIGV2ZW50QnVzLmZpcmUoJ2NoYW5nZScsIHF1ZXJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldElmRW1wdHkoa2V5TmFtZSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGtleU5hbWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBPYmplY3Qua2V5cyhrZXlOYW1lKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAvLyBUT0RPOiBDYW4gaSByZW1vdmUgY29kZSBkdXBsaWNhdGlvbj8gVGhlIG1haW4gcmVhc29uIHdoeSBJIGRvbid0XG4gICAgICAgIC8vIHdhbnQgcmVjdXJzaW9uIGhlcmUgaXMgdG8gYXZvaWQgc3BhbW1pbmcgYGhpc3Rvcnkuc2V0KClgXG4gICAgICAgIGlmIChrZXkgaW4gcXVlcnkpIHJldHVybjsgLy8ga2V5IG5hbWUgaXMgbm90IGVtcHR5XG5cbiAgICAgICAgcXVlcnlba2V5XSA9IGtleU5hbWVba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChrZXlOYW1lIGluIHF1ZXJ5KSByZXR1cm47IC8vIGtleSBuYW1lIGlzIG5vdCBlbXB0eVxuICAgIHF1ZXJ5W2tleU5hbWVdID0gdmFsdWU7XG5cbiAgICBoaXN0b3J5LnNldChxdWVyeSk7XG5cbiAgICByZXR1cm4gYXBpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHF1ZXJ5IHN0YXRlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0cyAtIGlmIHByZXNlbnQsIHRoZW4gaXQgaXMgcGFzc2VkIHRvIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gKiBvZiB0aGUgcXVlcnkgc3RhdGUuIERlZmF1bHRzIGFyZSBhcHBsaWVkIG9ubHkgaWYgdGhleSB3ZXJlIG5vdCBwcmVzZW50IGJlZm9yZS5cbiAqL1xuZnVuY3Rpb24gaW5zdGFuY2UoZGVmYXVsdHMpIHtcbiAgaWYgKCFzaW5nbGV0b25RUykge1xuICAgIHNpbmdsZXRvblFTID0gcXVlcnlTdGF0ZShkZWZhdWx0cyk7XG4gIH0gZWxzZSBpZiAoZGVmYXVsdHMpIHtcbiAgICBzaW5nbGV0b25RUy5zZXRJZkVtcHR5KGRlZmF1bHRzKTtcbiAgfVxuXG4gIHJldHVybiBzaW5nbGV0b25RUztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVIaXN0b3J5QVBJKGhpc3RvcnkpIHtcbiAgaWYgKCFoaXN0b3J5KSB0aHJvdyBuZXcgRXJyb3IoJ2hpc3RvcnkgaXMgcmVxdWlyZWQnKTtcbiAgaWYgKHR5cGVvZiBoaXN0b3J5LmRpc3Bvc2UgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignZGlzcG9zZSBpcyByZXF1aXJlZCcpO1xuICBpZiAodHlwZW9mIGhpc3Rvcnkub25DaGFuZ2VkICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ29uQ2hhbmdlZCBpcyByZXF1aXJlZCcpO1xufVxuIiwiLyoqXG4gKiBQcm92aWRlcyBhIGBudWxsYCBvYmplY3QgdGhhdCBtYXRjaGVzIGhpc3RvcnkgQVBJXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gaW5NZW1vcnlIaXN0b3J5O1xuXG5mdW5jdGlvbiBpbk1lbW9yeUhpc3RvcnkoZGVmYXVsdHMpIHtcbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuICB2YXIgbGFzdFF1ZXJ5T2JqZWN0ID0gZGVmYXVsdHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNwb3NlOiBkaXNwb3NlLFxuICAgIG9uQ2hhbmdlZDogb25DaGFuZ2VkLFxuICAgIHNldDogc2V0LFxuICAgIGdldDogZ2V0XG4gIH07XG5cbiAgZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBsYXN0UXVlcnlPYmplY3Q7XG4gIH1cblxuICBmdW5jdGlvbiBzZXQobmV3UXVlcnlPYmplY3QpIHtcbiAgICBsYXN0UXVlcnlPYmplY3QgPSBuZXdRdWVyeU9iamVjdDtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdHJpZ2dlckNoYW5nZShuZXdRdWVyeU9iamVjdCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBmdW5jdGlvbiBkaXNwb3NlKCkge1xuICAgIGxpc3RlbmVycyA9IFtdO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2VkKGNoYW5nZUNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjaGFuZ2VDYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjaGFuZ2VDYWxsYmFjayBzaG91bGQgYmUgYSBmdW5jdGlvbicpXG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goY2hhbmdlQ2FsbGJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckNoYW5nZShhcHBTdGF0ZSkge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGxpc3RlbmVyKSB7XG4gICAgICBsaXN0ZW5lcihhcHBTdGF0ZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qKlxuICogVGhpcyBtb2R1bGUgaXMgc2ltaWxhciB0byBKU09OLCBidXQgaXQgZW5jb2Rlcy9kZWNvZGVzIGluIHF1ZXJ5IHN0cmluZ1xuICogZm9ybWF0IGBrZXkxPXZhbHVlMS4uLmBcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBhcnNlOiBwYXJzZSxcbiAgc3RyaW5naWZ5OiBzdHJpbmdpZnlcbn07XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmplY3QpIHtcbiAgaWYgKCFvYmplY3QpIHJldHVybiAnJztcblxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAodG9QYWlycykuam9pbignJicpO1xuXG4gIGZ1bmN0aW9uIHRvUGFpcnMoa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgdmFyIHBhaXIgPSBlbmNvZGVVUklDb21wb25lbnQoa2V5KTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFpciArPSAnPScgKyBlbmNvZGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhaXI7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2UocXVlcnlTdHJpbmcpIHtcbiAgdmFyIHF1ZXJ5ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm4gcXVlcnk7XG5cbiAgcXVlcnlTdHJpbmcuc3BsaXQoJyYnKS5mb3JFYWNoKGRlY29kZVJlY29yZCk7XG5cbiAgcmV0dXJuIHF1ZXJ5O1xuXG4gIGZ1bmN0aW9uIGRlY29kZVJlY29yZChxdWVyeVJlY29yZCkge1xuICAgIGlmICghcXVlcnlSZWNvcmQpIHJldHVybjtcblxuICAgIHZhciBwYWlyID0gcXVlcnlSZWNvcmQuc3BsaXQoJz0nKTtcbiAgICBxdWVyeVtkZWNvZGVVUklDb21wb25lbnQocGFpclswXSldID0gZGVjb2RlVmFsdWUocGFpclsxXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5jb2RlVmFsdWUodmFsdWUpIHtcbiAgLy8gVE9ETzogRG8gSSBuZWVkIHRoaXM/XG4gIC8vIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gIC8vICAgaWYgKHZhbHVlLm1hdGNoKC9eKHRydWV8ZmFsc2UpJC8pKSB7XG4gIC8vICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIG9mIHN0cmluZ3MgdGhhdCBsb29rIGxpa2UgYm9vbGVhbnNcbiAgLy8gICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkoJycgKyB2YWx1ZSk7XG4gIC8vICAgfSBlbHNlIGlmICh2YWx1ZS5tYXRjaCgvXi0/XFxkK1xcLj9cXGQqJC8pKSB7XG4gIC8vICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIG9mIHN0cmluZ3MgdGhhdCBsb29rIGxpa2UgbnVtYmVyc1xuICAvLyAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIHZhbHVlKTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHZhbHVlID0gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgfVxuICB2YXIgdXJpVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gdXJpVmFsdWU7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0eXBlZCB2YWx1ZSBmcm9tIHN0cmluZ1xuICovXG5mdW5jdGlvbiBkZWNvZGVWYWx1ZSh2YWx1ZSkge1xuICB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIGlmICghaXNOYU4odmFsdWUpKSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xuICB9XG4gIGlmIChpc0JvbGVhbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJztcbiAgfVxuICBpZiAoaXNJU09EYXRlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGlzQm9sZWFuKHN0clZhbHVlKSB7XG4gIHJldHVybiBzdHJWYWx1ZSA9PT0gJ3RydWUnIHx8IHN0clZhbHVlID09PSAnZmFsc2UnO1xufVxuXG5mdW5jdGlvbiBpc0lTT0RhdGVTdHJpbmcoc3RyKSB7XG4gIHJldHVybiBzdHIgJiYgc3RyLm1hdGNoKC8oXFxkezR9LVswMV1cXGQtWzAtM11cXGRUWzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGRcXC5cXGQrKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSkvKVxufVxuIiwiLyoqXG4gKiBVc2VzIGB3aW5kb3dgIHRvIG1vbml0b3IgaGFzaCBhbmQgdXBkYXRlIGhhc2hcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dIaXN0b3J5O1xuXG52YXIgaW5NZW1vcnlIaXN0b3J5ID0gcmVxdWlyZSgnLi9pbk1lbW9yeUhpc3RvcnkuanMnKTtcbnZhciBxdWVyeSA9IHJlcXVpcmUoJy4vcXVlcnkuanMnKTtcblxuZnVuY3Rpb24gd2luZG93SGlzdG9yeShkZWZhdWx0cykge1xuICAvLyBJZiB3ZSBkb24ndCBzdXBwb3J0IHdpbmRvdywgd2UgYXJlIHByb2JhYmx5IHJ1bm5pbmcgaW4gbm9kZS4gSnVzdCByZXR1cm5cbiAgLy8gaW4gbWVtb3J5IGhpc3RvcnlcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gaW5NZW1vcnlIaXN0b3J5KGRlZmF1bHRzKTtcblxuICAvLyBTdG9yZSBhbGwgYG9uQ2hhbmdlZCgpYCBsaXN0ZW5lcnMgaGVyZSwgc28gdGhhdCB3ZSBjYW4gaGF2ZSBqdXN0IG9uZVxuICAvLyBgaGFzaGNoYW5nZWAgbGlzdGVuZXIsIGFuZCBub3RpZnkgb25lIGxpc3RlbmVycyB3aXRoaW4gc2luZ2xlIGV2ZW50LlxuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgLy8gVGhpcyBwcmVmaXggaXMgdXNlZCBmb3IgYWxsIHF1ZXJ5IHN0cmluZ3MuIFNvIG91ciBzdGF0ZSBpcyBzdG9yZWQgYXNcbiAgLy8gbXktYXBwLmNvbS8jP2tleT12YWx1ZVxuICB2YXIgaGFzaFByZWZpeCA9ICcjPyc7XG5cbiAgaW5pdCgpO1xuXG4gIC8vIFRoaXMgaXMgb3VyIHB1YmxpYyBBUEk6XG4gIHJldHVybiB7XG4gICAgLyoqXG4gICAgICogQWRkcyBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIGhhc2ggY2hhbmdlIGhhcHBlbi4gQ2FsbGJhY2sgcmVjZWl2ZXNcbiAgICAgKiBjdXJyZW50IGhhc2ggc3RyaW5nIHdpdGggYCM/YCBzaWduXG4gICAgICogXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhbmdlQ2FsbGJhY2sgLSBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gaGFzaCBpc1xuICAgICAqIGNoYW5nZWQuIENhbGxiYWNrIGdldHMgb25lIGFyZ3VtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgbmV3IHN0YXRlLlxuICAgICAqL1xuICAgIG9uQ2hhbmdlZDogb25DaGFuZ2VkLFxuXG4gICAgLyoqXG4gICAgICogUmVsZWFzZXMgYWxsIHJlc291cmNlc1xuICAgICAqL1xuICAgIGRpc3Bvc2U6IGRpc3Bvc2UsXG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgbmV3IGFwcCBzdGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGFwcFN0YXRlIC0gdGhlIG5ldyBhcHBsaWNhdGlvbiBzdGF0ZSwgdGhhdCBzaG91bGQgYmVcbiAgICAgKiBwZXJzaXN0ZWQgaW4gdGhlIGhhc2ggc3RyaW5nXG4gICAgICovXG4gICAgc2V0OiBzZXQsXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGN1cnJlbnQgYXBwIHN0YXRlXG4gICAgICovXG4gICAgZ2V0OiBnZXRTdGF0ZUZyb21IYXNoXG4gIH07XG5cbiAgLy8gUHVibGljIEFQSSBpcyBvdmVyLiBZb3UgY2FuIGlnbm9yZSB0aGlzIHBhcnQuXG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgc3RhdGVGcm9tSGFzaCA9IGdldFN0YXRlRnJvbUhhc2goKTtcbiAgICB2YXIgc3RhdGVDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICBpZiAodHlwZW9mIGRlZmF1bHRzID09PSAnb2JqZWN0JyAmJiBkZWZhdWx0cykge1xuICAgICAgT2JqZWN0LmtleXMoZGVmYXVsdHMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChrZXkgaW4gc3RhdGVGcm9tSGFzaCkgcmV0dXJuO1xuXG4gICAgICAgIHN0YXRlRnJvbUhhc2hba2V5XSA9IGRlZmF1bHRzW2tleV1cbiAgICAgICAgc3RhdGVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZUNoYW5nZWQpIHNldChzdGF0ZUZyb21IYXNoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldChhcHBTdGF0ZSkge1xuICAgIHZhciBoYXNoID0gaGFzaFByZWZpeCArIHF1ZXJ5LnN0cmluZ2lmeShhcHBTdGF0ZSk7XG5cbiAgICBpZiAod2luZG93Lmhpc3RvcnkpIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh1bmRlZmluZWQsIHVuZGVmaW5lZCwgaGFzaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGhhc2gpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlZChjaGFuZ2VDYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2hhbmdlQ2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignY2hhbmdlQ2FsbGJhY2sgbmVlZHMgdG8gYmUgYSBmdW5jdGlvbicpO1xuXG4gICAgLy8gd2Ugc3RhcnQgbGlzdGVuIGp1c3Qgb25jZSwgb25seSBpZiB3ZSBkaWRuJ3QgbGlzdGVuIGJlZm9yZTpcbiAgICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBvbkhhc2hDaGFuZ2VkLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goY2hhbmdlQ2FsbGJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICBpZiAobGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAvLyBubyBuZWVkIHRvIGRvIGFueXRoaW5nLlxuXG4gICAgLy8gTGV0IGdhcmJhZ2UgY29sbGVjdG9yIGNvbGxlY3QgYWxsIGxpc3RlbmVycztcbiAgICBsaXN0ZW5lcnMgPSBbXTtcblxuICAgIC8vIEFuZCByZWxlYXNlIGhhc2ggY2hhbmdlIGV2ZW50OlxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgb25IYXNoQ2hhbmdlZCwgZmFsc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25IYXNoQ2hhbmdlZCgpIHtcbiAgICB2YXIgYXBwU3RhdGUgPSBnZXRTdGF0ZUZyb21IYXNoKCk7XG4gICAgbm90aWZ5TGlzdGVuZXJzKGFwcFN0YXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vdGlmeUxpc3RlbmVycyhhcHBTdGF0ZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgICBsaXN0ZW5lcihhcHBTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0U3RhdGVGcm9tSGFzaCgpIHtcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSAod2luZG93LmxvY2F0aW9uLmhhc2ggfHwgaGFzaFByZWZpeCkuc3Vic3RyKGhhc2hQcmVmaXgubGVuZ3RoKTtcblxuICAgIHJldHVybiBxdWVyeS5wYXJzZShxdWVyeVN0cmluZyk7XG4gIH1cbn1cbiJdfQ== diff --git a/app/dataviz/mark-twain-portrait/docs/mark_twain_cloud.png b/app/dataviz/mark-twain-portrait/docs/mark_twain_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..437c74147d6300bc864e86a3b18ab0ad70c625ff GIT binary patch literal 150085 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\peh#fm9)gA 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 literal 0 HcmV?d00001 diff --git a/app/dataviz/mark-twain-portrait/docs/mark_twain_small.png b/app/dataviz/mark-twain-portrait/docs/mark_twain_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bc47c7026aadfa698b3c78b33e444f04f95c92 GIT binary patch literal 124720 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

62O(FfA$|pO~)b}aR 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 z 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

cc9b5!D%ZrSMqOFDQF;=Md`nd5N= zi+=^RdyBT1B@bwSiAio(ni2w&CS+g#j&kH0%U3s9TU%$VNWp;X<9V*7k}PVw z6W`C31WTE-&i=0j-bqqPAIkJv9hNNGblTe-x=3m>t~FT5Op$$w4#g+_7^q$T`;S*s z5j%|S)9Uj*`0O*)frYQG;WqmkB#%=xaU^DR_fa$v@JoZ8(u zt-OIpqE`77z$xJx!~aE0DGo*M%_A3jl*`s%TIwV*yD!KO=>0?_A_p}=WEC?oUyNoA z2s42EV7Tr4HHaCubP*_{)I9l*VNLq#-a*b?^zu6!3NoIYiK&EvB=2@vGxzO) z&O#GVG(B_o-5uoS^0ki8enpc}*l|_-rs1Zn_0Dv3$f>U19s$ckALu(}g?SMz7zPzM z2$BU!SP)ey46&H;^KvSOw36jgr+IcQv}Z&yO{~

nuhncFrB8JLrDK| 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 literal 0 HcmV?d00001 diff --git a/app/dataviz/mark-twain-portrait/docs/mark_twist.gif b/app/dataviz/mark-twain-portrait/docs/mark_twist.gif new file mode 100644 index 0000000000000000000000000000000000000000..e996f9dc484d09d63dd377df59ec9bbbf5d7a97a GIT binary patch literal 1790470 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

k+8JDsDoj#3)3VJAC9wBhq0v@xsbw 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

4<0%;8jy__nLPK$!*Jge*ut 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%0DD8@7;qpj=9JdY~>xM4qg%n0D5GabHAZH1x9N+Oc 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

0@J;RPt}$|= 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%0AxC|6hOD}N*zOY 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�G4l!QIX-_%!?#WmKA1DY}#b|ya55RTj!yg!;I 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

2;*NuB8fzJ9Cqa2 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

iT45xLpk0>oB9@TIU`Q6Ct6ou!4o`g<7*5B+e2 zC|mL@Q16=?LGwtx7sk0`Fj%J&C9B@=j4@7~Z2>kuF zf~ifm#433J@el!10Oud~ep{Vnp(2i?7H(QF^8w3J3-Hqe9tv&cSY+%;*poQXV$hXe z=C+!7HoC0>y&`cXXKbKIO+nvzqR7i;sCNByUpfCt19!tpEs#c9%Ei`RW~+BV+R3|j z%`B^|fo-H<@rSG&4%mF>`qQVK?n;6{MVJ7xvKneX3s0wl6>#T+ODCu&k-s|d%*2)~ zav$6UPWe6$?tEv(_Sk+If>2=ccmg|O=Y$E+!?$ziQX!@k7^@&IhLG5Z_{da9ar?5t z`O!M_B?<7Vg<}>Te$kW)UYo4iw~P1yN^{r1o+|dpf4=DUtRH6}7j?uZD#ncXWT_!e zTrf}uc$(TRMi5I$fo;^g@#rd%#(O*#up?v4iuT1`*!@jA9bBcUzyDqL??#UT{b*44 zLYSw8CT*=S+eq{CIYzS8Ta-BWBXv0=^@m0pu8bUiIdW1zqOuu1J!!OQ{^+@!(dI*=7p{!9z8t-* zA647@zB=i5$Nb-2IlsFP{l0PK_pO(|@92MPCb<^f{gplOamO_4o$Zg>uhd!V(T#Mh zzQXTM3AKiF31k-Do=1n26#WyKmNBhMWQEtv&vC z8IN;G1=*0qPoWyq37h`;F;|XO{nxG-{d@g|KKbd7kB^0}3R&YRqQJ|`$$ppes+js@ z*MirJUIfXz4IQK(j*0Dvv9Za#O5M7v5MbFXaGt+qSL>TI?+&aW&2AUxZ?Z5_$bh=d z(2Q;rpwW$_81#qCiJI6zYwcDKFiJ~;$dAs@YN(0CTGU(^brj;wOjJW=ep<{qm5?-tyH^yIUYYnKk4Vd>ggdvY1})G;UcKOT+pW=S>0)kBKGJq#@!<$ zZCWJGo7T3O^I!V64o;j)TA5x8@n8R^C6v$s@0w zVJ{9@`*`mhtDU_jKD0Qy96w=Cw*&US+6TD%!l5hITgmT`z?f#A|SjP8mE>KsT01S1Mu?Z6VXN zC|j7%6^UVk;3zFACtWGd&50P6lHsu;ZH(c#C_pt!Py@;?87<`>b|B4?YLY4v7xct8 zTf8$HX~7)H)<3Wnd?)3E)i3>}O30)xQiy3d%6^zF7os>Xtx`LWwkWYG1CD-rjcnpG zOPKfApneR_%RtFL8wee%0w(5K3o9)k3M#bl5WiWO;jJW$uDOgDC7BRc=&zzXfJr7G zIW@6|5?U6T+Q3hgN6%7I2#qsYF2i&B)L>C= z8#$E_gYL&D6PMsLr3@mg?kw@=wt-k3zDtc2a0yd_PalM+FnDbDY?25wwvYf4nV1zA zh;U*$4TrzN2yu)Uxz$C8qpJ-4q`9zzdX-43Hi%R1p<-G@5LHexMaBGPEyUZ8!BXKl zg#(I=DgoV8lxy)p0sD7j242eC$iI0AX%L(AY)$BpqcqJ#C7$GjAv_0Sgx#zT4pHWk zN<}0@XG-=Wl0MC98!rX+R;t&X;;ct2{|=*^S?pVr%iLyos>S0ANx2My7dylNq)mWJu1~Uf<+cq25v%<8n zj|7TbDRj+V3jkiR)ewD@OX*{i{s8+j-2)a`xPt8WM;$!pv8#X!C~Wm1_AFHp9HcEL zT%b(U4$_{LlE(&!NuqIc5R3&0c*6GyT6|MI2DUJ9%1k*f+$@D`n1<=s;g;eQJ%<}u;-M+&ZJzZz}I0zu~K3qeV9BtghRVVsq zF5i->c}dWwBv+mo#EGU_^4x)^h$s+bV?eD!xJr~3pp@q13y}^!ddc|yeB_&bw0ARR zGm2v-40W+yfihFm`F}fwBzps~>jad|^dm6RKRT6RI=J{aUr8paPb!i%5L1Z4JP}Sw z|8Wmw`T1V=F+8tnQk*z&%|;-PCYkqaBL-c!8IxCUsWhDs?e%_>A*mPZi}|PDW69Em zkEv9nBQ8bF!n=CiwU?_9%b=S_r=6bt_0XOD76p5w#xv%`?LEj#4Jm$iYWYLo>UANN zlMl5>O0F6o9nBcxji*KymaRFlEPHA4yE%^xOXBNRzIq@3c}}0r`tLhVl9t9_E1p*D zGd40{;)kSt>+iqvPK@B~UXo}_n>oAszEZh$Y0=b+_ct{R?7ZPw@04=!+13qB=dUa) zPd7>L`JFnm)o|^KO?#%y7=C#F;?CQjL!c>3^w9jWr{BIi5H`3OS0+Lv`b^B@%#yH{ z{?A7kXSXd*ZN;vwDnFC&o4byF^Chow-Q}HYqC!|pZnE~>rwN65X>+%&CK+PT2lIV~ z9$w?T)mW!t0r9HYL$Z!BHZZ5{Ao3u~=xEu+$a&j4h*RpAM{0U>`)X#QJGtfk!l(!$ z6vsnvj@6(KtDM#dnv@;_h4@r7(rzLWLR=$2X;@?2bVEpSEo!3)m*@VmMc+rBobixT zha2?~uh(*%#`pweYcGthAiLI(Bjq2Vj(RbDYm!`7yl;FK5F!P&cY2)yuq zQGh0wsXYdORUF_Bz2MfnQw*X2GeO5{*>&{es%v&r2&8V~bz-A}VsyEBl%Fg`Rxl+7 z6fLxh4=9;69mBhFs<7ut_~wm=z8!^NfRVKOK_&L}>QP$vrK82zG`{Q8i#w*T#7$oj z`v#2qwb9fCz#5Fh0~*EFfYZRF+m(-PLGm$9rP~o*Axx}!FetBt0qagM(1xM)7&{SX z4%R+)1JjD3#$w++zp73YPLO^gdmyz0M3Qtxg{?HzKu$n=Zl~z413@CN@xevFHVCTOciQ(fUou`Qs zSZFQSGH3@s>?Yfp8PGw~*}R($anm|ftB#wzIx_iq7#|ZOa-5Y}m44mx+ic;?e2^nm z0ZluVcYs-sZ>l`Ojl!r=jzr#ynTZke? z{0p#Ut^x)AD$0O73=kK4wyuU*?`R?ejP5gB06pIj4ph))moiOCw?i&8@rf0vgh)le zR6&2-jWLx_W3qWI1ETE*{Nad$VdXrLnRPB7^qVpjt!%=4jdejSr&;y*8OZodi#M$q zSSm^jq!$hA@pCCOeQVWT(03J9x2|^sz8f$O4I-vSPxpJ67vW{IV@Zjzdl(oms+*Gu z5N+G;d%P2~iv){ZX~V!`xT~Z4c2gt2#Nv)g(Y|kKw+o^gjYNlaSl7(;bvoMA`cRYM zC*}H%fTH2Mzm69bTe62!jpw+ZgT8E8vznIn%Y93cG$^(Z73VG%G6w@nM=c$v+XWryc^2hs-i&bv&pU{N z#@{~Sw9shE)6#6BHpO+kLcMd=J+DLe@Ac`Zxa;nl1$C>G1M5|r*wBMK@a8z)nhX&PCM1m_^|_iTaKj>B1~HHd zm}Vgo?5uW~d=C;tH53eEn_NOm_!bX-VSE4O)!)EOc(xbV6WPiWF8ctew4YT`vq=kN z(bgeDfDLdfwgv~Df?d2Ax*A?09{0qykPhi=G1JO0z8ce; z3Xd^$r@luMxniOk)6t-^3R-pK>A)Vtq$0bL2;MN&R0WuttHNlEB@?<_@ZuMtFtDX` zZ+X~(A7g-7r5?njlcG3wcmGzZ448d5SyhhX42WERGu)b<&s}ESPhe@k!OZevb&xTsd=&g^7@ZJTpIZCj9XdB3!W7ccf z0s4F{Zncm=yQ+?pbhoxc7+s60{v2W5KiKO7h0RI2)>oys@3_;v3?J9gVE7Hp>>VF5 zYWJTlrrHbroJ?FHTSCQNN$67qfT;i*hdTfKrqYxh3CX(&C2~W;L-I(Vpl>2Lj-Brd zi-oqD1k4p=PcK#2G&D{k$;WIUVFc&fzi0O$ailu3=`i5$%}Z0wy*Fyr^cY28gG-!c{;N-H8GWboT>ZJ)R@O4Tk|=hpn_dYIXzT z0x;bQ@H1}~ZFrdz0Ksy6@9{Y!&$(n7u zN|H3iAhVmI?KB$ugr@DN`c@4HskSI7c6RhKTN{Uv=cddkj;5`*6#p{&%$Z_n>=wwf zn)j!{%v=Yq7sZC}!;`LqW|Ys->`^xI$%gdT&tq+-EVRhH+oc7PGOLx@r*lw@kAbDd zJ8E13sR-|3<5X>Z#g0aZ19g17NTso?cVL%SFFIBXRT+2KT`sm4PyeB~m-?^91D~FT zoTD}ln9fZoqMwg^YO>w%?DDS?=10HPq1$GCoxW()WS!AJxV0?TOO_Wb%a4^6%#&?i zE-Tz5D=L%eix0|5PRh1imX+R-**T_e{UqD=SEkr3Gb^rD%p3Gz7E@dn7alC9$-&N< zGU?)>7549Tzb)NW0&%2g6pF>N!$W&N6)6T1`zH7(w2N~L2e;h;JQ-vd6@}Da<;;e5 zZyL8Q^nFPzSnv>-&)iE=Fpip?D>th+bf?Hf9`&pPx_;(x_V5yy8I_G)w0~j`=H9}@ zf#s%yi)HKo-NHL$Sl>Z)>t_4D_af5;7E@VrlS^GihpMn2ZB+#f*0~pFU%tm!lBA1S z*wLvU3TU`jgZ))9WGIv*xi>lg*i(HE%sji~E4E|qf*9YuI9KX;@7!5VJ{fkA+{Xr*S=l_6LA~v+sU=5Da6@&gO^?MHZ;U+Serwm+`ZlbkcJFrIt=k%)U@t5S zcMINf&i%Rn`7g`VxOB9?zOKNM@rmyrf4h$My{nOt37CB!O|-9*rx<_q#9;Zt z#b@R`bUJq=FTg22sedA#^z8GLkBwL=7I7isf&BAPtk?WI#)=}yRg5}laKZY6A_@{H zo_qZt*6#c*rvLFD|Kpr9YctbKHBHlgT8%c-YLJ>~6Ow5oTc#wF!jurAGgBCZDMhkP zBq0n!_Gv+~4MGtHS)U>FBx|3?>-)Oi-_P~AuFsF3f539d%sG$8{dT|q+DRkyA1(V< z&bq_3usU{F$)%p=tWg|V&MV|7NiwCW`+~XCaxC{X02Qzm`sz}`E!BjrQpD6Khe2^A z8fQ5sX+`z3u3dM2DU~eR`kuLjrJOhv%(oXRKTTTi>hyRp?!fI4%jcxqe(2VLC)NnN zGOdS%@btu4DPl+X=|!b#4}=E@b3hb4&w1P!bnV+39soTWWpl5cWLSV*GNSmq{<8p3 zI^kn)BLjW}@;e4rpYGBS(Zg7*PH^i7yys`^)8sX&S+{mtlLvNr#H1U3=iO?AbqlVf zfGua!z>U}7cKPekY5N0*4+w`_5lrEmWu>2Hsr zzc{#RT*MHG$Hvf3A#7z>wXIEAPU0+f3`QE5wHn^nJLh`C*SQ@+?vXj%^jk(WL?E2eg zp%_Li+k2Jsapkg>;a3+XxKwNgKyBgk&8++TCr61XnYLIL*Y~_h{XcNB#AbMWOpf%* zB{uRqa(a#iAU1T9-!5mG9aT(UQSU#)U0Mm0meKoC=z^(MxHzP9eD^$~ZlTO*Z8J)o zOj!=h2RnSjn?vXmA_pG7acW_jQt4NA+&TK@_5r(y8>A$zJ+pL*Z~gN3YMfl|_ZaQZx#&^PV~O zzEh>bJ58&Uh`XFi%Ta~1`0gRmG@*78LbpmjRqnJsY#qZ>#(n$#MR7KhovqgjabgYo zK~|$kZB(sAD2nY`F(OgF7vjayT0%u*Ie*(3?c}2T*J3cDvhwUvg5}cD_ZZOZ0*dIL z*23N}W)wM$-g%I~2{BRR>J@4;2p@RE44^ z{d?&gF6UvYe;#PTIF%e8Id}z*k%YhRAvAMlay6OKA5KuL3p7ZWk0P_2>6kBVq55(R zN@hT-#%W(g{74n$iT6)7%I{y;L=SScHd{WJuV|vW8)&a--Zio&D%&9Fpb1w3l(OIa zY7=$nz+Q<7t<|!W8u0C2*lxdpS>ddq1aWXT%~GsPcFC98Q~KQAqZNPj?M<|tzYCF_ z{DGG!*)Tye-}xHJ)RL)#|2@OUxF!nna*Od zAgt%_W)zak z=V#nuEe+48u_}$*@$igchSf z$5N+sv1vnuZ%ZXKS0D+s7xzs>yww^433A2JN9mz?i~lXRZdKl_J+fZE8PT>sNsjq@ zZxdprIi&eH79F7)aLf~S&>dxi@I|x3g^N)f@!NkeXFnCUz=-kQjzKbvn}BOAM$;YmrJk>uN?C&RN)Ft9FxM085h3_CatpE9VQ*DwRb<)HT}Y8Son z_p&j<#WRksnSI@1%s{;62rW+d2d7J>nm4U%)O!9k>dok35vB^T)?XOdC2FG04}57MGD*&}M)bH`h&~nNV_s%q)d98< zw`!xkQ$CfIO`jb(82fJA_^|kjRqM3jS_?CE zK}Dl$?Kjec@DU^774*+)0akk><&k;CmSzWhRpx~Bl!--;G7(Zq*@U!O^YXepcb}r6 zx2Kuh+j+R)P4K4!*9(p;EDxDJffS@CEKAhLF`NAnb+pLy!iH+o6@m!sWf#@){ngY1 zf++ukacg1;r33JBXE4q=m zU-akQgn94p?KTPA@B1oq!uoZIT8F^8$kFfPw>?VO@7xbUHblp;WzL6lllBk$Fmz&S z)jge!<$;VRnF&oJ-AWtEk`87}IGB9wY{#iRi|TWevZgk@zrS^EhQFYVnaD2NW=kUd zU*rsgE0C-}KLe-2AeDi{1^OANVjy3ELI#2sI7J5e3gk4<%=Gs5LPZ1B0TeaR!$5Ka zT@6Gs(7-@2)7I7oX$|xMwIRn)VBs5UqK(PaD z41_n((m*N$=gJ_tff@%=ncUnwsAV9VfskhL;yj3IOi7$&gxr+Lhx)YFWR1@)2r$Ztl&rOaFif%I)9D?oU6L}EQ1dLvjPBs-X9Pv<8xr;7MGlYogtQA)bM%1lk)}R32nA(8fUBA&!lK zsw7Gl6W|(S;wOM|21*#nU?8W75l0K0^-;0u5S&155)7$Kt1HAabEnFJ^F2r~{c0L_YZ${}DCN&p>G-%ZPxO2jU;dR3M=V z7IL5?auo^!L^0E2lcCsg;0Hh{1hq`Jp*tojCMG5#Z@vPe9f+Es3xX5}0vPCsf=$Iy zu>n2;QF5#pDkeybM!E{~<@pdSO_Jrix(oBCDCGC$J46I01g{w&B0^!YZr@UGZW!&4dqA}>;J(?fvc<2i_{N!Bz z*Z24H7rlRaY1mbddXwb+va;e2-wsb}JofUc=J2--F=vj?zA$fC*3%nZea~-c!`C}J zsZ^xhtxGtRa`S9p$4WDPLFMN(GP&@`!hfQsCXrbj+)<;;k+r;g(zZEt2ce9hahd7K zawj5!&S*c8HKfxie1kRZ+mFGPCr6258-7ss%)x=o``_Ki+^EX|S17P9vOYQoK~_@* zx*@WxKLN0|T8MK{I+~8#nf?{YFbX!Qa%-rCK@(;oiXm*%TwMDAx0$ zP$5ogpdw%O?&v_-e8VOal#qgKw9%;CJTG?WkQlQXX$uIDbMzs6A8x!8bAo3Iba zLT#A1nE3~nhS9RF^u5?o{^jJRwfJ-n!ZNobno(FLOwc?@cv8ZMU?M!!z7t1g438PC zgT#cX5$|h^>QOS--5fn5@V7sqa35IMf?4+qtP@u65&whvmq?xI)By`6$9we0WOiuiv6%P4EjyVzAE}n1_;tG5h;z5T90}Z^7n0b)y&n^h zXvLmg!wq_r=}?b1nb;4&S(}A^m%+)uC4G)%tj&0M=r4udr*-NKDM~kw5jKaI<;j!} zehH)U_QeEBi_Uw%B|YjNy+%T&;ZwsXe{c16gqRZIX5im5h)Zae^~Q&t>He?4gAI>_ z`YJ1ftuj>5A=cCOk9;)|@e~{2C8d@#d{S}3qjLDn1MBlA?-nENZrO^WE1gLp_d`57 z93-S)OxMM4@M#a;Kfxkw}8NV>}{=iF; zn_Q2E35x>aU_r4#&vi<;+(9w|cWD!nVq}wPVluN$PhJ@i zhk0|0){(I~4E_XA{EWnkN^uG)nrJZ2iVly$5u+I(rN}VQ07yePQ=L5D1uvKl$BS^l zGRJ`($+)p5;yH;#C@tE=@ZhS6lJag>a_ljWzsWNwLX9I;8d+Gcoc*_8TLp+A$ioSx zK(f`QP!5ptEE*Gr%`?tkUK!Ewg8a8}EH!U4PLt{pkqjlb>bIwFW6s@3i$c!pVPJ5( z$?G|T2vTf>5wH7ijMujRuwPhSVT~YRnj&(8ku+pLOpljZ^2&{XmH(D5SHz{5clg&z z>N0*e5o=HB*Wd)fgohL~E{*|N6O9ayP?IyIj;|ijOcg}vHa%vpeM%RLm1L$K3s5wX z<$VN0rze|orp7K@1&{`Dq<1G3G35}HVlf4V-k2#GVkHc5*)&Qfgo^HuxCRqhIx)pd z8-R4GiU3UQLBw23J)AP7vT{OuE(t)w&VPdbyey@@vZ&7rxn?Sro5)(VUVA3iAPmE=TghhnyV-=mr*x`L_S{ju+#bb(m$}OAzlH{-VzUcc@vUhP@(ECXZOrn7y7N( z((+6Ewzrm=VAir51H6r^`}ftZxHmp@;N$m8z*I+2V~nWnfSwksQ(4_GQbr9laW?9T zhr~QLnKsbOzolC}{Kj+B1@QuNvJK>!MGbc+pOhWmT;ucvdI-696bzt z-nzb&KzEM5M{+0LI?R=k?EAn(7f?jkoptoh-~Ib6D=)z7)@F8MPJXRo{mxU9?gYfb15)`y@iUg%TP zN1F8)0ZykGY@jxhe%HQ(M7uAbd%6_gzM` zJqb-z=uOhK*wDcNCzIf?!*sFMh102LI!F;~S`WGnb!TN8(UniMJ#bluIzgDNOvVYz z=%%I9#j4S{$5E$Ba6C?`+{MXH4HcoB#8dsf%w zG)#sg7TNeh)BIaxAt!hBVFDYjD>L_my}eo**0ZSTmis@-U3n)QhtuHA>GO3M)QeCE z0m@4FS}l?RQy@kK+Lhc&F=`)8AkFUi8eTn#Cd6vAvl;az5Z5qygE^Y! zgp4q-O*H`05}ZJA0!_65-DHfRb+?rwLkwg7;7E@pn)ey~T^4@=U5N_ExNv}pY^Ajj z@HOGl9XMN8L?Q&JE)Ep~T$qMO$@Wk#U_U0kzDk|7nHwd>E`mek}Gqwm#p;H1CkC% zj-w(_Nbf_ox&RgdOjXDQOJu$%-}*Us*la)p=!Le?g@IrqWhqA%<3}J4+JHzT31)qF z&B0RNpe*sSnaU~rKwx)wnY(Q5&!UCyBGlc8n(+|}DO|OPW8p$7kem$&b&z4hbR+8< zi&OqZHH~O^CF-t4?hMQy*M|JVM~C&XaZX7|9tij2b?gIf3iMj%+HfbVYfyy+8DUaK zK5P+sDIOExjuyfI)n;8g^5Cnrs!ul^8TyC0dv$x2K=sWDTpk_`%s<`uv@ra;?Mvw5b4;w zKJ@BjG=(+|5n~WEut0u=8^+LAS{sqiR8MQgmNnP7zCvu-6fgvz>o)>eD`o*9Shx_Q zXu)3&Mm741Tr;}t`@zovcJ+L#T z8vP@2h^gK+6$?x~!KNvY-YIi+r&3Z|gmX|N;^D3h-(03i?6?Z-bUC`T+4`ez2ynExe9Y?MxG!-wN=wnmp%^4$z4?Ca002 zvckd#9Gkw4`oD~8g{M^b=B|&n z(BpG7P8 z`5WXH4i1wN>@Lr8(*ZI-%=K~q+Mv7I*Hu{{hzi9-OH6c9fqwMnF0^xMlJ%Ok!#T*s zHQ2jSgkfa=T89R8E`QHOhr+a+*orv|rEp>vS^~b_(O(PP2X!Kmc=#$RG87IJorxsr zlP_%F7Ni5iaQH_@_;^?~_lPhT%X`WG(K>E7il&@6Yhye+cJ`DLbYyt@I2Ynv<0ye0 zfsrd6hbgdmp8WhM=gPXF)&$meF8ccV3!pg48dOuIC|@ym>htJ~Fl6B?_OgKSe*=K8 z7%NH-J-qyQ>bgj4;tWrL7Wfm3t|NTo431{aEbhwFrHD~^%-fi6xO{eZ&_ypj0Q${z zFTk)XUO5RIE_Sq4pzeBsJV3dGdgn`a+9X# zfpII`kflXPNIF7STz1idoA+@#X9*|=YbG!A*&8a}%DJolS+F zHX4|!LcJ0%*eEu*=+WUs2>SLSpDrbm#Le>lkxW9_>- zls}N=G-=DsxOIEZ!Tn+0G%faEP8sUNfiCODpNg8PTWSVo?VI%E!P=2^6O^EXXFcQn zO#9lsE=h-;3eucjg?`HfEI%$!npZw+T&#_GEHIrk;)C`B^a1lR>>0Kl<@(-4f7vRwROmP;Y4tqhMejV#I(e4-V3m_xny8jrV4vO*_`~sN9`HM%4 zsc}IzACz6cx;%UDF1T;$egbh&VE^39I_(Ne(?0x%oMytYwKt-wx85s&(g(<)(oD9T@?8?PBAm#O8PX>v-ie;;g|Cac-btJ%opw zPRl;Lefm#HxJdtEckfuN81)gWXQ~jou5E!A_=LTpDwgx5r&erF6c`|4Jh#fetdPJ6pIlYl_6{Sgc!9FVLqV!;!fchqw=J=0-el8>X*w(4*J~r1C0gsr@`})u`E&$zO|5zN}OIvnJ+> zZA??5b050U7bWXaZ>iz%Q<*!?xmbE<%h1TbnC;2KE*zX&@&Pz(alIGdaO6YRSQSvs zcp!WQR_{zTSG=CY>Zhz+chu%k*0ZjagWn0q0afTg@yvnMg#+r{1M4mglsp^QI5_bC zM9xH5xaYHf6j}T(nHhEPnbn6AL(YW%E-KukI)e<=fYtzPc*f5a&k=X6q~$ZP9drew zn|~8CC4M7En@mI;z}og1!}rXTP{L5tQRwM=Lta-u+DrMF5a-F(B&9^6`}W2Q0mmsq z)c5`N|4fekA99BIYhJHa>S`MLiyvHvfFhb1^XExU4jvX&={x&Bawa2cqwVNM#j(_4 zx|zsX-X?AizeHz?^o?B|@1UHS_qu;S(YhXx!{Cp}f|;vLY=6e(1LrH3R>t2yGW+qV z%v-?UA%LIdQoL@ZFQr`V`%MXI=abp))00zgnE{97w@Z|yHMD3)8UOPFlny-1YXiHx zzRuaEcJlgoRouFM#UGmvVH{@-jf)r@x(8{GzRl}qjo2vaBO))6on3ohdcSD7Wa{Q2 zjlOO@??d;Ueal}r-Uf8?-}H{UzUO4R8EWIoNfm#~*jT*t(tXjB3*j4C(Zz2$P2yG5 zAiTWpGZCReGZy;n@9LgDY{Ew&jUK=pcHq0D#p!C21iNs>6+Rd z<67S}ts0l;d*QS+VnOQxS^WXWLcUH?OyU!%jx2t3Dq1MxnjN&9(aj8b%kzql+@BnC zCwhHU53_yyU7J)y>5hSV>QsgFT7UWtfr`-%-xFCT(cUo@Tl)`UoCyV{6cYLttlsGJ zR^~|ZG3Y0VyVCttrYNo9=3w}g7_PMHw*)6!-~_I;=Bb(29<{dC6B*nZ+znBuuCo1B?WD9Y5sA?xs~KExlj$@3DAuYDI7nvsMDED`>vht-@EhIO z)nU@ncC9w*EkUNw7r;%l_tO@VETd#OyJ^nR8yaa*ePhU2vUKYepo(C0lbLF~i)Ah~ zI#Ps&(r%h6;&fN;ZF{FD8-5RcXjq8~CMVaVXmND4{iNZ5lA-H+vLgQLn-{9g;Nq>LTZ-&MHdK6gmWoYe;~>~BAg(EpA|C7ICjmBilq*5|9NA|EEx z(Aenbb%S)N0UV|m#}Y8_q)`$~)3(&>Y%i(y9YrQeUCs6p{Unc{QdynJMisKvR+H4? zRdy+rO-R?zEYV$m;A_BVjRBqsPb@GJ??DeMA&l@CfZg>-icZ z#)2%OC@yC}d}0MxqepuJ)lU&b+L%f%oJbf+c0l8_#@b6KR*`ukJ!WSLDG&=(1|uf< zdXj0|Oltlj;@XN$h&k-rF;!q>S3SZNHmwms{HG;=Kqwi+)_hm8g+{VSN6=#xDB#X> zT)TbuQ+YZ9dSvLJ{wdwmNZ0}+W{#^H9_ZFKi`On zlIj1_6h-8A?HpS=toJdnsT?sjOq_sj%q=37h$;N&CX>H87cJnYwII3)Nf%>eB8P%@ z5TQX@m2D+_`W7}(^6#GmHShvFQBO71DjDZ-zajaOOE@Q*>Ls2zs=J%!CT_N?6O;Yh zDi(7!mp;sE4Y_2k#H4x&wf7|n9}v$r3E#J!c4x^5qRDKtK*`f;kuSN<+#$lt9y~o5 zE(Uj9W%|NAGwNU3Oa2geb57D;Ml;J1suVuON@e6Bx)ORkf!W|-Q-|wb`dL5K3euPI zfVbB}1)38Penv-kFo%%{?N~%DMvvB0bKzkNE<@b)vlyx^0o*nt#W6pv-#iMFRN)o& z2hu}j@Vrmlj{MO`Xi^=!C18yAd4_>3cz<2O(~>>K2S!^6mGsI|AQ~9Mph*dqjn7pB|vb?=iva9!B-l z&zR#|W?8-wr`X@q(@-c|rfX~EYY_(DV8s$fl6iNao6PdHh=p1rVWtfs33@4Boq!q8H)Q1DYfZkT@e!tZ5q8;? zK_5oMuXFd?7dEQRP#o3Yz}>*vK6=@0+TABw$L89uJTXEuY}n&@K`z}p=C0G-8I|%A zaGy#(?qF>H0smFk$Fggul>ToyDAkqpEBBGX%n zg$p7mLprGkqo&sQP~MLCD{dlR`EoCNYp~N_El|PYU`qc!&~#6?X_}5`3migWaO!vR zrJ={LQP20_;9WP z{!{E7pgyTm+Girw>`jp?VQyVHcypW+%w<~-ta|1A1dH8)M+!a!CjT&1HP9;KFFKLz_vG#@)!omGI^(s?9Tx7GX$5fA`qZzb+~w9Cr&S>u2yKF{u?-Y8RAO4n{%$Gcpm zv^IkM{xq|38*KSihd)yV4{5Qsb3J5L2)EkQu$vlC8e7cdMBg5z zY2O+Nnsqm>ta5T$cLM0)6t7T>_%WsUp;S_yG=>N%C)j<5Mm@x6Pj z@^@k~rIq+XMGkOR9X+A&v+xRQJ9l}ImE4@X2cd+oe|8M;2!bI}m&9#li*|Ac2+#;% z2ck7!nPXCAeyD~Ad%nYwtlw*vby4T_L@hYq!j}V=QAB3Da`Ox3q8$*@*a2fegPf55 z^igTYu#HXw&AtsD>Xy3^2VDS6xmw{`b|-*eH2#bbw)KCus+=*vkZtG5BdOvIbXs$R z6glP;@r<#SB|c<5T~PI+?ZH?C-mn#Elpj3_OXGQ{6rLj05PHn-cc#gdPevlO*Q~Ir zv84o<--~lQ8{XZi=@lzUI&M*0t7Q@BQi0muHS^+$4%=FbWaWW=XHyx}F~c4$KlgGL zVJkQ^7*}=PBy87luQS>G#0niz3_ol;c|AW$51#NHlc(u$AuJVQ6&%~^sNo1+f|-(T=oS}fjL`$?A;^$SiWOl1jDpzG?h>)Y6#SJ;;m&(e;y4> zHRD~HW>H_hHLqBSA2?Rrr8Xm!`8gZ+F!;R8Eh-wpS8ufmUvD!lE^g1A6>8-6W-FV0 zaW>UvsiivB_LHw=@qD83jjnlxAl`XjsmtMbe&qU%Iq|8;-L3q{uzyYuh7_?W?@nNG zL5W58VlvAng(r->rSOkQptbo1{1fgsoFQ{o97VV6&Z zkxyIwIPI}^q*`z?dR|9bLWg2jNBZWV1eY@wai_<-C5rENR8tbRoElyS9|i_RSpK0HkMiMEHe`o zc5XXUR;3ur-|B0*K8|1SypiQ=rLt^XQlZYc0T9mNf9^T)^W7Szi`LDpEi@9v#|f-% zn90CSl3r;iM1Y3)GLoPZ%4Y{h?O6o8+rj;ap=(ybGm0aq)E>wLJb`oVG?3lpvs-(V zKi3N}L8fK`r0o(XkNCY@S-M{N++V^{Trv}F7jyug2w2GNy=F{N>qpo(AGmifD!iDm z%=f^V(o+%2=Sz{VrO=7BJ@J2JYpA!ay!_GweEB?j)Y*%9b4{tyO0*Jr6b#7Hu{^0G z!${DjN)qQPTXaS3C!xqLHW13p>4eX@CT_m_poP%U;suRL0E$-mOQLK%=lVHkv?+np zgr1i+(D*`dmamMwfoOV;BGJePp%UynaCfaMoxlD5cIBMvrz>&js@6z*ub{#kY!TAK z^gPCSYN?*wgAr}bN-j>k3A7v6ybZ%^qM18w<@GDuT8?OU9upBwPERKFs2SiAuWz%Z zkswJeKffc$8sd|G&6Fqi;P0CoM!c&YmXt}DYn`+HJY7M1c7Ev7*Z$As!APMH4ENYI zzjqv?&Smm*Zg{T7u;Jm1ej5|ROgrNZ3cTl&E9I^Pg;PIm^szZFXyk9!d-nipR0vuH z_BMd9v>TRf0Q_9T`Y0Q0!U)~^6t&3t&KKgxcCXQ6;VuoqTOEF5yE6Lj6Zn6-wEnqm zigKmlIi^3qI}JP-?L%!#q9!Zv%tMUL%J!49Zgmi(HsXxRt2F{S^O+dgqh?j!7#47l zE&?V8Ew3-zNYReH_db=(e}oFdO}Bt1&l*(g8?;!xBKgJc=9JBiM5~$O*AalKvLlp}xPAuSIqS?&ZJjA{mK861YFH^&giy zTeXrM4S=AhNUCI{fJfCMZ6XlUwo7=(q1hQRsWvWHA8~xD?ZNP=MI-M`-}rzpKM|01 z3^d*yEadD{AMuqP@Gqnh2j9CW=w*s+Z`(R;XLrZ*MHbU+5SD)ZQaXQBsWRk?z*_!5 z1-8yQ_ENOai%pCkzI|(X?YkA4J3yfiNvkN^Rk_H_$_2H0q2Ijw)r+?aJ{SJv4h zS?4ZhoxhcJ;c3=I-anj=|BODFsNeW>v2Av!QY;?7`u zJ2(i|oBAv3!nc<%;>2+m0@JFq*K`6Hr!rMnrT(E_dwO!V)4bI<_yl=xzH;`H-iNE_ zt&$HL+z_W^_odzX%S>i{Y>bt;_J~$Y& zjWQx;!L-MnWMgcR;x;Nq_O%2?9XPoyO}R7W6o`a(5lR+pXVdJnK7LX=?c>;4$n^UQ zZp&@~G4W|5(0j1hvc8D5ffbgYoBP0?X~)h>f!#brzV4*y0!6nlFxWmg@TUf%(%*4% z`&7vjqj`5|~7Cj{?2c_8FV$*jxCsX$dmya;Ep zM1aO&NQafW?%zq)PJH5U-xdh*(S+SQV5iv8A$Dxuu_(swC8rH=Xv((se<#=@ck|BL z>Vb#N`Y&{Io4U*89;I<6%ADgM#|s&ryLjCC$*$dp9&^t!)q4xuzU{iVFlm{RDNn!f zs+ui;0j3PvQLY+t{OQ>$IsxK(nYOD4OpUzUT){K| zHceSRF{nobP+~v3@up3Lo~4-cne%Tm>?RfwrZnXJHiW50?DXHYTh(S1@LGf*u(?tX ziO<5N`vr(q$;wJ4Q%sQHVtF0lz|}n=ad=|Tmpj|bBlcIW<~js?xt&aybT(TiD;s+N zS^eo;AQa~KsbPM~HhgLu7TBTv7$N^=}c99nu>mqM(~R~D06kr zW!?GZUQf?1xi&Y3Q8w((x#c^rcxMkLzrV^P5xvO)oEDIdb5!O;fz`6 znzVXUWD1wBh4!q^JDbYs0*2kw8M=I zqABFgqI)0Df#uKNZLn38RN9uRKA8n@T5IP$Ex2SxmdB{2fQni^xpzoy-1JdRbNRiY z?$V=~BwvG~$b{D0GIPcE4;D%jO`N7Vm-Jz8SkYfxCdRJXle7hYdSO6*(6{l~%>J&2 z>@`n5TS-WWG)hlGda-SxJ`|1P+Q6p|Cz5Cbo72{M2=MTg0r`g1P(;eNPkl3DN-~L| zp<;+*y-rM+)M!-HLi*sgaLiVqYc}zHstYrvbnBFuOP&VZ#_hc)HXX5pqc6Jt=Ovqw zeoDH7PU<#n3$@a$4P!3Yb4?ZMkbM9wWT$+mnwjFK8TK*u!72zihM!WVsT&-P3olcJ#_4ricN(iooa{byFbDbym_Kx{wemrOn2Vfu@s|t871|We|~Jr@7bwu zCQ}5Q-a8ZjCf$ji;O>3*uHi26O~Vx3QjzaWv2O|WpF|g^Kw!%%P=+3(pQig{L>g z#(|aZnv_Vc^xXA3#0szICTen@)tQ~c&>3H^{^P@uFmyQDu4;?0IX1O!@h^@v3Tfq0Ac)F3JGVdwaXHUk7R0Iu_pKBBM2BUo|A zX*=ER6<%9;YR6{@QjbcKjC0o>Y$T(az=kd6^_hzBSe0XZ(B>Dl7d zMa(H0f9vTIM4&@^yt4vaT-WlqJwW$c9{`T<9KkiZG`7j;Xs^4=;AvHq#I*nlW|p%N zL2JfR5PcIhz6&{OJyCQZMoAe=BvfDHiYHQ%mBt_fEvyr-;x)cH8KxpeM&^2ZjR;6gWK1+GzKu4ODQnD?u!MbdF|>-2am{>vInv|5$e{<)}NM0&Kd zblYF9HiWE}Y?`mAIcOP89+V>Fbg}YbE8NstFJY!&*ec~5k`1g58mS*j%GWF+SHRsL zZjo8y2mh>}RHmPe6~W&LdO zKa+2_=ihIrt*D>#hdS-#&rQeAR@A5bdytXd{NT)^MMtt0Wlg`+o^;N1as6C-uW26+ zCO7za9#xS&Cygn4sOhLUx_MvyZ2#>KZ>~$K-}>s%>|x_48O{ba?6dzceXQS{Q>_VhIB8lc5^aHXTZrXKfT?%Ajv80fxn zqq9IE+f!8+93uUX#c1!?Q`g$sSVJiC2YTN^gLA63X7$;U?A+wzr*_B)*)4;pAVtwy z*C-Oi6ciT>^q=o;@2@K_-cq2}6l51?ANR7Zmkxi%ac=N1^R~bP^{?7wVE1D{rg7aKnH{{&OFC!ona_4i?lV$q0PCVEyKRaI<9aDey zZN97%BAutkk}Eelp#8}wVtRVIuXMInmQ-Hp>v-MSBlhFm3L=i5Z4d^;@ZhXYud%*e ztKOpagW5%AhxUFKrvY6=D zfEd4EaezpFqjjoW2Hnt}`uY+T(bjl=s!R@XP)$|kDP3DghB~iR5F8LQKZ9s*?Ffra zhg1i;Bz2kA!&(30_1pgTj&xZv&JTFd-4B71W{Wmt64xWcP_HAha|x)i!s27*Pt99h zm451M8+1C5+jO@#bm$rfo_5rqh0Z8jQ`IQ;%ht?~xuNTYaOuU1Ug)|0t8e~`aUlEp z|2z&806-fA5aUGav=HN1{13+Qj@}V{2W?%?_n+I{c5Ls}P4|mEizJBV%7%IHtY#jc4SF5Q*_xmU7OIw(<-;@HG({qew z8#LgNQoz~0mcetb%$IaU!my*c|I>Q@?jmy@Peap$tu8UgNay+bGl6m2tiPukw@QkN zta<6vb*a^@A=r_kXC-Goky%`4SshI`Y-r22f#?q1bEnHAZBX8o{}!TC0Y7FNa^{ZYUy!6$8!g#=iTtrKNpH4J?! z$!x9$klY$|nn}Z6oKUf>5{Zel-+9Kc5O(oUd6+O$-$VZqA(pVrWm-UTI6nv5vhc-T z6$|T`B?v9LDONJwv+)*fjZMRC%=u$@Gl@r1q*1;-ADpEpF-6jM^zX#`TJqZ`Et|+D zg5>u)VUhtQmr`UHw(O!_Pjc$L20~pDe>Tq~wMr3&Gfk*Mh5}&=rDcmr0y8j~a~R=t z7|{@$Zj7KD_rNiF#f$JF7KdZpH_1}LA!bk9!pJDmM2^SEr1C~38E++SxA-SYGeayz za}ms2F9zw}y)D&EsaHCcWQx%RkewB)0Eyn40MEgCCkrLMuTHQ_e;>Jan>nO4;<#2g zgP|l16u>zWCops>79`*_?-+Y6Q37nz4@;OgSra@$eC)&$M%9;aGyL_w>nN<{A^z0oppZVB8H`= zulfFvdc95bWL=2175V*C4AL$+Sk&Qvr^w2AqdTib;TIR{4Xbv zZCzzN#I{v2>gkB#KiL$1fvkC>G-scL5$HvrOt&_8c6XgIY{|>&OPVmMM>O6{BeF8?JZ2Lr&$nT>}tV8$Koi5UIET7$c2nsU?o2r~jFyTZ4*>5KFxymYdK z5MFhhWOMBFWOgNT!9*_kad{Qy@s_|m49Xxk?Wpgb)enQ@D7Q_9!B=&7PmFY4GpHst zi@{(9UStZ4YO}U@W}#g8^_r1X?FZLk41|?__1Z7%W9i&Jy>%Wzp7#8j`7x0fwE#!m zaKK6fXD%nXt)5}+V!b;d&`N%2LrT}U_%xl03dbW|!HoECW&}kGugCKr+J*XEJSvz? zcGF%b4df^(#1T|bS;ORVDs9f>l%|c_A?cBG<7S9KfGC#ASD?z?B4ENNsB!~9`&_2g zkX~gR?7zh30FoKJknk~XUtuRk1RODa9NtKZF@~J!*q2rkSY%m)V;B%qnX(qpHx`&n zZ^MW?QQIU=ze}>9W)sS*S}jVdROYxVP)h+p+E$=MMEeGnHWA|3cfDpEu{Z*glqa}>q8o-llu{TWlrVwcyxA&7T6>27Dp3O z%*5wCMQM)7O>`Kf9hP&MT*_4@`{F1s+4p}@_vY_Vw(mo22gMd*1KQ_lM8% zJ-$DEe*63b4hJ*Wb)K)+^YMHX&Rel@7GLdpuNN%xvI@}}4LLd|eG!kp@#t*PAZ8RK zz-EzLW4`DS%pwJ_WoNHT)4x(&?Xh+%dHPeM@m|9|?($uX-x5SLGRGRXbW+Iw-Yl8x$-Dn8rE z`m~&Oj*s3GzH>{;iw(DT^w!_b?K?epgX`qH5reVLzSA1o($1J|+Z$y1PiX(=(}N|J+*W15Tfach+z8Q!4K|jEB>jUuBHSWOp{4J#ZH;p; z_S^@lk1w_)uThW}AZi_*x6G2(B%$1We8tdXhYL9&q?p>Z-B`|>qW>-JefX6@ zqs0*y_mna6oU53eJVJAI->qF4b3pgr7el0P-+Fg{)+5H$VU&)a$?Fz)7qe3YxM}}< z@^1W`b_ZC7KblO&I9ofE2{V?y8Q6S>QNDa;1xfar!hTpajw zp-719y6%>H0#sBvSCVWjy37Ch{qXpWs|2uGSYuiD?VS+^Oy(C1PlJh z01^Wh6+FnFY*aV)yc8NWpsmk%+1rpYq<$TJ~1GqH32kR-))WJV$zdu>Lk5XaT4IQHVKQ<;4EYHwnylN$W?E72CMri&tyIk=9Rx!%~o z1@-yMGSq_=_ClO0Wik{@TM_ny@KJwf&Z=NOZ(L|@gL#R7GankK+IXovOaz26N)w~_ zmjM4d8|TTOmSL4WYmuW6XNO~Sb+wO_*&iu17vMI+g0@#8Pfr&bq7sCNJd`+!W};Nk zmo027MFmPCyUT%9FY~`-l>py9i~)d~2{Jx~R%?r~j8L2=+StzqI?4je@|>sE_^fTE zztsGkT7ObOY0_3`&035LxV*%befrf43M@@+p(j$nXnL6UFtG0|Q%{8FN-%O6^ik)& zAAvuuj9uQWFKHA&jq*;V<+Go8P=AH+o0S zZ_T(z^|Ld??D$TL_2CccPIZ~*teODy(aKN0oq;kVO$JsQC#B zk>v{mwmkj)|* zcfZ~d(GmN=p4k084YG0fWXtlcwa_UzFXC*WDO~_KYCsZ$bCb&QyaRL2iuQ-6YC{7D zIY26cCH{djZv(hszV(#=x>a&)R+=59@wacZCm%Qqt%oD3iY6_d?1Nh+_dhZ*)sPjG?K^K;kd{?j*SX@p>z+ zMjosyKOEd_9C0Xd?7L;n?zx?1iGTEtSgk*@Z|sO!NO1n{l*Z@-34zTsqmf}VVP+)@ zHGCY4cHEv6xIgLW!QI~Ws8qRRT2pkB=V#1R7OwsRM?>dbsbs%u@!ohiW!%@OtK4xX zlR{%(vdhopu*W~@k0P4P(&73TMgN&1DE z3D5jgV_%QRuKT(eNgZ&v8_nFA~VdCwZ>Trv-afaf!4lLK^$A`_l|1gijCIt5Mv(H0l*baMn&M# zdFUtP_yL^Uhn||yMYPim+(>s*!>!EE??lG5Iir> zHp6CF$jsUTteqC6$Kn}Fi_DQwO*3R-OcdR?ALk=HM^djglLKRv>uG@o1mqFRgY3uU z7hf2ao0|~1PQ?k2!mz%{_>`S+Vjs|E@h?@lD|~QN3T`ZIFU;jeXq}LrA%5tci?qS5 z!D=f$j`K`?<*JDP&rp}KS>WL55Rw7gGW)uG+|N!!2m0DE!Z(Z9YARBL?tDC#AQ>nWFJ`j31!_^E(QQP*#| zYcU=ys~rEPg?Y2e!axj(d_OHk{pSw`%IDa5M6RhshP;QEn#q=f-%tNJ5$*qzfQ!FC zLnDkLz&ydR{08iV-Qx)<0~TADCRE6jGjG(|(^*n4Dx_UaI<)xFgB93N^fMDZ8yyAz zCl6+YqPL@;r$O0~he>q98lPBy3o)GGoq4+WeA2ujOx`y{!bP}?_-0bxcP2w@w=)|UmN4;_Td^?6TRr6*Ip#q`9k& z89d~wgl(Mwd+tbNZ(OQrGo`6PTME}zutOsQc0}6Q&b&p}?Eba|YrbSCmd#V9xUvbb zuQMu34{wJ-hN8A5Ha`!1&*oOUyYaxc_zEgO{BpnsN-i_J$VV1uO-!;; zg9o%>-K}gxA?}NNv{`v_gq5u`Q?{jQy;|*Q=VXL$@1$TS=+SWj6%e6P4_moWBy+{9nHNjEF3SuV)90RcYC(vAUio|kqB!I2>f<}nN+?!x7 z0A`8_`X$FX4IX~dki%Whc{(NqdOjz=%g8G8^sbjs*7+^Vyg7UEo9z#h)>uD_1$O)I z&synDQM~M+d~e{!>f~D4$l;QYz**@g`IbcfnyI-8sQcJa;}`CDnc6;burH#@3ONzP zuw|T89X)Yi&76PqaF=m`E&z9b#!gC^o>jtinhHJ7%y|k^zH83RJ3W;A!YcP{F0@uf zUAVk*pPONJrB%(VMZJDs=oXqU6E)xFYev>-M(Z_Wmo&fs(fnbuG$dWy1m*uPjPpMl zn>$03rB)G}Y!mOkh}z~f^F-RCyDz8wzc9{!8k-d#Up%_^db%v6OxG^y{%~w#)OPoU z1OEf#9GrGAsqgK~V~H&}F9-VG&6cNJ-efoD!G9W?|6rU4ALg_!dwKidoQEIhb*%jU z@#W)(pZ?R>AQ-1#ozk!md%D*WDfLdcm!Rh~*!T#rynK z^y|yZU%%VF2_GK!{iLH&TXkZX^|V&$zue612fyg_T2W`$1Rd7L?FpwI6$tO|Uc@J4 z1X0O2w@_Fs4*j~k{`A*7wIC&=Lfd`r`=cU2D$~`STk_gupp;ItPCk}-$Eq9X`H2D0 zCiR#9wa>?e2ek!-RwRmJ>tslCj0Bd3j=g9SQ=okdn10lHUdFzulT!A9rMN0t&EYhJ z?G0T`6tm~j1eCP_0tSf|tZ-Pbm0hSesV;r7q?n@iR9ToLD-IXyd`x*hne0jdri6;phqejp|#*^?KHYNKPD# z9I$JJkxebqxW^eOef`HDJ};TQpuq0|TUX2X0ZaRMN9!ppwvOO{(%jUP^h7q z0!&|=zB@%n zn5u(VB^?6bh}O};q!P;eFcK>7pogdlP$45zGds0ngeA0a5wxup1qboEX=cQ9@dX7r z9GRofiq<>xJ6G7EySspF>Cpe8FbQ?`Y~zt|j)0~sEpGqU2GP+Ws(3-KG2scAD5-2M z!1<>?SaN#_t@WB~m_wJGWLAi@I&UOKYVjUkCIS9FGtsC?1q?F*Ek?bWqK)PokpyWL zs=xSmXp^&8Vlb5#pvzK0n*aqh+cw|}3mtQ=GpHm!Fk+z_3#$_satJ{1NZkWhsqqR4 zWgAg5Dh|Q)g%XT^k3{1L=v=XcE)%3r-?h+fkTkr|PKi8g$9Hm3!etA;@C%Hnl(B1*I^p~dF`vJm{i&P75ZA&rVW+$4|<&%w(vc z=_6cmKV#nKkP^IgGHRIVtPqJFt}9eb)K3slN#e=u-h8r-cpjd>DkgWR$QPbegL68! zx8#g~rf~{vn!?{$ETfpq-}M)F?S|twk!PLY#$klhQ8WgiMbhrKE6YR+l9XHvwA0N^~p$*0XRH5)6fqLX~HX z2od<=*;%_l2n?H4mU8pi0uL8x+!(k0bp)}BB|b<$$GSoKP1n+wDfQm3>T_X9&~T90 zcsDOq(*&oABl*|!FDl^Y%7>D;9E6Cv9?ln!BxU?T?gRoR(XZV5>II z8i8HAim#AuT1~T(`Pi;C=_;>@%8Xeb&lmM5AXznt_yOk zj@%fvbs63^8y9+1Y8_d-;#kH6hwFnC?f3kjf?SkKh^^Hg0lTG$qcvdEt zzh1aVJLFf$tK=W6V>c%HbpLwx`cMA(8B5;J>>T~)qgM)G5aMAGxf) zFXd78n`#(~=c0YoaLn56+Vk!O@QH_e4`Fr%J18_>{h9i?!JdUC7pB#Wzm4ZScc&${ zs|*dRePevpsfAhVZ!fFb)A9U09lAPKW~YZgo@%RqdOkm z1@#+bYovr>og{ZvXF>Nwj)Iu?(~UlQ!p>Gg5g%s~s5qn^svB719W%y{(?9`$G(y!+ z=mTh&05KjQDR=zM3)2!4)K-F4VRBz2F=>+Yv@sA(@^lVli#^MiR~pw^>GktbUB8|f zOx2gnkCm7N5aXo$PCXmf|$I7EYXDi$YOcuEN?CMy7hfCdt@t;zT89rrVd)St+cCoOVC&ndaorlR#JQ23K=VOL2K0k&wzGfP7on7;j)yM zSqdvQKsPEkJ&_lhp9y+^Zpd*i;4mTqizPAgCd|0R%WDCLhV3sE!)MN+mtmbEj#!jS^}B~I2`&f=g^UBg49o}EBwp2 zf}o7ravdk@^5jK)f+n{QbS1`jIOrF)Ah89VC;2<|q*kb$lX(EuAEK3(n9m^DvXB%n9}9@VCv*B{*3Si~@R7b56~nHLZt@ z_;&2T3wZ5By(Yr=THV1Ed)lqt8YDN~0z)le6eoA!ZaOdrT!2JOu>|mdJk?cK ze*BTw5tj1Q!3zLGd(|Z3VO#66BFU`l025z|i0UdTgjlUUlaQFO{XiyIz2~S>Sb;w@s8VAlXYoR zYb_VmSWdB#=o2tJj3}b*;_@Yt*=S>cFj9gdbJh<)gAos-QR>ut;IVdCa-f;Mpgyi0 zjpktB_1dCx#I_m9+OZuDs0cKcSy_4xJLLNxfXPu3HpA8|@~E&9>?j$ndnv z*|o<9W?I+!FgM0psc4w_gxtr?<1`K$aNf|0Xm>O^^|AB06`+>ixpy zW=EIZsiyG5$A8mRxt_`EAQ%-rvDxFMKoBzrw66ksZW1yf(TR*5da*$p4HMHKx5>?r zZ8|e?RF5p9X`B_ynhr=q$Fqb(i3;-e2&$d`1M^ipo3#fK~wX9kS9b zw6u=#MBJTrA#u@*$Xl)V$y#D8gm^#oo0W~Ry4z{h^|o-rps7ud)~yG6|7;kSFcVf~ z5iXDRVg1DT-+jAcdUpIOH#vJ^L$QNag`}eR=I(aw`o$AU16cQJ0v zReblHHgI9*TD$Qj3H3j!+KIl(O(q?E-h0zh#%n4I?{AU!H&*DLeq>VFGQMmysA6OP zrtKByR(E8=c4;5y_?*NY8?{b$_pjDV+)N~PDvWo3Pq#N=Gn|Nz{Qu)8*Hy@mEcpmN15ckrQ#H|}I%HP#~t-)exxzXUSEhOIErm0oN0R%t(Iwsv!ex`RsBsj48 zSVSVH=G~4mlX*EN{hU_6nyNNKaqs%has~@xgF7^}Hj1(%wd+luDl6vQmG>ItN%lVh zgEOTPw}7hOlQwv@-HTux?`drj`__g6sz|artdk*|swE)wgw5C}F)q~h?HqvZ=}dp} zbX*_-69}I{f-2kia~`NWa)XA%X}`*+Yy&mX#NHVacK`XtC>O{Fq}DLal7r((ysg-2 zx~zVtErHXBZAsR?I744RuoHlhOvxB_MCVCE5S=s?vT27}ddt(Qrn2=V`B}iANtATc z5tqBcggT}gI4rh({cgTiFEA7Uq#|NwPBW@-HKd&mX!Z#V7ZkhPzlurb|0);XyKIEc zpQ_8##}1gt4rg$^_ubp4F)BQi^X};Cv^pk`{A;!YW%!u_LSISXvOPK?=sqwrFn%Ag zpvvO}`*oJm=hsvd09o1&?stiw)n2*!gns5hy^HhCkR=99=sF0KR!J_m?PJtlv-%Z$ zy@&B&aGrT}!^8_`NKJq1X99N9A?>jGI>=~DVgAr3{_K)4Yll2)78DH-6fx+$8}T^` zGEk}EQKBzz{8=&l5qE%H8%{@9zEpzum)mN?*F*MWJ%mYbh+$JqJ6FE5`-SoFph43X z4vWa{CZ5H)75+TEHs!f04+K}5e$0~eL?1HA3{PAE3f2#;GemDX9@fNW5BmfA?gFk6 zr;^aD%O^-8f?l|{Xv!;E1?;!IyVtksnx~_Iql6(puX=Zqt|BsZu;yo;<-n|}znchy z1h{0=X+tpqgk03CcR#yhV3aTr?qxZK)Gkk3!GOopJ{I-fGzL85$io!bUOkcI#SQA# z$K}+(Got5&e6GZ}aH@gI;KNVPt0oVrg|my%&$NOJo=i_k4E-dKfY0JgG4$fP4VM6+WR$^Hmxwy(d>DI zzVvHy9XIDX)#o~&%yqex>-u-D+dsMPpK?7kxp(1Lef_UhCP5kphp){q1AXcf?KQ)` ze^)GB@Wp%na!%y#qjw(pU#(z?`P|5559Q!c?bmkceTLfEp8755D(!uo&0tkR_{j@L zwpS;=H?iEXv3kYsYbc&me`((Y?K`w*x0h7oO>R#s7$FlkC}~z_Q=oxz*R}o=e%t(l z$~Tb>3994FD{gf&c2*rbccSR&icOD}f8|PA`v7!&evM}A@N>n11U;|i1Vsqv)X!r} zSM;iZu9cC(3kpr3hKsJ6qlBT_)Zf3lNZq8j z3M`G_PG^ipjJs3#9v#2HwK}(p3pXq&*IFAwJc`<^p|ow^xntkGtrph-HyzGxxq8<< zVQ1lE;cV@{BH(+}P$1mhykPg&4?uUYWB&noH`;c`(#Nvdl{3ak=J-mUP8m}sNa)HY zOe8TZ{YXib=x}^?(ac$-OPuLHj~_MBPawF8j~31Uq000GVyVHTZD}i4zB#UQ%X_RM zhzWpRKb6{h>Y3-_i|af9pK~e000K}&A+$KZQzW-^)LV5T^@~*Z+7qGo?w=)EjEXeC z4Tf9+xOqOE)ucy%wBQ!YrRhpJt4Y6N z9LqFL#qejF-v0&TY<*FoZ{nl+C4L^dk!}JSc~YxTP~=eH*R%7}{9w9)kC}=Z+Brcl zXs6ebx8IKRuEEkO`p+*VV{CmouQnE2kIRHp$6_)S6bZ*s--l(j!1YOM?(1N)I~YM2 zkB+qU?%do%({~@<_hhn0(S>O_kSY>FMm=Bj+I)UKJ{A{jV8WQf3IS32Vk?;iYGr~+ z#qx&PXEq)4uBUL!L0;25tVHMf@sL3qy;Sms`u1{z&2t2J`3rlq_b#^|kNY+}rOf-j z)4x^=-#t9Pyr8MQ{px$w)f$hbe}cxoy?uCQ>8C#vevf{6eedK_P4J)JV?Vxr`lOji zK6>j{El=OZ$vU!tu$74wfXYKX zbDja$4%XN=sf)FJ0uo)4|c6k3YKSAIxNcn70-K9VJ4D2tl4I$G!8bEE7J*b ztvnRd&lF*F+uth(w{9yF3+NOv-@fvv65!G)TM?qsxgy$WOB_Xp)kRVs?Sa>(Rc?k3 zqotjcP>b5lI*y}JUBEe;)fN1+R272T+~;6A`W*@h)%3~RE-h0YuS@5~%LSph#gin3 zHbbcr1S9*d71gJ8d>7R&NEWiiL#b3~_pcYpDMe)}4~0#Z95U?VO_sL(tX6bU^rb2S zkP0;_f?`vVjjX>)MQD!UF=0sYyH{U}NfvUklhjPXD<&C=cwH3J*689+7dnL}^{7yR zU=KQhEjVf+LmipJ+f|U{!z!jRX#{~gRLHuZb(5V0r^>{yX=z7MmdQ}bmrq+ZQ4Q!; zO-c;2cO6pz23=fC(fQ55shd)XE}7OvfWOqL7Ii(K(F8)Q;HUy(IwBT9y?Yu-yBnCo z<0O1;y#g$MOxctsAZdzH%u*35!%)wbiJnj`HEpv4t(gsUF2faf&4pcMX|LU zm{NwV6`hpI=Hols`8~oA9L6tIP_3)cNdAF|SfOLc)35{pFO@Dhr~keLAyPkzZ`f&5 z`hLv~orGprt-Li~ya40L4`|p*WP2#0#eAORI!!^MA;Gp#fV$d5Ay%V=4of63Qu5+{ z4nNw(m$e(xcz#byI`NSi67w%=vW5dOA0c`Vsw@pr2X=xKz?(}*lhXFxGgCo(3ozeO zVWK@rO>FW#iFsCp0DEc)uj_BJVUz6f{nTQ>Q+R&2fmo)vhsqJm@f?*=!^P*A)uQt7 z6qWHJbV(Pw1534HV(TCg7^omWYgW7s);vb?@o z_yshDe?2mFef0euteL};b*|su5O}5mUOX5&&iQst4!hw>Oa-4hAl#`PAB*jNm$~1zd`?d18{SWt7*P}(5vOh#Fis74siQSh2JT^dnNH_uE%Re&m2wu z*EylvdDc4XdwT;oE=l*AsSjGVZbxn7|GTIr0;oX}EJx4_qFE4s;^pOo&=kbOAUp;U zDIFah*RS71gbd?3Sz-i`FS!f9Bkxib;9mVli^PboAc5``{Y_D(rg*g}et*D+pqF zJElew6vUh$I0WGwigS$!y+DeZifRH;BDr(JpFC?toXMAw4#dW!PO5#PsW4;-YPKXhig9sBO)ET`0 zBL9CBEaH3-f<2JF1))AZ)}ahh$`f_<_hjYN{in1k zmS#K0%QIMiTTe=gCH)%R{akZLr2CMBYpP&E~@$eurW5# zb&;nA6>EHh=xRat{;QjLVU=c4xwgS<7yaRT1w(>sJNXN)*Nr=qT#B;;&c-Y&!EXJ> z#xUM~3PT1A^q3T==9f17$HolE_f?SC?n*~bQ5PNaZK^b%VwAZ-j~&WlrG!{+GPRkz zWABuL>T=y#-WJ<9RRQ$3#IK6)-K{nGF zaT6phuq0_4a*rlY*h;B7U`A5)N^5(Fb$bj)E(_uM@-;j!qJM9Q`@5lD^ZXoTahNt) z2goyd3R3Z=x_74(diYYhw(jp-O~sauj-Msp)tC9paPnWP{)~ML+oC9C6g@Jeai*!j zCSA3Yq7#2@m}ybOJ*zIJQ3AvYijAW}LFWjiP+RBwOeT&Y3YB5nL3GaZOOqpQhQ;i^ zf!A49$ONleWpS`sEsBNy@)3pNtL++}PsG@&zk!Eq!ryfMuuW)XjNiGx(Go?znP$?V z3}HA3iEi*+@E^;oS}$F%GwhAcprxS}XtOj{XpQ*x%;^j*F%V4P)(RED-&+-T>3++k zgm&uwhYtZ?rIt+8=~Y1L7?QG3mdy(6Tkt(TAw=stTU1P0(;$EtsefCitc=^(Fp(z~ zD@c>wQBgg^SuT3}@vf{8?gQ^mN*P&DGLdoAg}bY`6CIHa1cWhmr@ zuCh7HO4g#CWeIXV?r{0f4b!-pPOBs8|KilJ-yRulA~?8p5Ko}vLI=fK)U@&GXV#cV zw@@u^^4+>k9%jeRH|UjiQoj?*P)a~TW@w|C3WUsbb@=zdt(fWek3m0KH8WVZT0NKQ z*Gu3SYqWdk-KphMW6yAg&*Us3ZIfZac!dffPpiVcBlp~LJ160OJRqRhD>Nzv9j}vi zL3}~hkJ?t>Ir@j3o1V@dEEqc80L`C>x?b))54si2Q3{|%m8uEqmczAq4A{FWln1~W5>x?zlN%QmUL2#1=6mG zGzIS|<%Qo;r*A8ch&v(91|=kyC+f{4S`h1>)6afb6b!2F&BQSm)$+s%y4lJ;lyJUx zcW|;`ON9t`6~q+^2tvOCK#-aY9XMOG6sTvs2}N$v%3L;`zJDFd%u1)}qM-@&pqA(NG%w3-yrXand2o!6p>5b1;-=va+w^&bAXt$y&kd4YT)~cfh?ooXnvSPe$z6>(jQ=AxX6lLDoj0D`3_Q2i@_TH=q$bZh*KeK3$UC;c z{rjVHlO77ou$LcMN9y8ZABrzr$X-88O?ta2&HH}VY{!gHE4qk>St}!Jd8ao+foCC3 ztI8Sigo+b8z2`nUDdcb0`)Pf`f+UudnCk?*<3^L+13I-WSQ3pcx!w!OvUE}MZ2yn; z&29Dgv%|$~zTzUKAtY`P|LciQ6>xOy450zox69zoi_XA7gA?<$N-3zD<>8A3!2jyuTUa%qUq~NXR{8vN~M zMz~Jey`ud)_H?(unQ$hHBo51a_F}HPKUGCpc=PN*57p7l)#9CA6`h!nMPNczOze@# z)Jeb*eF!PEgtw$@(Jt_Q_9`O*n75b}hB>OhhE#!8CZkh7-i`dCnOZ^GXo?a1JkS(E zN6QQvK-fr=0w1Y5=?gxN~-Nou`fc7h0F5>B+h zyCysBBgi~?CTS9H$1GdV^cx~{< zkadV^k=?fYQB$lPK#;J=kjC<3UB~yT;Fn4Xs-!7yoWp~hv8#!yB&gd@IIt>0Y<9jW zHqKPz0lbhXUui2-$fMY>K(s4*1SxoSHccVgsOvzx2U)8V-e5kX#Re>bx*Q$Mir7h!#z>+v~obmkEvQo{}7Bi8T40~1+$0~6zR#g=CtQuW~+z?B?5|0llewX zZ2l8hKuI3grlA~*C)_6NK0f800XBz^`<}}v;&yCbeWzA`T<}hhZZu(lY`}C=p}HslorusizWG)Lt(3DhD>Cr zOr1h-10ZzfV@9$CVX@3h#zn<2e3eT4?cyJ^Gj`Se^2R?2&W{b!K zzQS#8HNsG+)xVE#=F}E%v)c= zN7e6se9YwFN{T3oL}vR$2KxmRUEPTph_SifOZZ|)k>`XJuI3ZaN4=6O1qNz}K9*B! z1D?)iLRkrqhy79mEftIi!1d8!la%Nk&(xO!T^UM_qCXpI-LLdt=2M&j$tW1AUT+{{ zp38+5j>PR+r!f|AM-3aQgzX3PoLDIL4)t0wZyA`e6EKi(Km^T(EBuAHw-CPb3OiHa z&5gs?Tn_dV00+69JAt2Xba9oY|B-=f3D~Pv%tW=q6u3;?xzb3yQujN!*HdmH$IKNd z4hsF%P(_>iWHv0;jBw&=p%=hL#VA{fa0KY1u=Y}e_XZ)8G2Hw#_9qNCBxYXn8$aEu z5ZPZw0p`KS-4!zu{joVOF)zTIr-f5_z*T0IT)bqAfU_Q~^kC&1tpHxAS{~$#3EUwM z_hwaLs`4*ZvG%oAw+5MaUSaj0P25;SoKdy`3mnv+Hp*L++yIP}K#wQ*!-p=&nxTTD za^Nn*bOd>kQDA8X?kE5+;{6*FXKR#&qZym*WU$QvdyYYEHEb%dZnc`A4Zy4j(CCDX zigqm3~45o#`fT@NoIdEYC>;Y$YUvl`Qu=aSUXdEx?Zt&rS{}aJ_WS6#soP0BG!JX~y zEgS>xmrWjWh;R)fnOBuna@dGy@N&=^2~&@7o0fS{{kd`BSX$`@i}haud4coGyLeBw z9@3LRCV&j*i7yNzhV2et=uFvj6(LlIG;~yL~L8mzo7Oh3#m@t@gVnH6G<2#y)$bzHDN6A9eY9WKy`S zV$~tufU7qMVT~m^^TDTOg2`Vw4pIK-anxAQ4-PKP=_i|vKAhiEY2nPmryO)Hf(IjffVLRw@-S^Bit9sU zS|W>~X+9(?eJ$?;1dlYCU<^5?NdkH*cq0$iw=ow!09=A;05D@Q_E}Go*c&(pmyhzG zs}Q$Dup>GN!FO1{dKT#N^u*Akh|w+bnoI zApV|nwmW*L614PyNa~8lGuErwZFFf2Rb6m!a`|bSSgYPPsA%oWJh0`A3Br>87-ep` zQN`u0a#El0mjhNew!;(#hT~3x?4cikW*cn7UqnWULIi(ZcIZ5F-cloHCig=hS+E0W z3vB`Z>hqkLs~m*TNrAcW3*K~=SXTj80kHD}X79il3ePLnllYmgcj2fY_asD#Hpmdp zVEbaDY|K?T`|aXt+3p1FbIz68lI@-t^DOYljAfx`%8H$b+9QDoJagLOF9W7x2Ob~O z5E0v-16QH6%o--XEgRYeT*QBISjbISXUKz5FS?8rVe_*f2Tc7VpV(-?luNz zboBhrw-!QkSy!mx1~U`xto)6x8Xoq@bi-FC)^+Cz@41s}jCwfVv$Cz)v=!@2hQZZR z%a>a*jxUUYW=^~VOj#^bhGqBecg5f@aK)qzgk*a<0ViwTcvl4RN#m|@PMEk7iq7cs zC0I%0L<=_XkOOUH&F-VI=BzI2FHD!eiY{)mRFsp&I9-9wiDDV>uN?b|h1#+io{C9`6Qgi|;R3*LXvmI)Umt)m<>b~*>*uC{=HQS<%bBTm8VaxVym8g8=#fEyOTC zjSzQK00gi89j{hT)mhA9}FgbcLD^a;T;Pu$?vQ=p_nwu`1 zLgJa!JlaIt`ejW-S_U3FA3d}8kxgFW>zTDdwlKz5@a+1)lT|04 zULUx7y?xi%p}b`SS0*&4dODb^09S$OvFw)~o3rzR=x#}onG(B&Ciof_D7p3|UL&q=u97{fS7yFSi)lCV2 z6tkCa|0BoDRxWFq@1oE(m`02vwU)uk2oF9q5;(>D%WTQpQ7dUQRoQ=7 zvUuhL?0qV*QNZr5iS}|VtOsL@@I8N$1WyIC9WWOma8#{yl*NzP1ZwfHzU#nK3$Bx3 zwgOC}ocK=xbW|)$t%lyZP`2d!U8~5 zV%ff&@iU(CUVfC>S{RaML?Sg62ST6#)^#D^je0dhq2|V&B(~p?!N))&V%&ozd zKgweO%oy{>u4m&8hFI>u$LdbNvQztM>Orc=FE-TNL|WtfhshZHbmLI<{OAeq0=uW3 zGT+)1g!8r`)>Hi<*na{rS2HVzvvV9j^`$|*w8a6d@I{xHqraH}vZ(=TN6lk4{aL#D zPL$rr{_rkv^c^})Zd~LH4G7n=9Y58b)r?ifX{F3dURi)?NtYR@rUE^=m_lGq8*N%! znl!30tkZg%154(SJ~OGwXGpyw5YXBnMaR;Iz#Lf{^@8UlhvA-zvon8fr(-XVG@pH1iHZEjn21sZ6X-4vz> z$dIP?r;9%2`UacE5GfcJ6SxDqt(pf7wAF_veu~FsWybc7=)@YJ0_Dcs{@0~OIZZHh z`z#kIF*0g;En)d8(Q!0YT~26wDTtnJ6;-k_lG+MH82x_aKr)!sbhVzHM1aZL;%C58 z>vy}JQ_RAfGU|1bM9+KKF*M>@O}veWWWa06z@RfnwoiXjud2j`sRCsF)VSj$PC$ih zA1y$jC|QM$zU41RBoa)c_15*xZAO4XW&vU{Wu>cx(&rTJTRlm!cBXKft>?AyhJ6Mx z90|oRRDCa4hx_8=|HIaqN5%BV|NnjOoqegPrkbX0+NVWLt0XloQVD~QgvpW+rm}?S z-l;SwhC)$H3z9G`h{BX4*+xQ$&qT=j8Cxnczx(G5Z@7bdTJ{&`NG#BOe!c+GES&(dQ7hA?e~K%8qzkS7ud zJ_9_6VwEztvL8KOeKF@~*ue>@!Lu&77#Rq#oX>&6MCmr1M9C#bFw&bgID9+P_bi9$ zZ@>QJE+!1c_$v@DqqrX-;sf4R$B}J!6S7Graq~59j)#^$&d>dPY4>C+zZdcuj-BJ5 zhPqe3IXLgjp*P#d=G+A)Ym+gU5P^nR(*nb9S?ecA5@FM%Y79O6(9&%FOGzb_`6cz)X_+(Nl4&kE#{geo!0nl5Vnx^3v|ia47C!Sy3=5HY&r z&CcD^BFT-r#ekcVtjdL0VljAA7Ti7ZcBfJOsO#Olzn92t)y=Oz#zGQvxqlL`Z5ez1 zE_g)eyl$!52sakUuYE6Hw|Q)JR}fnwwKG-(@`}-50ZU33h}YfG*^OhBli;RM9*;nu&$*zXR7GO*@Gx*AT=%#CS82lp|098V!9*p54bLXZ*%mhi5S-TvvRiP7%1u)ybVLwl8_j3CZKoW}fJ87o? z8c)ip<-wj!=$ZsE2I26G>ju7O z_#9?;#8`ib0iICg;WPG_Xlc1JiDaU*r$iV>G6Tid-u@pcp)6^Z1|ixgdO)P)CAn8c z($_AF4AJT{EHrRcnNUn#5I1c;DBiS?8Rz_Fj-d~Ll17C@j^gGC$=pbyW{@0;f9Rzs zShnzP)Iwo4UhQ+9Bv}(NHU;BD_)aFbgvZecmYjC3|FHn z8zFT1s|w<>q?xdopckeB0Kjmyc>hNO8MH(mM!*vbOyE8Ew;$ptRKQ00j$)-235mkY zm*)L*qBPLYvjB1$w4!oQbleL^Kn6kQZi7@ZfOPd{J#(>P=Q=qP(gtu>vms0v8sM^#=oQrIJ1ed>f(g=`)T!iM?%)l zFLMOaeZG}F4!e1hlW~*q3EoBWevoR~dEH_9_tn+{-GzEj*k0T-CCMB$Ef$8MZcQg>Bd%kxNx?2c}$Yo z!%v-jr}1g;$9~j!Ke-m5`+euS+qaT`wmvOA_*>Cwx%BbLpw4?Y#*o@W9FE9lZMPZRfQ$PbF%lUT&>d}JF~Ytvvp(UWv;U^@TuU1&9#pu)}wUc zZ{?BdjIx`XEfKLrvrWn88q4jcpst#ubTea0(OEbS40-Omb*Z4u*>(HZJVRMCSHR!> zmCO~lJd$u~M)voN6yJ9hKG__+`_gzycWcEi?EF{Gsqak_>mdIT;rv!0e9t6N_CM++ zQ{|{ZKGRqNyiY-cA6h%VnLJAN-un?njIQ1P4ooEbHs8KHDui^VJArec9#ew7xm3W} zijJtr-iFPFy=1>Xr3Qt@AOjzLT%I@|W3rrs)*G-Dn7$B_A}AN2h5}Sya6FUd74ich zC?Ln31rl_C5^kb^{;1n2l6^S10R~I(jIqyd^o<1j^Z{)uEF(r@3?mG8w@zwQe5xo+ zYrrcXLrwWO9&~isEWlKRZmqlCI+OMY1q2EP3&9$5$l4ZK)d=vd@8s`C-DW{V&WS`W z`ijv3$;w)9~KVun*C_4KN6%>QF0i-XcB zr4)txLUSx{7FrUD6}q50W4y~^(2T4t+Jd7zJYX(^i2kU(J(^+*oioQ01O7{!C&y!) zIIyk}KSzb~r5G#HjT48FWEfQp9VXbp3A?roqnu)FL;B?@Q!Dkvn8!nu)EiFM`ah2c zOo@_SjI!lG*w93eJXOpvqh_G`Alh}L&7io!pv_@sy&H!Ian+$zAqH1tW=e<+03GGf zSy;$xu027{iaU9=<>roAD8=6n;iD1X4z~55XR}U){5WWcYlSpQ0~tDJE7Tvk1vF_i#ChZdN7L~r!zsG|?9o7U<_K!8vA-0KNswDJ4|l*~T>5clb~Jj_nPtJPbCxw@K!dYcRx$kB;Op9DTZ*@ zki&6KrZT3i;nWtD=_ML!?Q2DP9auNefE?%R^PtDefKDGYAD+6af*rb|P|czMy3CqT z9c~1>ZfnhBbt+eOcd^dbyzHq%;=s#caKqCAUBYC>Jn#?G+s{DRtP^jdA=A#A!{zt> z#GyfB5A--*^E@+&Zl4?tXbI1BGz;$V8!Cy&seCH0V{ zIcAdPNS0085av#e1K#J+cJ@hFiTO>YO?v=Z+dQ#)$61des1$TuDrEDjVCF*)lVa#k zxwl}!@#Rb1FvWk9V?*VP-r<{I^lf8tiPpxWyy{7BN#{ZL=F4 zu*v3an3-PYV7V^x=Dl(B$2|0PJU>h612kP!aR-Hu&8@hiFCX{$8vy)&w#iLBj4^!x z#>bEQun+wl=>SyVQK|hIJ3Uc*o?+ACyNn|IpK)1OOu5(3pLbY4$p&#}Sj(AQl~ZBi z9wQ2R#0#awjjL(7*766vVTS=N+4C@D$^)W>QN`?^AQR8;S0!eTT8W1V!J$O>sOsSoCI^(!8WJYGrY57YZXk4&OV_LY)Z-u@%OI{s0knny&%JuiW z8aKZEr}4Hgt?JKna&y(3Of48_FW6SSS8se^jVG|))a?2lw0pO(gRS1o|JpsxiZzA) z=_9A2^NQ;H?%i1YeeVSg^AFxDXgO9k@zK`9x{sCfPdleCt!p{7^7)Cec>lfW6ON?^ zoJ*g0Ej{pl`lNrpbKicC`}%#4Iw?rEKzNSQ=)C?&c~JP`E0>MePulzZi2|MM@%*DP zCFKcmOsHO^hx@|S$X+}BHR4b_5FO|{iTcr)7oOM zeS1*CNNqXmjG|%~HZ6Ut0#$k)I zw~}Y{f8TH#!N19nejM&Oyp?pH?)iCR1-M6yT+I|?>0ZDsaFcHM#|_QiXXz+aMYefe zST^ftcipdRD0+K6rq^3$)N8~T-jsZI!Oi8Aho%GC@@NR7xKLIN>y%0 z7775%qxiIoJ_iha`++x1Fyb`&{+Gn2d%|}-&SF7Kj)93k_FBDpN=n9~-b-{2)E-ru zoxSmhZ1du4hl$C*y)^cUz}>>%10IRojM#L`?5xSkaO0THhhp zx>pX5+P^tt%bxi*;vIzfG!7#XWQN53^DClEL8<8G67r`e_{o zy$-uE1#E19K5WJ}8(8yRma7G-&tg)eP?;Ud(KwmUS`wXlQSy7suVmCz4&5D(a^m+; zBK_`tucC_&Q#nh<&Te`nM|CuTat5=&+j;ME|FhkGYuJorL*Crm^9rC0Xyz;wR%fnE z@G*EXVAqP?T6`4!vaBSy4X2`U6H@5Vm>&PQ9TmIk69|eg^zFS1CdQfK6iZDr~hGN zs5U&2NdFkq(D1`fB`OZR0@=I8uvVt`2a!A+`H_O_s=JENJi~F%>W=0h%-G?jr~;E_ z3HvwzKrthSw2dK58Mk`KEk5UGYyyf^93_+NBWoq%*TP)}PTJ#4=YAqZ z-&34FxLP+Xc(wOukV^hXA&-W{IpT_-X7t=oAPyQbp zu=t^wM>o&L?go)wzv=tS_`T@tHqRybLgA8*YrC&JdUc&;OM3dI`($>k0Tz+jNr(MUOKFI_28TCay7LpDIkZ@VUXT)BtuH&gEY4g2@%@9Ajhg_kuNnEv!ztd#b1)l>z8 zIq{E@G5V)c|Az651kVn$*_n0i>?yUL9i~(Md~G)x|L6Wq^A#%+>brQ&ecx_-u6DaF zbl&tS^@h&^M#F7FN2cdZuU{?S?uY7Ie!Fc!UbDVi_&vqvwu#4!?`X_|ZN87^ufF2@ zWZ~*h4NnqxPx5=Z+?#pf>B@Blh~BE^7rr^`ZeK~&!^xX(eVcWC^MwC5dk~7V2lJsk z94f$p0UQRvQ2`tVz=;AJEx^W4 zaEfb+q*my_z;KQ%rD&IIk7AiLsjs86N!8SnlbK8-P)ydw`bR`=+@72uid8@B-M_1N zS=UB2HVDoU$zD!-w9c%b#!(fX$#V{P}o9{;{^Vv!%VbsG7uO z8}itfRV`cIRx>Dqw$3|>(rQ^wW=(t3#!~?3S|wd>_6rP^9VUtyVV1Cd3vWt?qfO>QPs-I2MW`1&&gT4)@8A zDh9r2-)i&sZR+yvCL$ zdkc%2`a3v`u_RgS7|J&^p{UiGjcKx8buXHedEu<0{cLT`;p)NOUZGD+(@{n8_86^J z)!pS&d^pF=J=~DNx!R(h>*u!YY`#j>Xkuug=~MTpe@GPy0)ryUMA7`5F9X`>xhVr3 z0}*REj_!<}4z(12w=10!pylr>GYU+y&(uad{jO~DC-|Lx_#*#i=ZfMW>&{Qtci z|HB?s2($iDk{Ubz^K$$Tdr)6>s}T2cu$%ssl4$I?U8PYCj<@n{7`^hZ<)OqQ|9LsK z2qu$>f_T2XUs{cOIi`*t`C2h~2gPodAd+?d^t_WCr_rgRIXiZ+OlfS*==n3xFY5mM zq|0A-AS83I#!d)6`_DDY-=EF)&IB;^=pD5+Li3Ae@e{+s5E;j= zk>9F;DGWV(`@yM~Hhj!yTJ$A{*phcxSjDr{$~v!X?l_BKZv~hFXW7IxFVe%4tqgmi zQUXFi9?fd4n`CeuDrFG=oYGaJyqs(7X(gw1m+K(1p&2285^`;Ewh=FoRa_^iyhb)| z5@ZJ(iGeCew_N#BIy13Re<`gPPfHUzg({LOTLI02*aziV`eHPUHkN`y^wba(%65~^ zLE+X(#R!Ab2=I_|j#9dv!5>%*8S~{*g6#lHm^`kr+Fry-)j%ulGKHZ8Zj5$@9-EPe z!KSfq7ZUY{uZPlkYBZE&<#y_A%>m ze(k#D7}-;Rt|TQ4ZDvJKi$FH))9W%1CRVLViTt}>J0SKH3$TRKYf%N2(<4b({+Epk z*K|+g!Fo|vuI^KA1&z#rePaQZ05UXqrIZE8Ze%77+$Xv&+ju!@ zAh8rk+Q?s`h2u!1_BkFAHi2T4Xi};a9s-;G$PaQv>KSCg02)WP;)_Cw<8UPNX6jSd zhMPW5Ttl`4f#CW@mj+Q-f%SUToVWwV;f-f4Z5DoC{kOg3I*HL33(8D|LWKC+?Tl}9 z)>$D;C8!108ICe-8!&gCR22NXrNuYBWfzK(3+g_F=o#FMDY~Njp_`2&e&GOmW_XQR zoRzjxDNUjj@j?$S_7!KtG@ke*Y?P7gzufD7tzV(e2cWQw2eP45gT4o)JRW2;;4D>oAT_JSALgNRj3$#_q}ZSdb3xl%-c(}x!ami z98QpuSOw|1+4FkXwh#&bK@-Fr{;2DDy_Z;vg7N$iFiRxg9w#RHHnq~fY}&_*AK2mP zT0T$W1rhO-vI8!3W2wTiNFE4+AUH^@a9{ag*D2{-(jqZly0r|Mz-nD#FV1F2G=z;l zDoCJ&FSe$xEEvVNZ+IDJ-#vnXN`=rWQDe1`G+q+IoX*NluuNNd8p25U$PBUoQ`tDL z8j}ua_#oE@gpk~MfM~BR^rg=PG$5t?SPJ784mm85KAog-`O7m;i`=MXq$3PGUpma%J;V3$169{}UcFCk^0d?OPr4poxcu{s zq~LVIyXYsEampa$?&(Fpx}IDe{do>$){4nfd)v4}O4+p9C8oD~I|7F4fe3-TVGojNb)9@SyHGQHq75wq?}PY&Ah&Q$cdU!-3X-@0}Bm+bfubXgAFo* zn*^hOc}=*{{V9kcLi?_Mv0W8*j~bzlDd{{8Oa#laA|%qi+|R*m`PnJG7w~%-k7U)e zHkzZ3Vx;UuC;;7H?FCF*ZsmK)Kp0n2e!qtfb2}4beZ}zYJ_T~u_;Xb61;{2fkLblg zLk5;yu)+prK$L2RP>bmkge^|*ZvwsuCIsT_El1eXco;pmXqokbx&xb%m3yuBsEB^r zDM)n6QC7;0K;3WwGbpT%oz>I9kgSQEphn+1ik+6Gx6+aXOW00|&cwR=bGd@o=K?Nu z&RQ$neKGXp?#KfWgVOpdr)MwQuJhLVu5YBqFsA|GW}P(2Wio~3iIk7f|m+o2pw3TUI-s>Ijx_PRFFjzFUp&b(IqU*Ord!IvnU9K1^vEk zMBel12TgPrGHOR7DB?wf1COOeuN3f}QXwTj4`IpjXL$%WFu8cd&Ib^8Is#$@j@h)M z@IP&>(6G@VxLws<<}RV}ZL+wns7I4x}cC2V`T zBzdUr&zQU990~s*$3>v99||mr6;Jshp9M)8*i0#eJTibXR*SnWaAZY+R}uo0QLT9G z+PQ8|)ZL{!4*{aJt{S7dsIZ`2DxAHBXs;}#Q%PsG`}YFMGBH-R=|OzzQ<2BE{T}$U z^?|;Vikimq^MS=gGm2`m?aFKp{|DcWKTHs;L=#Opz=;RJJQmdFtU77*@}K6Y@B6lH z(}3LltutK&D3B{0{|2G41}cmd2M+r3XEPI&5>o}wjv)7EP7gS59*)-!7puz7q=Slr z%RQ;(C_OF)z(S3S+n^#?$a1|>SB3a0J@o>V`jE)zpF=IUEql(1Y#WvJzVM-bNP-l9 zBNh8Fw zGaGiHJc;>s^%vr!`PT){&r_63u{(gwAO25c??y&75FX_>=Yg0hpb!RI#y)`8jD9wV2M;Zi^hkQ-`YqJ(Zv)=$40UUV=#=FZoKVdg9@a6%(D#(Qg{jpiGCC zi3VTo@K}09o0+9NiZ4!ZNev78q5oSBl=F`S_n61-@Q;1#bm9R- ze*_!>MzEy@K0<;ZKh|&6g4a)tQ?A22ksERl2P2N{bVOK6U$!^?suqZI6Gkpg{wshB zi^9e~zza}t7YlM?B<9W~MRm7AfP@ztSJ(zr)Lt)dPOeadRJe?qE`PlI>U*b<3kJ(K zmNqx(#}8GUcvHS4H(_AH+&P3YPAl+0;fJ^4mmAMPRN*!(gyq1(m##orCJPHS+_Gf$ z>~Ie-VgC9hQO_pS63cFv%$Z+Rx#N2TRg>{$C)QX}WR{Fwd0pfqI!1RCzw6HoJ)gWP zz=WWN(p}bF&2~2D!7f^Waq$4FjjIa6$4ss|C2Z>ra3aN&WA4X;4N%yX2jl9LogI)) z0sWQ~nH_+sV4Edyj;M1m7jtoUF_#C?eG#=23`xrLBx?(Ew)k1@(0KS)bxGya*5pe3j^H=bi>H=K#b<;FQ(*yyrv4vo(i58*>>UMmHJY_c# zFa^;jfxHKL?L{m=?-0-|Q8=dIPLZ~K%Q<`9g z0CJ(go&a)Cr5lTDe?Qb;(S<)9y@6y|WF)W2yxb-XWiw9D`#=%a)>5cn1rOm zxf9OZhQ_mi;NnV}23P{PVP3^HBVgAJ(B6fvVledGoFWG<=matkp^Kw)+fD-UxL0}2 z;6k%6D-BXYf;X{4D>3{!Ypc}%wYz1_>X~m>ATImE-6UpsLMCgqhciy@wO@H~AlStV zVyU({qZ93Ot~#l}x7kyTH0O?|fo0zSEJ0j^5Lp5La$UXr+4vDJ`wQ9dx%KORAuvG> z7fpl!z&zv-UAx#u0&pzhRo)hN0c31A)mJGe$O}$2x7y!6Wu4!wFG9pq+B`HZ97R;y zSBv})Zox%haTQ!|u&}Edo}gnv9>w5OKze;eKu`kggRXe68X407fwt906h-WYnof(e zo{jh6$sJMTnLlI)fVLj?Q_dObxH9y&5A97FFtxu{PXzg27Nme|74)IxsdMsB-d!8A!#i#84l?* z638trem_o;S}cW;u7faB1)K$wthA8r$tQJ}^!3E%R=$Y70(w&jI}bvi=g#ACj~x1Z za&pxkBS8X916i@smn{Qt-xLJgoqOE|o_@!d^<#Bsx4x|g8Y1vUzcxA-!b@9jmA{$$ zw|_@U8sy6ZX)Y$5eX!3s$N--$Of)4d4a=ViH@}$s_J@8zu3vfm?bLolk`VIq1$3Pl z(8aC{?TZy5{KX4PX4l=m^HV{Rw5MKJc9;{Zf_<}A>{>z8aIJJ0*u5605+_TD{f z%|nVz?2UPA?@Bq*Pp4Gz0U}CtUk%NFS5Ff{hQBOpeEQn2GBBpgb`^9aBGKn0P9vC>oe*8S%xbD9 ze$V3tnu)=f>g~eyrwW|kA;Ncam|S;R-CqF7VCSj=sHNPN#_LLb^qeLdoNsl7r2(#9 z&R*LkKU`p*0yiDzBSnix4rYxM9~(J*ZKU*{k)yg1h4pAf@MzWI(Gyvt)yGC_ zu8r3IGkR7xs@kbkS^wrCMj--D6_Bt+*iVhUsKgg1B?bWcK zlwW*tqy+|xXCr!+qO!_)5KFd@fRw(t`R#AQ@v&(cdpAD_)(+Nh6 zgs&oYvAhDCg!0zxJg%*mO8CIzSNhCk&=hf--UDKV*-ESwN(0(aV;&^S054 z2XCTqF3E7ZQk>d$>00w};)mdWu2pQ$qJdU?B9*d<%sq57M>3Um-S{M9?4P)fg)9xAG- zWp_@Eynar;%q52^6p1IA>IuZw`X%uo$2>s};eoXbVJKx%jy9BRD+hM;uj#lril!__ zK3#AV63z5FKef>xhBvecHY`=-7-{=HOP>u91ow5Gzk3RU^Jj4qd4Ug8sM8`{YtwE) zZW*mPW+wg$5b`Ld!8(Mf3~>$GWTZL9ro4EEB1w?|m?vqSV-wQPYwrug3ea5dM|b8t znaupTLdua^KE9Sq8gBH0S+c}zQYgO5tf??MCzlix*AKvwbQOv1NGZ2Aic@r3 zGdqa=C_OoO9%ddc>nE{b0Up+FNdZK?@HiEQETQmn$Q=dPj%|j$yd6mIkwhfTrs>}q zuwGn0w6U&04A^Ts5AD#45O0!h=gL%o?k}@}7g#FrmP`}QFO>T7=ZYPAOEjvh^$fX9 z7co?bhfEBMHOIEcf`ehYBpXY-_~ohv3Je^1LL!sW%R>#*xH9Q>JK%$IMKTm6bcOdn zWcv?NSCu$r^rPgIVim!RQmjB&i$twEOnV999MkAxaTW7#hzh0)#fjO5d{KzRoDzxc zFm+Vg?12Bc**rH5;48%BMdDThA)2KkTsPOK(h(Mgx5L;`J_Zruc)tl;%An>m+vxQy z0+?R&iFn(4P7^{fK@}w9gkPsV`<{DgRSpM8@`3&ML(0zwi$odB$y zgxS~-^~y1-|KI}jRIkdK0RYV&^)yNW5HC%LpC6@9ZB&q>zYtDhAw~)zVJtF4_YfAj z*N;=JHyI=|Q-lyuitSw~t)w`XwF&-S5>&0!0MS{)^(cv4t&ejA(DgD`$e9lja0ZlZ zuO;s7X4W@;113T-{OI`<0$VGkOJ>--eE95_Eekb5Rcrm?(Cuy#bXx)ohT=kkNvvyL z4vML+03hEE`4BnDL9^`DbQBMXcEcoq34@YCNdgTqqP-IayatC* z+Wd59U^xN6Z5$0^$ufM@IILg0ZRhU4$`IhDLs6qZF@kYrCpZGBVKrJX#(^v@{Y1H) zs-jJ?^K^foOo2#-M4b#}x{IY0wuZRtM-k-C!iv{3egjSjShlGU_XF!G@6NgnM%%)DW#$JGr@0e$j`Aas*%F z93r80UYn$bZbH~k)k+T>xsyFO`>@CG{$U?cwlQBhPuJ8PjJrXQ#&g!%BiN}>6^ayr ziVRoGG5Aq)5N*Jk$be`R%{V>#Z`Sz}?IAe+=H7VC7SC{DAFhxpvGgT)*_qo;kN~#i zlr;>XyTf^RbY_w@)-MqunZiS1mWo94L1Q+o41ZCymw39zdFo_swMB%GMCvW2o-nqn zGPEZeHKD;tM<|CBuGwXa+@QE1co==_vNx=)mx>2Sc4<_Fc5=olH$whAu zLg5VQzhm~7+?qOlf9b7?S5djt7=t=?Zc)*SN!|nMloQ^SLz<iw!&Wo{cU2 zw`K3=_b03igD8)NdiKVgj0@wm{@52}xoV=_`;a3hb4r%3e(y5j;RDaJKjag|kQu^V z#mJ~HqgOQQe~bWngXhmp{JfVqF#b`CdnyvAfFmqx;vYU$&757f?-EFE-#IhHd*RrJ z#N3+h>xa7@c1&~5vKJHWco%81E9U0min!}rgkZ}kkJ>&b4)Mm0N8W`mCMyU!g<(&S zqoU4dC4P-DTX5mK&)YLcalx8eC|upFPZO$OYQ|#W3`OM&d*LgRSPRDhj3}-LI0r$X zcJCz%RfNT)dc^I}H};_KN+K_RYmz{EXP|Ur&tZ%jBP=F}R0O*w6p9gJ~*K8u*iwfCtk8HzTjF><77fzd$bMq)b$m7Pb$MH%hXRJLEA6tCb-Fut5(GM)#i4 zAiOCjXfl$E$dbN9h@D-DQvK04(I`cNUcGfPD+6pWLW`YIwwMuFj%Q4PVwGpUxYUS( z87LuRE!%_wnaeRQ3P>_k54h4hFY3jik}kb{wx~gGp1wU(1`0obu2hQcTky`5@Q{jiMP3*I&BKam|^HI))L)UutY@o=Ua zJ={}Y%&-Xq#d^3^!AuU=r3b*)LSi)pXF${d%v4SD+mBAOz*v0f%0xioqiwGNjpIqk z5WL6;H4+1JzJ+l{(D^th8QBL5n%FsDN()AnTsV5F$jBd@VIAcMq8ZLL)9USfV#6SD z*rz(@btN9jmDk@~R+tR%H6_^WH1rLk7m`zCB!lSShKae%ECXr-2LDFeWQictY7ADk z>lGjH>Tc(tfSF+_>e)B5uN`LX?+d_t)h8G!YYpUR9Dx=8#{vfxbe}HiQ{%82un!5r z&ipP@C!%`(5$j_kvPANvo{|mesOjj1zrAF=z2@6F@WAc_oS^V{tDj+hP?FZfM;!}ThSzDnibc~0=RWJ3FdmhIPN zki4Ynq5jhh3^bvj_lU#`dl(-?D+ZwZh;Gg%Mf!Hr{{tZaJ%Q=j7hJrzS zKpLF!tv7Gg)B9Pyd5}oGU85qa4Oln!{%x@*-SC6Q(McI#c8V8CEQ;I*j^Suc2C&F2 z8X6Sod_?Da)q0=ntREG8e|G=UAX&G*jVKTVd!G+4^qo4j@ejW~s-$~&_4(KZMF~f| zz|QkCjfyNjcF%1%teg3}oAuFWW`n1f`9sb_U&e%@`LAaM-km+^#q6NZvxCQG3z@MY zma+cX4-K0e0v7s&8T&5$?mPLZx7&u@AmO3j0u{?P7H|^yf<>&7RyH-GNFcP z$72&(WBEpnk#}QlmdYfM@rW&Br-VnZu8TJCvh`^Vb?}+{yyh{lk>n3O{7$BdAh}Jf z<5VU^Xq>Q*lW<+e8n&H9z4$`LH31XI``j(-SgcEh)2AJfG_Z(EMUcqd`$f+S$^CmO z3Mmd60&{|I=xet?;auqa z+`0oxZaC@;zmr)dlS5Z_=Zv{Hsz_?9Qj61!ie?r;9kYB3{DN2vswU9+*wO%zea0KG=u?z1l;NBpd zr~%1aJ4}HG`Ngu!W(+_S+ekr0_)5$3cz+6xS9+{anY%XyAL2A0b#!49>nSFVRo_22|m*d?@&qN zJL_XTHcft<<&O>h%rmRk+?h-z_M+Q5z5a~dphQ;Oeipw!vAq11-MP)jxPy0@B5Se+ z5PAXma1=-tqp4`3Ib;%dlv6D@x!kdRCjQ(-b-8mO1Af(;022duqa(ikugd_Jr=MSa z==oFhQN!+2h5e?eaMPOD;73LC!e2s^BM@-HpY0G4f2xD70MYKUD03FJ6-J?n)7X@y!~HGWm5`p~FwP|xw{T$pnx!FNSOV}L zNaCw1y;X~i--4}`Ry3K5OHkbRy57BJKOyw9^2K0tQbg4IlHQ1U6 z%s_j!X&hjy21thD={uI>9zMiHjiPLU>_NdxOZ21Xb4vB0%_WC6JjL4??8tI_;E!!v zfBNP^$jWXxLGW4}f$AoB4svC$9JgLWyafl{H zqc>I(i)UJ10`7aRo-stJk%#HPI4xi&onJ|cdrudYuseCivY7Gp;6Rku*^d(gOs4cl z+cJ3v!Z+%Xz{`riWKt)u{Y=pwb5s#DvwX{{{4^FxVNWT>Mgn&l_+z=tP=ZQ1l5(KX zGIqj^s;RlNMU_Rf>}Jm#J3p5>=gQfA2FHE>#vMAiuqV!y5+iNoj64oIpV+x4<<`-Z zuCpn(ucq9&mvZ-I%Dpcs_y4A-_0~MFTGQ>m=3&s9p6P2IEn4${wTaI4; z{4DL?v%7-u-!N#K^F`L$FFW?IMA)%O*vK2=S*q|1+8Ee+(8bWlim| zHrL+i*h>^u8So=scJ71~*zX9J)Yp3!n7J}7I|z!My=KV}_Ih%7!u|{$bRdgHP|Kqj0jJ*$=W2fcA%fo8~LDko?@yNdd_}1WU?~?K}9a0^L0Q zhuaG#9PcWg*I178d^;BoPA?eX(3UUue;}S`AOdVrSMopdgmrti4dR8j4ra0?mS>?& z7-Lo#M)O~Kj`J(9(&*r=+tWKJ&GyE0W#IJZ^!#L$+XN}SXj_B*xajwTmy$N#w%4)H z3u__BK>Djof(676Jb@wlwnFSQE-G*E5rBUX1+Q{(GS2P5G1-=zFRJ5BuQOqQ1!)iW#01z6H(yL3olH z^1o!($lQ1eq_1rBx;Fngpl1HI z7&Fxyb};A-IKFrT?{@mtJhuLF<h;n|bS4X4kpQ+t)Jh+|RuGPv*UU z|Bx@nmaT}LZ1j*t9}AitJGE@q|6=am|6d5a{!Tq`S zewX7z+Tez`uV+jq3=PQDCUdzjrw?r)a|^PEOs1Fg9V!0j;Ltz2bG>hq>ubR&pkH%@ zqtoYp^3fNBtpDOu{Mmf{X_@}h(&B#oP=4*If$wL2EP!>!oG*6z-|XV`sD7$jqCygx zhYfT3pI(k)p|Nd2;2C&vi{$McSyB0 z8V$75P+~(J4efMfWYq89|5Wk5VUEj6tCWSOmBfQK#L&5!Rk)(tXdXtTqJ1jwX?IENqRRv;mr96|~fN+2i3 z`C{v^bm*lE(@RU0q^i6e`s968wM~sRjV(=S>Qczjq53XZ_%vyFf+D>pJ1-}3whWr{ zD}Q!ECf)Jpe*ha&V25mOv=*daTYwH?4 z3?xyJ3O`#2f@C%ZJ#l$u?zQ+wXQDddGb*h-uGF45vo5TqcaR|AglP{3v zh%*z)YnqGsxA|ubw0%GV*G|L!=dJ5*z9o zVhS=Uw$!ar_tn>Tij8n0gvhH=tyv?JCnPFz6tP6q_VWMmIfUg({%R{o>J$);z9%W)Sjq`?hf!?W(-r+IpjZZUWZRMdR zsMMqPk0+*-gh&8}id_=K9Wm$L-`#B4RkbcUwbjr_0JEBihjq^`g-!{RP%x8rqj)NR zMTEn(5+h!^c2;Ld+9pe$UsSOYHt1Z%XJ`_7mjVXQa`0?=?8Pswn|~RAjxM5>v@l#k zN~nsIg&em0y_G%5YCm>3pBLOHU>C61W{g_8=H@b+!W1BH%}?X5C$}C zWq;bpg3_`~)RHUy>skx5>r*_vp537sjls2ig6&_R-MZNEDIiC2+z2XW!@P9I8A3ui z8Vr#zE{5NztwsmmV=V^Oy19F~p&cX`74Q`1o(J_QUhJIkqdF3ESL+DYFfq9eG2ExU z6E3d9^S6JPNZ;q}AEO*?#7zC;^%T#28q(lb89g<3Fk3^j#VOL(igW+AHXHhh;I{~= zl_1$-IC7U1VkS$#g5eMW-a6>(u$3WbJC#zY}uJI&nH&7;toE z>A9g+0T@;)KeqN4A1?zzrBc+8-SN(Iyr4t=Pq<5`8bN<`6A?zwOaYQ_l-h8IVHb9` z#V|DB*ZYfhXVnpyspwJ*!k5qyFrIz>Xv`{1D<3cZ6racQrnN20-@9ZO8-(Abx9&ZC z`T>FYC2B~FnYO&5(R$c>U-{8TW#lM+vI>qbZYcACYq$D&lHK*E_re7QYv>bhWjZ>1 zuv-d~PO-3U?T*G?{)NBNb#@E}0}c@EYw*#$v2(B8!Mylu8**#6H9h7Jds2php*;TdcN-*|969t7hw=Fgu>*cAJQ_P?YSXJt%=Jr2nURF2IJ8dLrLF^b3 zieb7Br?{n#Cs#)ginXMHX@-h`dwYOpxusnReYke1Qv}O8UDC?+NK{iiM{?TNcTL#0 zt)p0ppmmyXFoxiTB&v?SyBz%SuTfqKC4#a#q!GOM&((SSi@qNRzqduKk6@W7G|dbl zJZ|Lr_9%xB=!%X0!1O~E;QlrG-epyL^Btl5dxhi65FFyf3$D7igyE+R7|iXQb55tACXdIJxq=u32%zho8rgX;+TOJhQfr< z2*fNF9c-pm`IHNy)yR#CVuY8DBUVBEbMM4P7$mC^UZZxGkA`3qa3bL*N2~9VTx+Esh7?Iy3&W1o4H#n@ z1v!r`GXYD!sh+k0)GCC`$RMbh+%M^ljq|w#aq;>MFzHt`ZIGbN6K9Z^ZwSFs;F?YC z21o!-Gg&fVB9|aNkE3~U5@1xUI&4=97MH)h%iny9g{o*oBEcpv<5!HIwU8B{G_Eq+ zxhSl47AHy>QTcDHom3pbVX0b=+ukmE?!ieqvGBpi+GT}{|6lX$M>mtc)tBF{n;(4Z z(VuI+omsl*ZS>$LQdoYD!O5nvs_Y809)+W)%5e0Tsv42rZ%e*j_3xPM&qwbc*4X7v zIZh0~I_#A-LG(PD7pp?fUuH1viXlk`jl4E66OTaHA*$BRVgTsz9pN4iFBdkbE<`=) zsCF|Y4W;A>(@)pYj&Jy?%^O0zWh6&C6Bji}u#$ZrxRwPb>qQcVh3dcTeNq%FxqSXM zhX)ksv6Qx@>wPQQOYTvYb*PcomM$6c7?7uf3VcPNF!e@KywI&)DmG!B}n|&KN#Wx z!Z1mJT80s*?Et|Zt|QTGpvPE}X2w_@f~DbX3!QFkfyMmo7v+dp2Lpj*&X#;~A{s$6 z-Ttc**233J8rYI~j2tcI^X9|hH~av?N?Mz3Mv+>zNvGy*~gYQiN zZSTE{v>2t>u?Z+EgreO%?cD*TE-fjN2IDaXfBc*wUygq0tcxhANNO_XM#>B%{1= zGzz{R_YMjpq@CzX`SFd*zjI{$dDgM>neSYPEk@Go##%X3G(e*dyq*nav|&&6)6#&q z;tI@UIC3}Y0$T2Y8m}O>^o1cjIEOGVYwO_>-@@Tjy_i9;JZ4e+7o-|iE0xO33VcB~SKN%@Fy`a)mMS~dW+3FlZ1EQqo@4x1AEC;uieDJN z8FLr+j5~Fr!)W=^eOD|1GeEw?*o~ZQ|Ax>bRck=@(m7sPe{)6|9n0hPN@7Z$(!BzW zN^IAp+kcus22wDT!wNQ5IXI^P0~r_ zbHxH-ym`Ly>P+-n{kmtnk(_#91G71#sE}50iP$#_mR_l{fhL9t;)7JkzeNzB`HXPE zr7GZ&>Zv%7z}QbaX9NyAH%}w^BusFC+w8zg1q9K^vu1=X16%-BIN{+A?b7p`_9t0z20SJ%*8zpkVF&Az%plnnx0n4WgeKZO0&bys!1!=EZ|tlBQ-en(??eN%p}tx~q$JTwbagv0Qa})kR$lkBQ*7}8$TMVc6*tZUV<2( zjppyOqE&F>#|SSO5Xz=~H#5H%S}~|a zuTOVUt*-cUPejFAL7%?cX4XA){Fl5yVhJWexf0ZaM!2$|NiJh7E2jk%&h%b+(BQOL zjhlsyY}0TTJbhQZVYhELl43t?>K_r-IBWXvPm|A%IT+cWXK#wY;M}K9xgCe?Je9y# z0dEAe*%WHF()mTpJgX91Y>#kiK&fcL%zmo_?v*V&s}}SM+V2a)E0aFvhfMvN`g~q> zjD6A{WhxL=quN;$bFqfo8tb!b8WLk1eX}OvqUeJ~fXA_Edsi!LwL2Ty!6(yIeCZz^ zH~o|1ryC5<{&r-pVxfC<3IGGIUUxj{(eCE09(p zmZaBx1{V4iw0=RIz)E}a810N4otnS%-7se`?&T+G+0P^=iMYWM^^+kxe@@+T47qS2 zb;V7Wtp=E-6xll-txH1P6eFFx%)I~>s6}V=9~XDmCimO7HjXrs>gE1Olrnf+e7D*Def48;xTGAp2K^ zu%sI4#l@@%%7!5xML~`&d9WYe# zgtP8?fFzsQ`YI;aX`;F04*4*E$+6vM)_UOMLzHpPFpRwcxmqJfgVDLj{K3NL0DKYJ zyYgTfQtBEJLdRGT;g7$E1j*4L72rxkYQ{D=Xu-!ZSYhy6Bs!G<4Z<*$zmd5q|@+`9N3#8-D*z8G3hB5uj;>i7c|dA z2Bl3)enEGPIunQkKttt-u>!?LUlys6d#8;NEeO;JdS9ci^>SQ+dItj&-IPnFO_spp z#XrDThqxU@EXcCHWx#+$7R3XG>(ylcLW?XkasV|`Hw>;tzQ9;5n9r^N340MQDaic- z3}UgL*MT~JM|k`SQ7pdaJK8kX-YT}qPj}AFy5;bh3`YVLC?T!lFJ0Nj`-98i$(doVI5Lu~X64FpWvm=FIDaG)Z-q-W-h1p zfKg&RHrCfS`Dy3(WhjZUbKu?{Vy_)5)!B*h$~F2GOV{;2TKKiL*IBslAuz8`jr4U5 zRi@f$fDLhA9W%bX$%NijYX8Yr)DJkoW$ps-+<3XAGJz@WS+xO#9p4j?W{YIm9=IVe z%3Ydp+M(aKw{@QF;Y?dh3!HcTy@C4cMW9Gfh&oi2=Q^BU_chi^CwO(ZoKFB(fCduY z(p;pwVymmx^l^Txy+UYCV6IYh4Ta1*M|?|tCerjKw2?pRtwI&()Gj3ohUIR@Ok1XV zgqL>joKv~HvNj4y=`Lc^@i*;3HHH+mEgo=04K6k5;f?7$Y{G`W?M^$GO?MJ2Fmstx zAf0xv*AGkbjn1AT+KmYL?lnq2Xow`S%2lCEVg_OOWuRR2BkAK02RsP2Vq z%n~N`o^;rHrL;Bt?cU`%`A6S(=7JE_C|E<`D+>kEf2~g*bH8cDhG_swhpnl;4070H zdl&a1!Lw-a+6ZAvW~mk+ONz))0^7P5`4H3OnWgkenBXmsR%at$V!B3d7!@c*fo_-W zlnudp-R#0lEZNt0%xf^u;X}?>U@h?!67|hla4EN2L|R$U2N-^@q#AVokI$wA$XSLW zTC_W4_o>VhV>#C77-Rnle2j!|%bm-YfnEOC>v}}0IK0}~o4=*{*v|kCOl%*3yV^;_ zC-fR)rls!QoShMGK7oks5s;`o9&UGM{204c*vdkbFF_x?Lp`)*BOL$IR;OSo2hd)x zE8aNKl}g(5WG_DXdgR8?YpA!(=a0>a6Tb_d79G*!KteuQMH%yPxJ>0?s|LCdER-|j z;PX9U{Udhy91=&Mwvs9SQY=`l5GD?eVLpy--YdyT$`U;5Ir#hW)!$F`fB*hV|66M} z^nBD%-<+XW>xbSP9C~+k=>6YAAM`^yJN@TT`Y&_z-`2x9gZ}4L{ovpF|9?co2Y7|EDlA6~1HsXg3oO*Nx9!}Iw8QqGt7Ii)MN@*#?5Y%m7ElJcrUgwrzovs0S zr5rTo7WwJN`*1V!`JF&7%a7V*=A00cj;G`;s#lM!>-g^v#T6zi-RvXA=8NcS&nGHF zk*mg{`S5<T62l0j2k>e$MHK~D`G(gTAJ*O>-9)Uq9ZGlWFBJuCOy z1^UXb#>Yi=M)OtF2KMm82=sDzB7&{|)(e^$XCEKgAexq)a!_bQ%JVd-i4n}Ep!c!} zp=U>B-nyg_0J#>_NR7opb3S?W8{u+tol|*AzS*~B%_!nTPDJe1*Twi+Yz(NROk_Rd z7@Q?fT}kUqrQdPE=m5DL%ThrX7`)3T3eb00N@txoLz2%RF+W$6;W8qCIBHlJyo~lhTpt>nj$oJjh==uQq;z>e{f;mk*qs z_PC^OssiO(PK3b#30F`pEQOPiU3;W!d39+;0H7k;}Vh1`Z5`O@=uR#q0EGu%?Xl<)vi@KX2l=>|63 z8UX^}WZ%l(-gkr{N-7@lZJq6a%{ifq!hZbBANKYi)|y+(G1Hjz2ibRh9`caBtv8Ps zG?-R5qfC(-$rSi?&@5MGYA@E0Xe7XDXbK=-am4n8RalQ|zG1pdg;~%%hN-d{`D-qP z)zCmM{hOOCqeLBYdG9R}!F7~Tfe+%A9ieB%OTn=f5~cyDB*Yqu|CoR)lGG1Ef}++0 zive>b$J2;lU^EsK4Ok*2WuiW|!J-&Jg(}iGlT2B?4S<$a=$-d-QJ}O(qLn1SKrqP_ zr&vLR)1fkwH7OEs;GKv7rx%34e!t9GbMrJg2m~}osHQ--b`xJha=f*aRl9tKUe-KH zETeo}NR|Kw0}Hk2H(!Eb0nb@7~0A5-{Zo)U;S@hsX(=6xeZDM#2+P*yZU@;TnSJ-cyCdD)ah)1THIDISkXwj~nBX zP%ClQs6qR@2@d224>;+Ns@<49S_Yr@LVP<5IX;yHmgROx9FDH%v@xyTSaaTIqe8WW zg~1~jxh~IyPf*kpgj2vK4czY9x%ALi;^0a%G}*q<6u0&Uy53X5l!U-EJrc3bxUueT z!ELxCGzHJlqVGLvuB?qRF4iva?EywIkZ1g{qC2wLes<6e?AoH%yd+SmWv)F$yHlnb>TVNOB`3c{xLK5B?r} zy_j{A6gR?K3jlyzy}K|xpejJi9uuhEsy9zAJK#Z6Y%y^=*NcP?A0(0x>R`O@?n19@ z01Ya|D1e7mct>Z9s&e0RA=?q|vymmc7aRr{PuJo_}VS9L_oxJ<4nud44v*_@z9~8h(u8Y2y!OGIrS@fGT!5_)^T1dA8}3oM0~ZECy){|=7mLAgCZF($8?nt>)dqM3 z$|(b;LykL~2#_*ajj(Dx$J5RbLwvJn3JFo}65gfo2kCQkTQ-&c)`?x9T zdYP_#y@bF9%SmnmPEMb7iy0z?s|{v;HrusGV8~8(+1L8@Y67(z2KL|RAm;@Z*$t71 zQ36dq`}BG=CZ^zL_6Ol$K0_$kcYzJ|2oqF^kB)co5+LyysAlPXq=ez;A0zCeA*^$KjeAJ&0OdBF{sEYP3{t8 zMic!99IOrxza}tOfBTR*o@S0+y7KbNtZCkF4iK>;{wgkJF^>7@IcK@g^UU)MR_Y1$ z0{r>bX{LVIJNo8iD=2}fJdP3-neEoL9)7u0H|a;S4Fknw7g(qu$}{q8o|C6 zfJ>3mMQ)9$6s%fg^U0zaB6t>|XoZ{UbjnmGo0*qAnwo_qH(rKcYsBMs*QYmyL%5hE=yCa9oarkp{D6!+{HPc}t@RdW#x zAZRUV!e}reoHvvpI0s?KDFa!vzk`RK2^$Ee2>EJq!gg}NeRTXEBmGlPoUZ1s7gK!B ze{3=9F)-$kMjVRQLqc)0_MQKo(TG4z;l&>2@Y*AF=4-%qxMM6KO#-}78RBGh8D3m3 z9z$HLs7Y8ratxL5+|?MKX=}lJOOSe@zUCGX5bCuzLDHEh!}17GbQ|Pp;m=7U@_3WM zUP~OVTmyaw`Nf?YTY{JrkHHhc63fGWd~Xc)gXrL7fW%1;6HT=^k>qDnsPZVD?r}(0 zgo}|}*rK)uyv{=e9DqqG1s#MpMqC9Lopn7ItYZ+o<7e%EQkj9PV`eNj_C9sxL zHdQ|R?88w%ge67>cAWS1ce0Y~hril{I`A8k&+_Z@xO_&)D0hRZb;T5}9*1Qgz>BXR z>MLqpUFu*G82XcB>WawDO-r{2tjMDZlB1_s`V@slhz7>$d&#c;qD`Lo{R?Ld>21tn zU{bqnTL8sNM}#5cP0H<2Wh9@2>@FDJUhkCOM6QE4UPku6C_3Q8nV$n8KLjq+THl+C z>Yb*;&f0QP&_jxqlsO#ra;OL)=Z?y_VYTNkW6QZY_IfoRIsFvW#~v$r?$eNPi|*t- zxkzSKBLy|a7uv3xXGdSI_kOs19myrlyz2CiRbnRtA|P`p`6~aJ=VKA zHdh@Rm4Va7oujXYV zR+>ram9{NG%EaX}b221*!#H5hqvYh{G|NChT%H zxoL23z{Ldffne)4WW3jjjF?lG##is;ir*~^`n(27bvy!Ko<$ouY2GMNEikGjhqX~c zd}93?Waa0>HESu$^6sSu@a%ezsi&oRB5=1Z{;DI*6_k0lmo-jpf6)>*qh$V#U5jqG zj(KaIzHMa2+p;F)=;BAaZgCs;PU&2B%XGnyqBXbijMZitQ*5(sq8YlT6<^I38^bHW z!%X(7ZF^_M;0*vqSSP z{?S{}*jm1^^6|Nz8MC(a*sc}VzeuXH;H$ryzUhBlaS1-wCe`WKYXe7+CxEqd1{kxu z*bTnCy4@poe&CVdP2$xvBQ|KB7|k1X{_F*_kn0o-KmLbzuAF3&SHHZF^u8BaC)Rwq z6dv&W-kTR}Yx!APuKsxZ>aEMk^`Fjb8i8rH_@5Wy!qron(-FSh;@w(9QAdqAZG4~( zc^g4KJhoSFrhUd-Mp^1eaW?2Uj+lq+ygg&f)GqS&QRF;jIf!`q_|xqi8B2ypMTS}eIu+Ph~tUvKa4zM z{4;@~sqcwrxqup1g0Qww?hVxPcOGXql&tA1HFG1y9CGHnQZeCR3ddvc!5|lq0@YZL z!~6Y`_LwLhI4&H^<2)1(0H53hUWnR!men-BsfJ7|P;C2tJK2Aag!ku(i>P_%5o7We zuNJY8A&TDFm!spq=752-Gg~tq4QD!CmQaQgFzGp%*m?N#U{OQY!9NE8I(}2o^LXo0 z4-3^cOEvg8WlF$-xcBjnAest49_TSGdfpxqZi%oq&cd3y3}G``Z;?~ePU5fAQw|UN z`Sh4URqI^)BZlN{MGpC}lv=hTR6xgy8oSrYY@%4NY;2saJp+~;s>`0VUt&0Q7npUI zx6tpAR&pifoRfg`w{!;nt17-fRtx$gQOq1K>>F zE$MQhF!AN%VmT_ES+BWg>_)vlN?O)B`_?1lohbjY=|&{%3-AkMg}e9f9aK{<_q<6- zdn3;7eq8SKLNU(}w_sTz@@)&y+OsPH(lFg_tmAIKJO=HEvi{57dCeZd0Q-sRE%SXE zpL9aSPC`IlU)+^MBEb9S&tv)8O}Tzx+hF;s+NpR^Z0xTc*c`uYk+N@A-{(-sXb(- zd++(HyD5F#;1ANg{E%4Fe6ZIgejc^6&n@#gi4c9OltscZ#=MJ3B-9rj>`^hYd5e>Sq#E&*k{cbZDICVeQ zlp!Wl9Yl{(#AANkS8{{)*C8YKg~3L$JI%(|-tI?f>XUDU_q0!Ds<1xCPu=m>4?L_7 zEZ;KaIM>=t7nTn4_xZdTx^(7@yCx(#hS;i>oX7i7;$t= zlINXFufH?BKW6&qGo^woU%M7^CZCa-_I<96rtBc~o6vq^g% zKVi=Bb8{(kV%o&-o%}_JwM0C@E-7JNW8N^~y)?u`T`_e!_ZdEi_jvn#56W1#V%FSQ z@9y;*O({)y{N6GnSXc`dOf9K<`Yj6ca*ZU{#-?FW`rP{KLdSiWYnA{Ks9lv+Lgdw2|+FR7)UYKhl^CF*9tGs zx4#hAKxWMtVJ2_Z%%i{NBcas`QZD!XF^vblf~(xQjAU z2Dmm;93Aotm@d$ofWd`Z7vH zT9UWx)$Yr$MI(r~-{iT)m3?W&{{URaH`Cc6zkWJy0(_e+3o){uoPWKG_j-Vw_jc`b z&o5soI6U(3oel+vB)1VTJI)TO$D>6%Oc%U3-p-X

Q^HTg1l&ur=m?CQiWtxzFPN|0P$tnc5uV)2NC{8K;YuI% z{1Es3rFFlFbq0T>uo4N=5q7tiroQQ0J^U1PcNJpG%Ua*D#)vkqFh{0y0Y55%UcogJ zk_Py1=|Kk`;NXF>_fLvin5AYz-+uqPuC{M07P`jOrFT6qFbowX|8F$B!?^99f83q3 zS!^sKIj2EXp@=Ur3;5%nV=LPyM)%5Mm@A^wKs8WL?NzahxJ zd$$|1@4>-ANWCHHh6)@yZ)mk4@`ix>&p$h%*oGh*B5$a`Aq|H>JRuZBa)`nqG%r^wPc}9z&q%naYsg)rgtnM36pKB?scABGtvVq=URt*NV!f)RiHw%X zFE+i0{5LKpdpW5H@N7GIpmuq7dR%OBacMzYlcuS@fg!}97;bBC%+0NXJ{SVx*y4=F zCe4Auaz4C!Tcgn2q!}!+VoT0}(i~4GCkUX^8|s{#td*q&Vp~o_)tl`NZ%_^=ju3rl zDt^`1bFx;|-9zI}VYB7SbKlh2Mk%237THQ5&OX`Dx$AJPlc!VZ8nW1djE+n$UgDJ7 z=_xW2$3-SA&nWF~?A%wskIW`hlVvdAUs+Zx5^}s9_}&Iinx{QEg(S`o$WUZ=->qdC za1ztQf*hoAq9}Pxbj?21nhZrpODEk@Gh2~%@j++#c9oF5n= zc7h_OG`COzeR&3C)9Gaa+1=eYwUM%bW9o+Dgo18A658vq^u#}_Iu(Tp2TB`MwW zrRzJlH)Ie|$p>uoy7%8X-J5&pmb6K{OxJq4LmK$ zP;}>#g|)Ts-V97iPmA+Q6VPPT>2UEox`3#O{6b`}n|KxH1pXM9l zZ+HgA(E~l#I$Eu2&gYnTBzLGQTZ{1jN#%BE&e4bTrKkK~sob9rG7ODl!`%LdeM@J2 z^9Pma2DV4)yQeqKyq-|{+sKL21&A%eaLB%IE>9T+95{*el+>|X4kw;jxcO0PB$FqU zs&M<%y4j0S=M8;-t~G8Qz0nMFdrDB}PR-f>!wK}z4%lXE#fw*aeJQxZ zAobvLB)z9z-m>ps5pACrSt{n4g(;VP?Tt6EjV6gHDcHEB%Kb}qb8fdWL34hn)ih|P zR-w#3CQXBf%aq#U^rNPa3`3NvNWLGSQN)*4PUi8Ya$4ao4zA`1GH}>`$@*g#!?l2p z47W^>xA1?IDMmBxBnu*$Mgbxb(=}R+E@Fh?c}jWE&dI>RNiN~@vdJl2E)H|IU1U0B zbjC|bB!@$4P@Z=q7+p^OYtn#WS`R+i<7emZ3++@ZOnm z+?^z?h^0oaMKDL@##qev3j& zGrT(GDBs6?>F>yMdzH;hxT{C9ubh#itok`ihei##DI$%mo~rT;T=)u%KUBM7=r?xs zY%|8`Qz5wlFvR4YtMYU2)|JDe5e!zlo9&~$BSuuT%MVL8*x*hQg3FLVajo`>__p^x z)4$(r|9CRtl&@;uU>EhPlbprsC3r)x>y5WK<#9e2u_h5_#<41v_3DYE^f2X`p>#&v z=?DY{92;e5M?=S9XrQL=4!qcCC~jsS?f|AaMH@{|%kv&P=Ak)qhGP#f^wg1#FY{Rp zxapfHMO#Y=4-dxNQ?v6at85y$mXl~BY>Oh~OzblW{yYpIz{6l@Am>X@P?WP4ed0&( zzPKP}wKPldp2TbcX;!OcNW{%pS@eza6b8dqMsR0K@{Sd2nMbYZ7fb%rc*Tt1betEZ zyEe_6?-&Z}4Ha4nA!!z)V+TK3gPIePRo+U%$VExzWNTS=0k7Jl6)1E0f9{6ldnkY< zl%UqNl)-#OUfURYzGb=0_8M1To71gDkO3N#Ujw%D-0e7=W~ObF%+{SifAuXWx2++~ zl4+zWwi$^bjnl)0m}O(SAr7W&Y%j$)avC#`qMTX+{8mgDg=-FpN@=E{2Jk1YiDN?* zb+dpv^Ou7;y9U&{60~gfP2aP1DrOLw-u1cih*6WYD%S8`l0nG*!IZ$`k(rwk*}F&8 z=Y9SElFGfxq5VeEgBqBt_+UATV(BzEa5jRCn@ss3ee3m`j^G_DQeNu;8}L2y2!f=h z>D`&3;zYzqP+x9@t0hOj?wR45I;xK&XE3v=`z!M>6Dd8-LD|gpRL2*E{DDc6H}iwm zDs$6RNK8U6KU`*!uY{4N14V{H>Cu|Lxn;o>_j$H!aHGNQb9=ai;~2TEL0^>XP`UlR z3>=ul(D%GsY&Icjq|$aZPrQh%{DtHRv*njWENZ>2XUNAO(vg|0E}VN&9`^$S@S884 zvUUHG$e4%kTg4l%rY4aKeE#BqUOyeqH!caVk$Z62qWghwRtl`FWZvcjKI+#-pp!JUESk=|kU}sD`c>s;v=OWx0$oUqVb>Wk_1))d;UO<; zupcNgsp6{J$CO{Nzr`TVP$sWg{xR*zvjY^nb^>MsOA!ku(Ym2+*uRkG|5|e%il6Eo!_k4MM94GZnf;>ysr2&=v8vFU&(T z4)sY_J?Y`4q!>iQ zA**qSH9~tIe(}(8SUJg$*8XE!cVOW0tCgb~mLQ9t$+v|}i9n(fY=7<U3wTI@qsD#j5hPTB zc`F4zGyqcImzjXl0P^l14&=um+(@yGnXt@Khce{3p@&v*<*2=E)y16(8&xJ8k{)5s zo4CryhK6S_kfN+Z$Aow7UNLjQx;f@Zh!U}tj{hNBX#q2C$n`L4N2o|Kq5+JEh8sR_ z&*!c=KmU8cEbC>cn<~mx4(nLK$ip*QPOpb%&s>TaX$0%?z`}bd6Gz}uG3U)Vy@mwD z8fyvWGltUZ!q{@m4LFIBwZn9%opkLOb0F5F%k;|tB1M{lVba(HbGen7#=V^_oSW*; zQcQ4?#)imdPhW*OO4qsK$kGB|oQyJ2p&2in);OXUYeu3v@GNT>i}p&`jX>x7cke6= zq^ee#U~(|gEh`vCZ{t9(zygS<_U9fqQxH1|x+r_G9n^S4<`ZYQl#d#z$GehlTb5y5 z8Q9#8UKE!zYv31&>JJ%nLWnB*CX%nHH1q-YR< z`bZqd?u3D|L9PlUREbVMy$zGCo=zG2az|y)|Bvp6$}krNMh7hj){fJ^Nd0&Xl}Hfy z@iMn4JV1(0du{x8WUL)XaFfFS=Jhu55!@XDCv0X^;GS(4P$xV-<1{n{dm?s7_3EV! zuU%$lxkX(wb9+@f+jP(3uHD(!r`BDV>#W_gsB5=bo7uTN(%)+LMbw_t8v_`)^YIH& zwp|+y2@DR{^DiWSm^zKS&DK83)iA=vfd<~vgpvh2PwXf&Zx){4Q|93mxZi!*octh6k#FuhnA92GEgg^x{4V*D=g&X<+n^ME5> zKCLB4tV+i|RcXd0Thrd=a)k3JY1EEs^(MnTx&=%X&>h8XU~;K%j3r*Z^!rpO#hJLZ zrJ|JEJ8OO9zPqaK1ruXIQ5k36$Cg$*cmkK&%z`ljP6~07zxSp~KT&2oOC0;;(-GYGj$YELe_&PajoP zF#B2%608O24}nB2TX@qc-{7#b9P2wHMhMhgTN|VmglK2j$YvG15d3mMjU~%q^6}5F zrEvEMrr?LDSGp*{ghEsxN7GW!^nB!FFv69BAbjboWvCaq)Px@9f8U~a?0;gT^XI5B zr;&dxPWS_m6^if)%o5a1*yZtd`!e^hf@|-Da0=@WpX>*0vKiz48MCbCayGQk3p}3(gl|Zz_;= z1t?331i-ltjs!`UynTQ^%R*evFLTF%$EIb-V_@#G-cAY6b`ak6DZ)jIV_E7q0RU*g zKbdNGlWa4!hlkeX-3x(K2d1pZKiz=-ez$2$4eB5r6Z6oTB}d;*bsoP4TmSA11IE*n zLK70PqXAn1W+eb4)l4+SwO)8gx&ppWcM@a3r(X1=E1vvh;-Vw4OdN1k;E8<>#Kn>x zfTqJn&5vSeu>3sC%Y!+Ey~{A698j(b!qe;3C10wdB)7D%y%26{rEuN{pfKSWx5(cM3Q%cvaf9l!vSeM(wrE?&@fc zx`^>(V@W>{R-qyCg>KHMScZDYk*&85ctGH+12TPow7ax`L1Cp_74byip*y12A)cV! z2`_{l2Bz@AP&E{Bgay@s%;)-NTAX1 zRQUgv-2M^&r&wANq?%bh2DJgfSMCe;z6!}|upS+N-i#kPQ3!$*<`*|$A-LR1>uCM* z(1odyUi6d??*$_|(E~rtLN!R}-V5p%a&UHfs?Y z+bp&WJXZa5UihOQ`~Dp7dOZVo)=QQcDz^FBmqkBOusuHB9SJxKK6O3t&ky5C!W5hn`5bJR0#rpLEq!U`FN-59<$B^`a2v7_ zZFdIV_5|p*uPLqcwz@sdtk7d*7iu7_cBGIgzC`+G*c*;2CVIH5+!AkBzpet_4<6g> zw;75ktI33kw|lDX9%f)A-S zW6h*^DsJ0gIrxV8up{wx?5OJMf078{ZKzXXrg`H5;3Hm6haT_3j_ ze+W*l+`KepVyF?|_8|{zkuDV5dbl%TSU4g9wxm$qgHGI1DXg^E9AOL8z)*@=tN*4O z-|;}XIA>ay7i<;*rf+f?X!h2Afwy*2Xfp^@I1&%XM%s5dD1f^&=7#Uj-?8C%!z_YTh zpW``x$L~0Pzwh(c^I!ipv+BIoTIczCzs`S_AC4`W#1#-c=Wm#|!SgnbI~dO+YEm*j zAYCx)HqU;a#~!gU$u__$Q19Sa9vAaqFKQtK-+ku&yL`nU373xH$_`WopS(Bp4rl)c zXF7rBb@uto8aGa`S!R`olem*EiqQebO>v;yb+eHn`&RwT&1;v-wTvHp&cGA9m#Bc( zKD`x%GZLw@3U2IAF=5P2g;qSukXQ- zn|t^j4yK=6{r_*}KKQet>F4FAKN|;s>YWB!LI&FA4_wI{Xg@g6(KK-5>A;Lvm83DD(24f30uDhv14TVPz$SJ5v%jKi6mCwG5gg2 ztlZc4eEx3sZHn1ftMtq%ew+vOu3}Yw}X=bZZ9N9D@(@?btIG+oGDKyKb75E6&u|Niht-mj%?CS7HY8I$3fT!SJ5d9-w! z;fw48t`;&upP5(++d?ed89>jj__)|mG5qxiy^OLw!$RWUv-flxu*8D49U1)N(bwh- zaC~z67A4GoAPnnPk)l`2UtSZuIW!{ynANdj@?NpYQQPSq=T;7u4ev3x5;MIB-+Q5( zdEbBh+12s**U!CGW_j(kn;=>h>FA}tg8}lZ(ORv~@4MEVBUB1mdTLO7``j# zqu9z{n&Lc3^uwxR=y)5O%IT9f*HUa_(i3J2r9%H>oFtWu%5l*)Wv zFj9?rzzdSd@3c;qkl8~AYX$SU5nX#9VhAJu%O>vU(Swc-CL?C0j(J9P<-34YRBj3}uep3JoNA()Kq5!++W{0uTM0$Yx&- zhiFwzAjCv*j8&V>d4bK;6`Wk>w8T{r&F=-S=@ntNUhQ^n{)=yvi6PHGj0eH}SAn^0 z-s&S9F;`F0FeMp75%6zDI;#Ej#y4Y{=_qSQ zHyWLg3U-j4D}WYHICRH$J=IGQz)jQABnD-094(ur72`tG-~9SD%Yvt+33Vh}2{2K$ z7Pkn5?1*#{akJ~D=qg!}t)5M%s`pb0Y=}i`WPmFnSgx}Ub*lb# z!Zh-97qoD9wfL`g z8OAh?V;$a^Au-*tTcRb{dL?Ca-i(^6Tp8b#l0eLbmNQI&*)g)c+t{)pPV2BqGw;&O z^WHG}R(WM60jjheV85L^zU;n>8)gdVOQn}A?Ts58)X;yT;`+9ZU8^n+Skq#*WSOt- z!39XKz|~{G>mDXml2FCGY1@4!!0#cxRHBdd`cW8ECjgftD6%nt0O+?Xc_C!qF;{Zb9Hp z;WO~jT>#r;JGJ8V3yiDQv%`t0euXmBWr6G@Wj2s#@zF98o2$HZJZrgMFGWs4X(a1* z8O>dbcAdE6ym~SH`%9VAU<}~)w_@%+=rlJFym}Bqk7$+;70nuZenqHI^->QE1Y>R; zRd}DEPnKp`&s~YzcY#ed;6j#0Om)vgyPP!Hen(`mF=!=IZQ$6V_PMK?q{_tP#|K(y zCy|SW^pnBZnlk^LB;CsxSY?Zn!g{cJmIBz!C8&N}y%{;%xz;EKnPtuY@vg-~@!(7a z4U&+%PRF8%7nXI9u+v6%+^ruU-i1bQLqVbIJEs8M8JCHstfyONEVc>+d*k&a;2mxM zRRY;aH!l+QfVBtY=lql;hi8r>Loo0e0?jjIMH8Z<%Hy-M%}t}70>qzR`BC?Sxq9Vq z!$%g1=-VvMqXim?*&_g9rIOwIc|Em^pXl#yLwRuc45aw$T{ROZ4|?vF9!=d}Id{J2 zqIzFJQPv-t1wVf{|CzQXyl;Zrk=^+;kMx?I2fV#k{@W4Xt}`7++qb9Ynz ze#?~X{O)2~>$;&fhy3=l9(P;t>yA=as@J+d{rP%r)35!vru~XH4&v_V&E}ibIa?O` zPo2p;YITa2DYbjliOs&z%NsJE-|p1kGPN$D4Q`*s47cQ@H>{y9FA5nLie6hVpAW}u zO3ddDYMOukhR;D%)tomk?_aYxlf_6jzS72#m9A2(<;*CEk(%l#lmCR%AKes>P}pF-R1oTHz+#|koX*zLP+^yR>p%O39d^#zv<=^B)=)TS&u9?@HpLiEjZ4?Lb~ z-0#yxfavxqubvSmsh)&P@ztjeM`F#Ds zUfaqgRV~bo?#^4pS_$_0(t%J@w>KeLJc+rV6}5-Nji%Nk|70xKv2{H z_j&@60t~w-;Yq+`JK~w8ujS7zJQQcWrk)mihPZ{%U(1AAc0Q6U!XMXmAW1bx zC8F!g1wye^I*BugL0ch=zsq}K$A?@y7%69|K>+gNdBCGCwiF$~5<-ro_(iPtc{`*_ zfV~c_VyMbWEgff70`5BY*$%;Dnm?8uT(=a)Un<+T3(|WCJDqdYkX@Ir5xQffxdt^c z4(GQJ0!3JQGvTx>h!sJK#IVWJkD-DNOhRBfZ40#ycWO52iKAQsi#R+-b;F5a46Z_K_K4s;1AOk)O^Pd@^Q$)LfVJ@O_?HEn%r3!d(zSs= zym+Q*3r{CG6i4ovjO6Ul|0u2$uTr z(1(XM`Hh$o#N26PzS0zglxh%&mp9xyeTnV}i1pQ!H@0E;#W25If z+sTgDEBDPlL!!I3y`tnqj-yNE>5&arGfW+geZ=5SC4Yf4ls5osGPG(xygX8>sDqy> z>^pnukF9`BS^L3a^1}w$SjQK}+$!w?@z-H9`x-yOg>5*w+gW1|!nj?8Wgd$oth_=J zH$91n?*tqlU~6o)%oe|@fI{8L?={v-ZAoelQO{%9X+qE=>**OyfZHh29C7p{pU3K- zHA8`dup9;{?PEUL4*j~c1mgm8qno*6IJJu~1ranMd3i}0!$8cfjZmf@Np_;$;|t)(Gvx0ou=vPvM=Fmueq zdj4CweLZN!?>%V~3|gqrg%KTzy%(@BpjKb{Km*wIf)h*3x80dp8w2fBWcgc>^Bs}q zQ@Cb^;E>tyH8XbD)Pq}Ateo#N{c1}}-V!WDB&A@q1!MRZ1uwG%Rx652%y!HX&DOlA zAMRbsYKNX37gS?Lr?7Sv;eu0#W*^ylDcMXg_f>Ix;knqGv$t4ZRF1xOY*_SyanVUr zqZj@Wy=Zy#;*AeBv7AmzE?Q4A+mRi;t!K89dNAgdRpM-`*u&AuHoMkZ|Gi<%q$U5J zU%6&f>WDduyo>&Ld+MDPE5Q4{+RVvHDV)FieyRB0#9sma9yS?=&N`>;%ofj56`h+< zb$9K*0O*4@m%#YgOM}RT4a*qp2=ZK5z`?TOyr6+o|WrCqajO7|Vx-B}78_ryZm{$U4~HI#YJK08iiLBKtQo%TkrLmU5D zcyr65oy{x>`I9`h*2#_lTG3W?|e+0^&l@kNChNxRza5I8zDO`svF0;3S~myryK zo)ZHH&p+05U;v2W(>}nH5!+@z;B$Q^j0qiZJ-z5{6)w3QHt7iO9C)aNE*)2BhADgn z5#>v|owI*`{eMWOtqkzg1n;ER>awcmr87{p;<*UcH(a%rjHF8U@C@kSCF~heI$A=j zJ??#`oUgP4fnu!hpn!X#dnpQJ)LO_0vmBzSQbOwk=oa%^^AC|4pB6-!WHYzCY02iBO>8S)K;_&{KAd0Z!E$Gj@9W*bd)AWZ$R~aI5EDgI{KMivkI=5}=BWkBa(h z($7g;ixZ;ihIC(|-wPt;yKmiruw&ZSE)f>zy(?W`W=NClgy6~Kq>GkkEM>(sssGWw zuuRoSezo%r=*{Rq7;vM|%!Kj+V}!!7EIrJ+;cOG|%9nzK@XFceNk%nkZvdP4qwfqc(;*=ZhS(76=t&{wtYr25D&!S3f4~OHLilBJHK~G{3oMNyQF-IVYuDWZZXuD_DJ( zfEqO7BSv_kw%%3ufsjd7EWQx2)2A%*iM#o?&6PEnVLV&yFy?r`g56t3HdlmCBlmYe zTO%LWl6*;U(Vr9e{rk%!$+Rob7VH6Pq9KRe1&P2_MCDI{mp;ZN8}8pT5-KLeu$T3u zCoaLxB6$C~=H#P9a*m(#A+OU?2^vYtVU+myVwj$M#{&G_ zjwW*KX z`USts)%iinh_0ANvlrjoyY_wb%6-LYW9FDF{_geJBKy8zoDatJZGG!+Wpip^0ICnf=wRJ=K08Zt5U?FeGiZ(wTxR#LR6BW2DfI$b!= z?Hp+~FJX`(89qGI%1S56?61p;xM5Rr%sl^Ic+M?D$vbKbM;5 z?`J{BZWUVkP389f7j2rLFgq%aDGjzW}>|Lmy5SRGu{#(oc z)DLFyr;eU|NM4tz)_FYruUI~J-OfPfq@9~o{Bth>TL(m4S1&a7(t1K)G;ZtL{$Q!V z{DFnbH3XTc&~`=Qgh60=>0Hd|ZHleY6Wl+RDwc|LB|IUZl%%-YAAX`DDAd9ykwJr- zmaToH*bf6)%Pt zg8rbYiHyB*>-h>YejoelI)9PDXA2#sCB3cLu_ri)Usn$)rfrt>t|uPK`I0qj=IHD+ zjde{t+D!0h#X-@hbv7u5f-CQ&yPnu`>Cfqwl=>Z$cR2=$q z{?54Z^ABAo$yg}00$KWjl6Lwv7m(4L@%jiEd*}M_spr`3qc^NdFBQM`V5)y*bC)yf z$xJm_I4vY4$|B^|#%|%*#K|t@bsLUP{KfiKRB^PB0RLZldMUVu404uW3u2ZL%Z!L- z#3myHHlm&pEB*ZWON2QiTpAJ32zf@hG~%fd?2LfZ0KdTeTtaBe(;csw7Z-ylUB0b2 zHBGfWU$du7bL6-#KaH5Dj7Xdt!?a*bR`^%HtLZSbBd2pokw%rAgy>gC7x59THlL_& zXsl05O+R%;7w8vRQ>pa}l*G+Lwq!MvA-#OQJ~UXyw^HhKRTMUN+GNG#X^MHNG3OiV zJ5~@YmZ~&adBK5_w8peNWz=l7@!rhKBZA zZH8bUsVt6{nw;(z8g{0#Eiy7}b+W3h!_aW5-quT^-BVJdsTMQDoyN|NhW01M&yy1) z*B{V$x$2*MHCj-(9o1b0RhlR7bg4@fsmk<@7O#0V1?rlY7HnZ|zDC_H2?_|@UZgqR zQRCK51O{@Ku283?=DA9wi;~qf4fPqRYFRL1D8^>x6Pf}dDk`F=KqC&e&uY+icoAoG zy0Q{YsD&&%GP0w-JSs9WZGC#<<@%C6+G&1XMq{UJQ((2OCe4u$itYWq0)0Fs{}{XT zS4a89Mf&(j47b`npWlFLwE0=gM$1Kq@SCcfiV9SE0RzM z0CD$zeq)1!Q4}Bwfzk-NN0|T=1wcr?g$1Rdp$;Mc2+2nnzN4cn5@@HTWdKA^uL7^k z1}5sXdXhTmP`ualG?+rSZWy5%?jm3NmDh8&f5(%tz{b+5TL3C$tG-Zfv82YN$>dAf z@A2ylcB5DP=)N;WFzp~%fi+xQws_?q4QnXEQ)3ibdDh0)jssI<|2@SvJo#tyvUcsh z?2~4H-gz`pD*peK*H4C9a&mIe=R@BCm053ZZ&_J6`t&G1fC>+#8&Gk+eEBjoGz^s@ zD$5%;{+C?1a-|K`Cn{HTMNr+MXahv5YYYvL=<2HL%Br?+(ma3Nf8&NRY5i)~Fn?sj z4-W`il&6{;o&3DT$YTrHj{Zrf3W{@9e|XpbwZrJ+rcXch@`KS7Eb%&3)>FJxgZ^a| zs;J)cMEdLMjJzmx1aup^b8<3JY@y~%J+UY~Y=zL?)t+a;*yKp0=yk3Pv8RvN%SCJ@WFRH|`Nnc2 zk&g=S@(&xUOjNtt`)8~sQWI52_Ec@pFR^mr`K;(HJ5U{=h-#_PJNik=ax|x^>ra)n z9XHe$=hSS<$>}I-@2xTjgH%GE(u%^J92b?7PLvf_yZVJ?73BB_L@HOPK76?RKgoVO zp((Cz>!`15tW&RF9WGNiiWwFb!r)-;-4C7h$91Yib+xvpp+m2T9-F#eiPj7>c62FK zIn|BTngiNKgSMrvJZzrk$@8A#w5Zpeol93lBKdyZ2i?mLIs6q-oj1D11}Lh|Xbn=L z<+5RBTvQm5?8)afK4>?zOP_as-lM%-piKj^l3dT)oW&R|-h%0Xp`sv1=zx{)Al z{r{b1KxO>DI{bf3F;vPkodRRJ|3C8jfwgc#Hr+b>`2XbfQ+9u24`hRi@GX1)C$IlL z^I)!k8&xc>*m3j@lGpnbh)5(07sf>?CZ9Wge=nTd#UP)JCk3oi`3~DYI|h@#@BX;A z_Un`J7y7wg?WSj06vp6K&ExBTzxs2-Z^S;%&_clb-5oTr;aM97`)6{|A2{sk^^%b1 z%Pg_#yv%@PuNdF^&cPcc{IN#$@GDK+LEhp6Q!iCK+F;vqgd&6bTpfR=ao0)Rmn;}Y z=K}7f|D_n0uMdhBKx+h~0H zOd?Ml+CqKg%$2r|a}C@Rx~g|**WP6RJR=z*F--)N&dq8LM(NbfNNGhbchH}~ZKn7g zJ8IlI=aN)YNPV zaaE0M4f$Oz1FZ9Ze$zAh^*R8pxr&!1Q7MX6%xoY#fj;;r1FrvF4LnzddND=p$!RC zWMRL1y*{u1#@#^TqKxmiDI9;TKIWUNt_4?xpdG0A$&57{)Cr)a%Z;KrHB){t{3y$- zco2;dSrH&Be?`;sz=&@;lb-F-2K2>Pm~?#nmN}=anErYqi{%-i?xx%2$U+T!_TIWP z|JfP?hH+dCJ;lED($Hr|{%#c34`Txi_)xfd+^@g&XII^$6=Op)HyTKK`Erz9LCA6_ zBi$u^;0w!Kpl4EfQ?uFT$Rb4ZR4K-O?Ya8(Z(ylb6HH43+FRh6u2lW#ACkEPPZ-=q z;5HI8PT>-t{s<4Knvw@Ujk4UxFj6f60bJEt9IYx4oAgkxp!?IZ!ko-hGJ22#(3MKE z)K^QJ(bF7s*d4g_@5o9zbc|B0q)cd@mh7V^tkl}2-gWz92Y*`;qOp23jhn>u`6|d% zh|!NSb3g873avKvTebcnQ;O8B$}roQsI;-BEKH%_W~tM&Q`0ASWr^`^_W+eb07@7l zn`AMJ&O8uwei+V=iMBI;!x2UTI6|j)5Gb(uO9%=t1^~2M-6oI;En)x`6WBie@e6#U zZW=9G3z%G#j?e+%sm-z>w77q@j6F}26>e@^vA?Zr`Ai+)709T#mHv2~0tZz_$mris z|L{?7Stp~iuD`lpG8*!#WK=)>7P=#0J9ViMHHrvo4EF$|gg`RQ0{;}y3X{Z}?6?+h&$O4*4ceSZf4sZ@`6Edw(EHuFW`SF&LrymSn-T4Q z;@Rpe;k|0Zp{4(?m^uRY%h(z+Ry)I^ zK?@vpHv@WiJ_B%Ky&Sc2|tuW=nwli8~wFw7u}&_^E4CB_xCP-Hw*Zc zmYmz3*x%yXBf~fCYi_b9e11!a^J}> zN>PiKXf8JU4<=7pF7LKFCCDMDFYJKTnpBcouU#rlZ>BB!Q77bS2Z6@~2ec7^fK^6J z+9LyT1_FyYgV~_Oh9?&waMQ_2xIN#}u!m(&tOwEx5UK!_C;%wwWS6EFk+VwN5Bby{ z6o8EqC2frldHeG-B6wfq5#M@1i%~2_85ne%Mb`JxfD_|2j$y3_H11fyJC5auWSC)0 zuc$ky$%|+XiIL*tM-y0X-_=Q&(ekWn1GcMo74As zLmM1EouWDlZ?fXtA*)=E`Bdvmr%8ABiqCp~T2HVTI&9vp|EP|d`;>@m2mWQ{V;-X! zQ>oo}Knc-2l#q-#bU4vVTLD(09@sa_!!Z+;Km04!0szbaI{jB#x7gEzfqW36y zo6ATK#%1j&%l>tyATBwm`U$%~w9gN-!6yeBDcmlQH9z&k>P#WUUgidt5?R8r`I8-0 z>zNHWVdJW&auOY0M=OEZSORiPG4cGzd{LN~D%8TKcejGsMdG(mJ2!d2neblzjl$Gl z0s#gnVrXe-HG6QV4jcI=L4|n)1*pF)1+i`GU-apRoPeVEb2W)DQ?tpt(9xzKV0(FN3Pv$ZW^#w3~)< zXCo_;O*-jm#O6oA$8@k@ZK!)Y@K9rCKMAC2EENY%NZu^z8s{etbXUwa=VmV$0^Y50 zaM7-r!C2!o0}hu0L{?kLFt%aJ%~w`J9dwuR9F6l`o=(kipYdjv?YDh1CQ89 zw8a6MrdtRxpD*C&pd0RF#A^4--E`Pcu79Np`b#0ERj^-Y|2%}b>mfqDm0vh+3Q&Xt zDdIbHP@)6`FMvuBZnp+&^ROStf-J>`>6OC_n3oPaGy?02!KwNpHh1r;YXm~V$D)?#Xe>KL)JvbE1VX$X^4!#XH?AIrd!K zP7~>2?Vx+;7ds0n#%K9daOwj>9W|K$*MQq!_?e-OLw;DU_~@T|EO_x3t>gU>UY>k& z+r!|zJc=0?Q+D`WYSoR(!#>XzOvnow9Idq>E9P}nOlYqXPCmkGKD=)C!FRj%UzoMv zW+lvStynHO`f#0{nFcJk6!|G7ZDd>`Q(%T3jQwUG+$>8UY^YeV`RMBPl1*{b^ObsHL13C>r)-J#Vr{B z;DFDOxo<0u#}qpXxHVO!`(}Ug4e1+lGqw_H_WjU#oOw_#)O#dMlx4l+K<&PhX60>J zoTgSASM7E&aZ)VJ2r1gvDLQ%cyI^0@it6#$f;mtqhQSfMMP!X=4_2}^A$GyZhGVCi z8~7~`6aH$bX{+Si6jg2cBp4#Y`5I^;)}WmWJJQ2ueFlTt%6}HYpsR4GK83GE#W;bX zoj$b>tPPmL*A2DN?LBTiV?Q17#K2Cunr{F?l;Utyzzs=oxB~kj#n}(ChnTEA-fP^% zj$SCSdG%~%D_jz`5drcpGJt&*to(*0s(?Vel&{04OF%u!RO#T@OVCCe_|0m!*#?fp zG>o%hwYd)DlukP^OT$-yW6xmW-@r?UnBXP;;)VX&KvOklXZ&9#?BxsW^2>80H^UI$ zda-5?PlvIjSn*=uZ-5v|8R+5CBk=R8b?&m@NA6sj5qqct&bmNHWSccLFbpEs(QwAO z_ag;i>lBhaaSW^21#bNkFPck%f{mYBQ2$CZZltb;Xg_R1fo(Ya8>#jIqIhPr{` zBmFXb%5x5*m$S_Mth*AFPrzVpjsUNWJsk0U1AGZ!+E7yPi zCiuH;KUEBEr70<1xHlJ~#Uk}zmr!-kZ$`_Ue3#4wa5Emboq$glETRsEPYHPlFS`OW z>H4R3jZ!qe;>uaVVHvw1Pl`Db7m6+C=GuXM7hugI=y&3(gVA>7(6HdO! z9j>|B>HC=2h-5d80n+nFl|F0ie7vl7=Ojx4Sc#QrVauX7*!Cjeq}L%md$Jv5YdJ~D z08CivMR1PQPg0d%b(wIpZB|gGoUF-$yg?(DS^z!7_zyksGC@}{?!Ox=7T|9BJ!$C8 z8-&u8nBVnHOs?pQbAVV37TgQ)=HlM7vEZMubPndHD_n9HvsGf^DeIAp{qr3tRX|xb z%-)H`O~s&c2~$62QP@b|&EU|dN!R?FWXB=TAE&N{D3-DO+9)A``RS9oT2B^~au<`( zOi+dDJnpl+ zL9WUVvG3&0jvkxIOy1sM*^frcdieY8h-=pmUOjna96vf}^`pgQymfKa-e0?;c8)aD z&)OTYr)lcr;d1-mgJN7Hh3FynuAk?_wyN%b1+&xYSjyGzvL&wvI4teG&%2*&x+CqD zLpPb@&3D%VWZ=KujvH;-!?SJ#5N+ty&P$J37>){!&_#=7k2fBBT$9`|%(Lj>W4`Cq zBCG{>;%a6b@SYZcZkh)|er9`+GqHvdR^N08)Hpv><_rgb3m0w`phOcm5i{pPh31a; zLHFJo%%`RVuD zNQ2YZLJ!l->{-wPbY_3LZD9nv96)d7f(HeG$Le!eR9fCx?Xk@Ye^L1?*wM~QiL1t^ z{TNKDZS-;sytWM%h5KtjY6Uh(Ju^B4Gyki$7P>6 zzDj(UxM%emJDvhZQPQGAdo46}_w3;xw+ftzzw*35&>p~3LXMq!^i`019c(%>qyfhd zZjw5E^JGdzHHk>)?&+q&FRXr5`!S5k1-rX2I}HqT4;2{ecF;zcX<$o0ia!?)6+=fY zXW3q`#}!)Yu>HAO3?2BqcDH);45z5MwcPxZM5x{Qu4<0X5k7qazaE>s=qP+eANl0X z&9QA4aYZmsmfsiLr14m93-BvE$jAr3Pq{?=bHRd`hXQwxitPA<()kwLRrZ?hDfdmB z;c|)=raI#b7O%4gT_Y7(cn+|epEgp1InDQQ^@gE;tlQs;WP;iDgfPMrrx4nEjldk# z`JPP;aKw9U;~44(Cj;>xZOQ^l%aVI~E*DyE820l#utV;9v%g~OaSv9?j(XtZUi)TW z$;_i*Rf^s^5%&>3H#rC5zXjcU6U0i1*x+Ns9oDrPG|c{j={jRaV2kU#-DC@Y6Hy8; zK&*B3(0*-Lh%pT>tapz5ru6aE@IAzGCXs9jB9~tOH)Znp3m+4dhdCK%)-2yG>wLIi z@kfUnPKU=QP2SrF|6UI#JjQ-`8uQlJ(bS}9u=BOzpOx{Db5ls#l}Ye3=Vgoh84 zGVYAH_xk4KvzV{`f%~cG#DBUs+{txVA3rX7(22_Z_Tkr%nEz9X;jbKwp7^rs&Wni} z=Ly?gt5b$dD*j)Jp|mgCtk8Smt*Y2vM+h^R_|MCS_ukyzf`JHy&Kji{CM~oT)`lLH z9iDM`+L!)jYGifPxfQQad!0$z%;k-Hc)$1Iq4^_I)%g$pjX$uI`uv3qr_8;)ZWgou z&1q^LUF4E(i0@KQgnmG0x>_0buyyCqF-f&r45Kq8J^Q*Jt_r1_{Z0VH^zd!BkIlAD zHYR{~_iNo>Oc^xEzb@~-xaPmtj~{(oX>8uiai7=SpYrnB?%|7{bbnvfbLa5%qw^mB zSkwFP+{!mk9{*fxdiK{2_xVo-)_s0^|McRgPkwFa|M=?m(fLn*Zyfmk<-a#ipAKdM zoTrvyEPs=XVjZQH)9fy<(AL=Jym!oS&3Ny)F~VTNZh2KPk8h9~K`z6wn#>i(RU2BX zDR+-jY|$!7Lf|G=h6|-iUr#G;j4X#CVVG0-u1HzYk~U!GnSq?*gwV6zh_NF~bPAK9 zlV2N3^=uAjMo5~eHZB@1DI8d$oZ_?LxFN?TtP33EZJKMmni*wSoJ0NR<<^!BNiq5? z%Ym(D@j)J%8BxrB-&srz+0dW_mbUtdq=1hQ_Y5VWBr-q1ku&#s<`JkLeT*P%Bm1}H zn2U|9gEJ=Wo+PF%)q!)AFs(C@8QB9cdZ>BxgEFfUCHBak>zu>-JxR9N%rku?p0s4< zo`)MKTnI9MrzlCf(zD`r^1?(tcD>=(Vk$S7A*a~L7<#JZ-QAN&i)5|Qk;WkOZFXic z30?Hh%da^B;xdbfbYdiIri#U~%~3P*xh*@y+3hcO%O3oDfHF^40ZQVeT1jS73Ay>w zijnW8@0|3!YZN<{(9fYr>nD;p&7k~ir)AmqF@+JzX3R1yMw^?zJjS_uaJRJDn9Yx? z2Do(u!^Ur?hd*PybqjT!&xX^NK`SS?T}P#Q7U-%JZ+|yvOPd>IM{9TZFb)=ikxMFe zb>v@@Xg==zd1wl~T}HKy3UsD%m(n~)^SSA3agma{+(d%mW}!?0=X&Cz9$;&9&rlF@1*I+TN1WNUZ9GG zPIYsoma3-6%+3frM>A`om{5Er+YEAs^r%~X2@3cwK9slL3f58=Uky0eMuk79O= z4r9g)rD19kyc|p$E>!5L42hf$#00VgWXkb5%xEc=RbZr;%YZpWPh!O~;4cAK1O-QG z798Pkpv{HE17(=6Oorwpn2o*`w=l}+{plD@x3J7X0*#;LY>!snt9+W}%Vg4GomD2A;ubd?Lc3S`TJU=JJx26ju!a z!ns+Nb;^DH)d2agNf==T#?2*h;6?_lI7_kX2RgJ7W6(xn25qD=Mv@Yg=5D7BXA=}8 zGT~?e9HyKHk(y(QtypTqkS8*i-Lg^{ExwnYnoAS8!|SYQ>eX~nLI;~c>y|N#=(&z6F=>tx7|y!CK@yR5YzgJ;pt+iTsG4IPp}pW4BZoNh z#w#VX#bv_qK{AV-ET%Xc3EazrglaL><4+>TdnqQY5#v;_M~2emw@Q@2U8Bc^re_SL zZp8J0i8g2JV=d74r+8_a^J|K(*ZSKCtBew7 zdu`D>ZCl<OkX_fmDyQ5ND{|E!Ywk|8><`~`1Js5qy+(&!AJ>+6 zl2cV5?-(ey+R)&_EeEvxq~`CzvaI!S!&*Jk(R$;%^XnRR;i=vuu-EVBSozB^FJTI6 znsL#2@y<#Q5{mkZy8DjG3k%E^ z=_gq0jQBSR^l$)bq4e8qTaf;5I6zsI@c^}yL7bX{+po>^+)YrJMlhv`0*+yj9aKud z8Zm_}g_RSBfcF?d8ImUlJ|>$?h4!r%Y7cidV%1Cv#rC9Ia2&wR=B8#ys@-V=6_9Vl zDI;_@sRu;=X*v8dp^^YK{`fL8S72)nJ>DO=J7L!qs&j-di>ro10)`*Ieb4v_wK~I| zPjwOk`MZOATYAm@z=B6Gg3-hG&%@I7m92wUsXSdk^Jq^X-=Y-2wI1BO50k4y7-o^O zHs((Kywq03=j{{yGseze?W&MHY>!Ncm!=Wif{x(I=ye#Xt zKG3w)(KXp(`i~(^DUL~TjLeb|wCAS>t+apcxJdsa=p?(w`Se|)kSzok*AN{QEk!YYXRk4`xIxS=2dDy#BD`P^yuo!D~XB9WEvM<#1*vonHdSMiz3{xom(WUl=lRCg^-W&bps? zu+Yj%6=+hA;5Ng-(}V6EB5 z0>@51862!W(nC=NV#yo!-W zPUaC--?gGVaG;8KReLH^??2(WU1kY+B&v$3Dx?^1 zFiqYgS|(-H10dTkWRRtHg_T9?q{L%qwczQ=|&0+X4c&NO)sV|8a67|V+{K}A62)F@p$^a^V70w>UUl{kw_d} z<}2MrR!T@rIl5{Xph`%#&gJ1G$1&HX4?OedQpj7VMXsOND9sb4J8x88=v_tLF1WD$ z`t(-W)atPWmzXF}4cU2l|M+_o&P$jR@1Rs?&EWAf=Vuiws#b+%8R#O72dCtCkq`<@ zrJwsi;q&Ph=>!%r)@q@DL?RH#hC#GR#xSw!kt8$Xmc-%oo2o()On#8{<{i(wb6YXf>D-< z(nTPJw}tTDIA&4cVyNHgRAJF6%IFCvHc@($Wjh+A9WX+O%IL`(XA|4WTYOe|Z)f$AIj(splzs zVPKSvuEAj#_c^+U7kCMs+1O@g?hJTUd0R4d z=aGAHu*ARNW<*M&l`6_m?8)sTll>|#nQmW7L@pIHqaO#x@g@#`AA z*g`VToEX*$%p+oN9Cl)>OYsOo1&jIIqw>z#wXR{~P^++-urwUPBiJ6#szs>(U)H%b zE5{kHF6YR6Xc561_mOF9iYY`;As{JYk|l%8KoGO-07o)}tDL*hVB3I(q7rE13~|P= zYIQfSpExn8z2|Xj@z8D8RLxDb5#Kj9ZD2TkKQZnT?(hk3rmyCGa1Qy^x@Gr(?Qv&^ zLuTboAFuYG&}T`TPJ77Ofm7?~;N}@d#%u9!7;5oB$@#71zP5^}E8Qk3|Et_WXI5%G zuf^&^3oZ89*1!beqV268WmYB;j$PpG*M;W_pvOFg}RNkZ}}+8FkQWD z+04kTaG!Tgbfxg;$s+G=$7!|h+bHD+_g{3}E)&ds{%&NL?Bf;y4h$Z@cd?+_F>aQ9 z6U*|;<>$5QhLWRvS@j!)x>B1n0FnT4V4-($e6 zWaz&s%F)rGKbq-4S_AU-k9SODUX+T&i3mcHRy|vH7&3*hc^5QSf+k`lTl<*PQx)^O zveraLL2Mo%SxSNzLGqP=hk$U|MIHm79AYJdu&S>~x$K~L7lNIcOOudR)%O4B7Nz>n zXGajAnwURx;q+9Ho2d2g1?Q|{Q@@J1s@FVInZYAE(G5;mb(SN6<425{e(ANNtHtzp zzPobVtD<23D$+_Kp>Bp-_t#n&W0~!s^%XIQ*eXa^o;-wBwLpOiaJjZ?*TAbE&mQXr zbj`knK~5XvkZzq6osdS4sL6=D$Q$at=1eEsaF9!q`aCGwtfHKW(LAZ2({XiPr#FCuYMYebnJEz{p8B)puKO04-P`ohri{$MxptMb{ zRg#vY=LYtI`b8-IK^lf!;S*uc}xL+_ny%FwZ;8DeQcbIfUDy4 zPZj-NguQuOjBDWcf8F;z``$FwR8vj+v}xLy65UfFNk+C1MnckYCTmFUsVGE)5W+-} zgprUfGZm6;qC*_ZBukd#Ox7gkcb)I^dtSfiujlt)fA(sbnftol@At5Ie3<_pSh+74G);X38#KzwVf;Eo*ARaB z-UYVwmZG;X;|U?LpHvYUVV(T$(Va6L_Fd1@>o1aoc9Oen(>MVy9&4c5C0TdN)sHBd z93ye#VBOlC+mIq8$J}1C$8B5;5aee(@NoL|_&C@Ef6vRnhx|lH42q(C_QZ`)BOgU8UpCGt^JkNt^=J45Iqh z$KI&uEfHJPHaIbSOuKba09Oi@w5evK_!G?wNqdEd7FMlQ5Dyy&p%PhB?fN_16jr}R+~%~zXQ z-xiEpJharqX;mrx?jGJ=vX`VU&B#F4Uvj0#H{AW!^QNgQUH7j|z?1D3U6sF5- zfp6c!@p3s?K#z;f>FITk%eVUX?J?keWeXD^4rvlxsoWYKPwj)1aAN8&KfE{`zC^vtd+!sB_y)qm@(a6-p8CRuSCcl%-N^B6XlS zdfoRjGeNaW>3gxsYPlXAjWuZXQGFsDLoI#QF;q%rnVv)`1Mb^?kBDn#-JH6@h7Oi0 znue9HQ&q0*7b)e6(W|blbYXY{-Xz36T@MQ)MlnGLWj^I=`&y-P)GK%8`~|O$>zd{V zr@@e|Q-ijN9)J+Y@c7@&29#P)cvluLgKbHxTX=L4svx474h1>`BKCNEAj_(qXE?OA z#9Z2`*1#%p@$-F$fQ zAv?RMqxDuwMp|@eW?F{oUWXoX_lstxH`UiKTCU&;#FceDIZM;)YRay47>NRy=Pr;& zOLb>&dD#l;Y8te)wWbdrOfUK>??9Sfd#6>}_pMXcqOZJA3C$pig8;fSxFiz#BNu9J zly*k{`jQOmwhjxX_Ar_r>rSn zTJy58$><=U#l|Y`NC{{FKvxLQC`y^B$}QJ=iCK3(cD#ITv~?Cmgz{?l^i=Mwyw&j~ zAvvLRk5<=E4@Dbj(8wY~p*zD9(3ZZeh6w+n#g)S&{}WqwYP9uxbRw}}Rea9NXD=)3 zT0;FL{uxGzSe&gQ&UQSxXZ+6$f)b4^G$Ghu)^tr5>>-894}|55_moA4#>#L7)OMmH z6O_wSpjHFz8+}bRv>Bq4l8qs2r%L(Wxq!pxV(lpx+YwByN=VcVEN_zqYC@3qv z_*g(JB|dy?*jYeaXe^IUOMrq>PHOhHJ(|qrncK=6ROzaQOS+~@I%pC(IMX0>Z)|Ny z%Tz+HUltpgk(K~;0b^r}AVa}(7Dyu#mKWpiPSb_6*;=h`BT*DAN$7(D3J>45lTak3H8p&If<_^I1?^8YaIKPxb^jaf7ro`;n=vt^_&>D& z<}N9@-+guyU{FH-XQ044VNHKrrj+O2QkeTc0|ljB1xyO6FETgD?;lG(?bSi8drq?p zl7eh)6Y=15`Y!aB>Cd*Vj!j+?7PfI@w{efK$BAIE5UfGa(2?0ej0f zaoQJ?@eyVM@$PYN255^?z9l(>Jdtg)REUrVNhAjtZY`to7=!(9yrkL_>&8PVLz}d7 zY0XzI|69qisMbm~xxAAI!xhe*u zX~mxawL^(wg2sO>3;SW(1-7O5#Y#$Wx|-H<|B@wKBi8-UGi#RSkzbm~K1M=&X^8Mf zs7madBOW6)qmBwOg)4(kfv*i0vtQ3b4dt|$PY8Va!F&L2QMK&ItrZU+yUBHmWw;69 zesLchLfVivkQHmcd{pqOHn^E=&Z8H!<^Q6|*@tEM|uA`E^bR&YE>&(Hbyp(r~=i*bSari`tG|_7sx3!|2>t0slmx9F{h4l9iUy|kZ!<68uJqQ`r+Q@63R#%VRqah z+3UD&qo#QSh5mrG-arl~^4ZbK5D`tzQHk^I`+D*t1InUoRRmIII^vbh`8!lGNf2p5 zJ7QBN9zD#Zl@nF4+LXxs&iyAyOSUh=Ez2V&$GLtSzM^X3j9Fi!FMa&FI(4pw`L+LH zlfyS%(b(ElyPKWYBEFr{Y_3i79`mSe+PAv0+qLtC+PB%>)b7-a$-!~z#a7Dt zeX9WS*Y2CtTivmgQ~IQfJLvp>D2^vu4yWYZ{22dbJW5I@c5OFIN9yMAnuY8Q)cmou zdB!}B%tRV$cuGkzbH^^edyb6|?4{m3e426#{p~2WMD^@sST#ke7d6e)g0*@;emY^s zxMVR(z4ci<)&WQGV#0A^=UJ97QirSHE-X$S>gt9LHWK`o1R98Q=86>|Jamlm8$!?p z_)J;?fx7oxr;=>XaFyD5mNvq7SC6{8lcv1hJBps9L&!?gCf)d%ETt3?s7!@%Z%6G= z_XV%Q_pq~~;xRUR0i?)?0rr0WDh{v3Qz8>Ewq%D~LV zm}Dl)1VsJ-$h7itwnUy}$4cOc%aKTMggS{S5$bxtBIPsJyIzUDN<6;X17)j}5j*q8 zQZx^rT5ECOm|c&;{cDy?3D^te+Bcs(ZK_Qmu*|l4f=RtO@9}QvrOhMQlX)a1ImH&x z(sg;lqKnA8)g`RKvOR3Dmjrn7#IE{xqP`eP7N1~w!M6{kkW7~vm;=Zq$}P{p*pa={ z`hz?<5)(SNk}#~y%TIhi2i@bLrp21Mh*XPsr5iSfN{N!adQ@nc0_eCj-|mSi6U#Q_ zq=Ruub*(NJIsZ~en!$ZK(MXla(M2P!vHX=;*@x)lL;~Zrm`H9K!eb6WU?O}_(FHlx z0lqp`5{Ph%fgQ)oXPWfy*sW^zs$AfHdtI567$I|bd7L!u3q&jra^-!sRuHI113_ab zUJHs$h_qV0g!8+kU`2tSLw2~#6aQBGt@6eG{Z4mWcqjsmfFUv+?gh~KTfnQBorZp} z2at`_g&|^MQBU5InLp>e;SxB5f@91~F%S^kMVZ@WCu;SX!t-j;LTMdSp-1i%-nu$g zCt-BzF)|NOJ;cbGCk}`}Ojw2|6R0&w{{vp8PzH%}*=0wtl}~Ugs#9}rh$(N*sh@>w zx!-T?TJ3sp0?m77H@uK1Kvg9$L?aq`mhCwp5RW3^EA~&B6{3=rrTQG%wK!M>bpV8K zL@z!>Y^B+7vLI>u5}lR5uQtgEPO9q=cODibopClqhMq#*2z$HNLH5#Mi4wB~Yt^sa z;C;NCYMI|CjL*Y9Wnn|Sa$imfchZ9cmAQ5bOrL~`c8(I8f$vur4uPhw06)KT{l%bT zyF>R`TdXJ*CWynNfT;!Ly+}-QN`QK05nugVs&>^Op#;V^&BnXLfdIIcErysn%|c*% zLOnfn!$hjQ#je)A)pO}mV5Zs!fuW%a$=7DYSpi9J=kV-tQiv+7U*aSl#sc8$vJE4P z3gTNA2jPl2!gY07NPreOkiE`DJKE0#Y;|yF0vm$Ek~&6*5)4{AFC7z^xl&V6a1t^Y zfTv&AJG&NQTEsk2PF02vHNf-&!ib)fkUxe2ka%6gx4tZ$38326#)s zKstaIq+Y5Gd4tt?&9Q%=8IWjhy@yoK-gss5f{tCTbX?GEn?w>rT=viUt>E$EteeT` z12`I_UBfbS2Ymzc-+;NVw#Hg*`(;XXyN581vwvBZVZU}FR*LPwK6?**XHx_)poK!n zT<#51(HuR1=Y++;OM!T4tRuFL4H3&G8aC6+Py&d!JH^QojXEi@q%P!ECs(A(-r9`> zOCv%EBpk=ayYr@2f)7@XpAAb|Nr0t_X5uqF^dOJ`n0_r5gxG6Fg=&InM&PFaw%XBF z4?IFN!GSu-3mIZjCI%6hr?gC;ht-9k4FY?aR8jeZ8>|RO9gRF6slw(W8)QZAb|HB& z*gIOZl^*$Ux|EHgj2Pe@irNwA8_DFABkTo>gZ|iA?xK^oZIGF5?44t=&rLwg^L)2L z78gEj&5rWY-nsu+wwHID-*;nb`qd$JJ-es;(oVR&p}hKR)?>F=^;|35Rqo5f$QsOB zft8%Ho-%QNW=Po6S96wB1e4nwSJ=cxSI&n68gpB~Bg5pUo_^lCn2VTWTxf`muXV@N z=}#tA-2V|Ma)^0y)al8H1LxoblAWVx#sTJ$>=)mhZ4M9C=fP+RI;CFx*D}}CP~_%o ze$=#4tf7LHztaWeYyYqQ}_*!MVCvEqP;d{l3JC4W;WJv`Tb0TCJ zUJ}vBoPfpgpX(2^Ebru5-?-#g*{&WuPxIWh({k2KvfG`Z{n%XIdh{T(E#%o;gv;A@ z>*&E{TQUEYSzP&FE(MGkE16>R0YN!xNN=WMip{> z#O&)?s7DNX%NKj|H6>8@C+Q*Z(E^$lESclxsK5f1f4M-yQ!MKL9EF2*HL z0k=-dAivEPWBEtZ>`GBK08=EAZnFMD3BCzXKpcdSy5>~4Wypa#qL zk%38xeM^wR1m>-B8UkCSQt{O#f7+SQ1J)C&dzY;9z}Q68U;>pXz`j@nzRJd*8&a}( zdoir1D=~|Cf<3^_+^?fcv0t;{YpY{*FubO~cGZalyb^mzE_aKgdU6g}7rkYGI};$4 zz0%JcF?|Oy zV|O7yg#{3xV;5Sr3qy71?UXYm3Jg&t`RJCNQX?`T^Cz-w^^j!(;pXvV={bL65=~bg zycpvyoW}v#)`E>+yFgbxa>^IsiUnuGcU{67c3MIZM>E&kFYkdnE`SeWqtU&R(~dke ztcpt_P*oOUtG(>085gEO6q``C9yn>;;tGbIJq3u~zs0%y}ISRV}&BLfdmSs}_a3*5!XTfa*oigUtJ;K~C|N*7Vv z=)3Jp84?}Yc)<=}p1R`Cvr#Tj=C45=!vhB~kn;{W9M4!Ahs=M7Y)Qj@@n9%vo%aB6 ziHW4+aFh%&SoUIEH*lwabubSkE<+X`YhH*o3Z+QRvB;tvgsn&aC`2wk1T7ojx8?V} zV99D%r|&&njPh+kPmL5MI>KCd;{(mSnF40*-0^YF)ULSj_d_CDojWKF%FJ|XV2bI74;bj zQm*qw*I(ic$2vU%ri1>E@bA z88_ZXKMJT1=Lz`!NocTi1xY`%yq|wN$ zcWpGtFMJiIfvOHlQTW+Cyuasd@+AS{Vl#hRJJ(Yuk6->W^Jn>(Z7+wsc)59rVA#Z% zYpia^3ElOdc0~+A9wCVK@NRzVO(^p=B z$IXa7Y2|OEeh$Ln!3Vp+d>uj}jyPM!qat(Wx2zY4)Xra8=Wpg79r}9P)fLa?p;rWF ztmmR3XOULE+AKqZ`?iEF!&s)Suw~tigV+A9SoQr&{N&+Q&OB@e>gcWn;ayysG4DVn zvaz>YQ#Dqddfu7`I3T~HCHFUPw*~y+i36??oLP-JiP3OVk&ARK_d4>a8-%E?y?PD! z96nEZC+0iChoe`VdLzf5`ARk_cNR7wk{WDdMwoM z>m9#b67;}*Sk%NKB;#Yx%*j+!kvNSRny>01GmLqM24OGTSw{#J$P0ok zpim0>9{!&L1;zGZi(d9Ao?prRHSpH`=-ub7B~Fu03>@KN8?4wP;^Gt_CVpr5vX3tx zg>+xv_S<2P;NATm#WqV~zx55loAK2U?XQ~l*SkrzQz6>_-#~$G_SG$(?|T?QgIhvw!pShl{4#`aOR3>hJGUm4+&^Xe7t1*lUeI~oX$h?t!3&sz1gUXG zxwMc%nwb+f-c+B}vv3y6sL3O-9DW`Avt*3h^(ZcBAPnfA<~*@?n`RpReCF{hBL64< ze`xHRw4@_zl=JE@y`#i$u$n4ycf7Ap>3+X$wIxzXSAOpL6#ntj{tZNdP@>gh6rNt$ zR`+E?l8Y^^Q%_z;QFOUrsePPVrxNbrXsD-&C_s~xIKdbM%ZXaAY6QVEe_=Blm=>~!s+H+maNEI%~Llz|y390ivwRxodnH71-U*&p&nrx)5 z&p6%Rdf<=nK59NTQSs2l!8ctVxcKJP_yp(ybRD26gj%2xsni5_z+iZ``sa-mvj8r$ ziL{y+*LA>#hWGhyKU<|vKq%>25+Cxb>$w8j*B3PjZCcdI&1@nVgJnvB;VU)dAu0H7 z-|b%v2B=z?kBrxjEpnX?kK>f{_kZs-!hLb?s0brtFj!ZxZFq(6+R20~ddXFSFb(Hb&XEc-ut+GnIAfE%z7I~&iye(?)dpuoOE`pzQ6Eh=DI+G|-lz<+%9eXwCFk1}XHD~XTS1;@Mr~7q zu|NXnj1;4&G!5+sFpz4SXI(2U4F&oJ8F7PL%ib>H*(u!gNZs+1p8hm~4L?ZrDU%Q@ zrJOO@VuB+d$Gq3ytgv1Af{RuHwU1Oz8Oh7fh!@mYPtGn4q=&xC3M+#5*03{qa2MJtYaA6(ABtzO7W78WhLE zhHIQ1k_qJS?v5xLuCVpcVqvCIH1~Unb!NRwh)&L#{NIhsQVL&3Q0AFS?CX`JTN96v zP;uGX95Kc(L$C-%f-p1$*;Wrm57i@}dICJ=E}N_0jY{6qF^6nDnhp~ytps{GGmZ@x zDR@PIO4r-a{S~*NH-ZGqAf}`!U3=m-y2w+XIAcPd#i2!yF?j|$4+bTAtWocMGZ`M5 ze1|lx3%Q4&`0LgD0xbm&VPo)9E!|{V6Qn=H>R2%i6zfqd1rC%7)V@W0&P!{cM;HM` z)v?Z1g;TtEPiBUhFmh+W=y%lsl$#K1S_*BNj=1pa5ReJg>7!LVPWtuQu7rgX-NkBp zwUqL`7>~~|cEUm3jbYNsD432?iuEf#1<|p2TJDrVO3I50L)7wJ9sC46$w`BM%=EjG zaC->mP>oQFJ=JB=r(J*1i1r8*xR2`#`|(Az+#$0#O6|E-z4{G9b>q=8-R^*NIq>2U z*sXIEsS1QzDUr*?77uDbwHaynX(eh=CcD6qPtMf*+#DR9wZ2}}{+Me|g8LRl22#3d z`s+c5PmmVgMuo&HYtm#2y$|XOXUg^VoypIKRS!=$qKzYL;gOGlq}z`D?d!YUPj6sF ztTIU!DvzbP$+I(f2)WuVw~a^CugLUgUdMt7?O@~&X%KVhli0ulX1|o z0~<>*=|;_z$0SeBUu#lce7b|6w0h*(0quley3=fi>gu(=W+YH}Wb|z9EC z*;%IXJ{t!gfl>=?xVauH-sZuPEdr@yFlx`7>YTmrrj6AjoJfN7>a`;~{XJkN5Wq5U zTTN2Jypu$X*y;fif#k{mEaVKIc*KC0C6P@2&x5%Bk-dk!n0Fn;dz>Jg5r`4g%YiLN<28u*^Q&I zM)=^4Q+_4m>|_ODFFkRIN6ggiu1y4RM;3-6@L#SNkt)WVcxr62D$oAIB6MxBylR#f z%q9cO?qB?Qmo-LjG0l17i!)QTm-!ML4cR@J1ScYtBgBX_`59}~apd|K9C1k|x@}4j zhXTFw*dO#;PA-3aMV2_=h_H@aNHc zPmB0J=num4-e3PZ_-3hbjehML=h1YfKCfx+`L8_9xYGJR`9I!bxxAunQDQBOAwS#z zpKN~a`}SM-d*=8am(e@fqjHU|Rs9nf5-V%VsX=|=rF9cF^0nf%TCWka%Rl}EH{sdAe%xxK*P{Z8~C%Wc5k$vuAm zovlR=PRai~$aRg~dqRf?`|p%S#)PFbTX;w1=Yfllq3DQq)4=HH4LlciG0i=cIV4SU zzoICp++ZIpFV?%J4?SQ$j}I?!+GxZ-kB$Ld5p!-f|1{885@G<`Ad<2-i|GmZzC|E< zO)?<@uEPr4*qYhvPZD5%RyHt z1$-p+I<}Gj$(n9iR?uowglIxUYxIt5b=T2>%i;NIPCQs%yv={;4H$lIWJY;zQd^rM zmTtVB8+qlX5wu(kYIMA2>Mzs>ABVrR+haE7iq%?w-yx^#p7s|Wb@SjZq_K)>Ip*Wr zAR@0*6Ik0?vAV1#6m11=ep=8&td$XzIG4IKPye9vcC>hUt213p*tDuyis3JKF#JW3 zq{x4_ji0HUPIo>`=%*t`gXrfk5F81xml2G;2p1}Hebh826!#EDx_W-Bv@Qn>i6C~H z1Gqw8D_&$=3R9$ohq`KN98sPTPN!|QRk<@vgf&mSZh&T6cKK!!=w79^@G}Uquol&A zFBK-*D+oB9v8@$h>Hw)n!lbEN0AVjXl{iPe^X*u2HXyeiv({YV#iGmO&uR8XzFi|;;G_MLzAvp;OQ~=L&`7$u6e)T9%Ay%^S0ulXv6j{T{ypi z^>3Xcv+tll!rr;}qJtiOWKeUJgmsmW%9C0pkH6DR*!A7#YT6HWUM8s;juh93$cKd4 z6E|)>$4riM3m`%QV9-2?A$CN|2s>WL8XDmsEV^R zybUGkfXZVHU8T2bRf~#XFqzn!5B}YHWvyh`qdkPMh!`_0f*~gCTfw9pmfdv3mez63 zTHO^Ykla?se*MeZ=_&^&XiCuJfNZNoI5?mK;=rEv^)v)W0WXg zUE#g#VN;HtQQP4JsVK@J8)=IN6d5rilXg$22GwJmk<%9zhUP^_ilD3|N#q#8%C=)S zz9i1Z8YYiHyaU>Gn-tqh35pEy@B@i-Vy$o|i+6~}dT=1gyCT!&PG~~rhgK_`&`df% zgsl5B;9%Cus(;JvRIAhlb>P^9!`BaWmOOMf|1)03!6{} zTvgM13axue|Hd|Qal#n!Oy3KN`^U$liMFOTD5h8|OP6^d;Y}y_vO^AiTj+hRe{MZK z4Rzx8&EP99P?VL{G$$b(K<_!Ty;VJ*MC7khPxYl=x-g95JDilPhNnCuBW{+jMv|GL z6Wb9In9114V&O#Mf>~8Fn0FR1uUYL|T&aKfsJVLEfzRiazj{TCc;_l%Q}ssqh(~zu z4f*teq7?2D)v&EcLSLal>K`&e%%zp5r)js2( zccjyqsZJ@8Zv3>7(Il~_|Mg0VuyZzxpL4L(_`>-bx58`+C}#rw9?Q1Qqk*X{UYv4r zr*zALe_#~FRDqr6SmsNu%^=_QZuz@EK3~Jm{@Ji>)CQfVx=X1tRj@pBL7($ z`OgjDsPek-sqolTI3we|51)7a*5? zW!J6M^E2r?i;?}#^KM55+SAlls=L&5WYxRNzj|6h-?TfZ@eiA`P5DUmbkLSs@n|7v zUVO$uQaj~@`t}51ZJwKk32kMN;2>sBH5E-$2dV8&o(3nGx-CtEwD0bmZ>c>#PyI!& zev<;$!T+}+#a>ld%tAHAC?nw$+xv=mQsfg2{(w%H7;)Fu69P$%4P>dz+&jS=M14nu zz>rQ+&nUPcO5gl7$n#asOUtXu6MK_&ximGre_<8fMwP%;_Hf-~@a?^B$#}+sMUNGm z$Ix^E)as$OMPn~+tEY+yD|6tLco6Kcectau2NtNWTAhLa%n$ngwM9NhcOXSo;DGfT zvJOzfZg6QtnC+`?sy!?*vFu`X>&7egIO2ckzKB<}0Lgsy;jukVTzfwx&uUTYTi_r8 z7T-q#^SFgx#OAm5R~9{H(bV?oME?CVFQXSQj6){vOSCUTXkrET!u?9sov9aO-^Mi1 zu3A%flv0R`RGM0po<*rXc`qMulLQpy9qI6rmfdQh^3}hbw624S-A(FE7ymfzSwFI= zcGGG#z0i)@2h|Rpnt1?WADC%6dkt<`c_!3z{pZ zSGc=3M998YkF^!5t9Cz>9TKl&X?tzbI6U=~45IzX z+m9UjglMhQEyMnMZB!~~`%ze1bL;3wDn%IRyb#F^YWgrQW7*fow7%QCIKb7YFMcXy ziIJnjYX`vcB>`n0?p@9)Jz!(pdwVfmBty*i3(rTYedb1NlW0rI@8y=2^G)wBgsXWx z*5L+6i^Zq0=?7pFGp^I;*{b?tgEnx>p8d|+Ll>)M*UR~>Ojc3U*F)kdp{2r0b7OwQ z)%`tpT8S&m^uF|sUDkt=zfN^KJt;43&~~Ut_RHx90}p(1ZITs?>}fYlEl=G)|6uUW zE@7sdbz{jJFP93cSX6LLn9_7Mxj)j&<@?+IsClsm&o%GwUFDnL)M9n8zxRiEx6*z8 z>I)}VU%ayV(%sdUpRaEGcl8y^YCSi{;F8l6nA04U(=smS>UEwaalm_2&UwqvYb9q7 zyy;26y(kbdA%z6Km~^OujBnaq!ryyK{K< zw(tada_SbP{TfB==6B7Gi)^-LwTIGZf1kZ+wiiCTF=X4Q0wQ5`)v=odD&acc;vKQN z|K5PqQHoHuS5DuXanG;(FSOt6+ET=~cZ)4^*CUQje2*Sw^TQ!QX$uwCMqK! z_U=HQy;K9{T#Q-cnyEke=d7y6+%V2dquuNRlK+!0d2DvyXYT5cPj_jC`zeT~JgfN5 zM^T~v#*Z~| znIRtVIV5hF8IPMh^T)U-`%JyzP*v*WJj}}jPl*zCc5q1`9e+4~)Pt}$;P5+mS7}?u z!`NZRRe4yTAgyw^jC8^8v|=S0Lj(hJnh}9Q1rX1Uh%UKj=+6L^Hc<ni^Ur;}!{-G!U!GEX)G&Wv> z9sslrAmb0Aen|I28vx1yP#S<%0W=Sqnp&U%aJHo(XL&XZ&BHoBY{A2ZKJ2_#A1q5u zpV-va39)V%_wO`zz$kouy&k6gVe}uS`C;uHCjR-hwCcu6K1*1stG(6Q3G@B1J`c0? z$temLzCWw)fN}r9Gbh5Df59q(P!aReRTC#?!rJ}?UB@D2dPiexYvUzY=Z7tOTfPW} z^qp1>!`6J_nYPT? znO1wS)?*NhC6hGj8vaY(I|yL5zItb6L%B{@-eb%rJO;(W@O`ze40h*Xk{)LLVanfm zkYuS!SzB8f8Y+QH1}~rWghopB7cRlsFL!?J(XG=lnG$U9&Q-GWIs&X z!;xZG*uPWW>g6kiV+L>nq3J;@izbCNd^l8~T$Bd45Mb{ft`~&L65t#H+(IChr=M*r zhY^2$TdS{w0FD{J8I6wvU*Py0S_wE00Q36M zaX8!L2Xp@vmJsd%z!ia( z#tt~E;O`}c#eX=804w|>CoAC+031IM@|AEhAr8l{HJKF?6EalFrnZKA9hcysg1@gA z?kEiM(ks&mA}zbxsH^{|^9_~ctSW+|3)N>^jJp382t1-CaDd@|s{OFz&w@4o|0~`9 z!hn+fGyZqDpHnYSs=TpXGNC5r$2b(y{d3wT9yJwEK?n@@-#`!Kq`dVDG0 zp`%rE$gt^<;!ynNo|0Jw7?sYKStu-yDLedoFiG~^XIPJnPD zft-wp^Z+9l>_X|TQfbVehg=J0vD-%|0JD(Z)0Kce(d)@JTpj?9^q5^aG zE-!;8!m;F-0KBMyKM?z3@dM_W(T{e`BBk-7nGBLPdYAIs533Y7nj1s1RPv$`8Z8aO z{Bg>BTF{`_Xfy(U!)18ao8BCDG*sy;NCQ|jn@gC-k*#~A6&gz|&u0N!Wmz7B386`Q zq#^0$f<;aP`FhN)*c$+Ns#`(|mKyKH*tFn2Gs8VJ@9TLh_ry?0eG}%RiCg;dgD^|2 zr~frGqnRE4(uAJ*(7*g0gVn0Pd(uAJNHAHCaSX5$#7F)-NKTo35eB>-vsf?jJm8=F z=20g3)-^d38#mQ_m7_KjoM4#}MLbz%6t!DA6}@URr*`oOKFhS5?ITgBQM4Xj3rg_8 z-EEQ6UvlaGOKtP0p)F=;hje-y?}U(jb^_s2&&h4WR==`i1b666d6r0h^wNpVp@%4T z)utv|uw=%W>Bu>qL0K?taM-xiHgPn~KUlWPeS18L9C;-1;3R22Em$o56h$fk z`s2juKeF!s7N^Tup_MlgD#@rsNQt8c^_TiQ(V`3{0BR~6If&r|H+=ctbMWWqXw*up z$!8Bd`5UDV$rca&r^T^jHM(w{5s3;0%4nuYJbB;?)@uzug?ivP!=;#rW{pS+Y{b)U zgJ{}(7hWFAwbcA?U%e$V8kKg2Vr;u7QjC$%JZtr&b2sIzM1VLdw3F{G8Qa4O9%>np zHq$pw|2hSJAfB{-L5RcV<&=9-)c6(`25c>bDvohJjYtrR)ptUL9)gxyweyFY_kw9L zx`_k@QyAFExZmO9*D=2a1IdzZ6I1--D#=aeQa{97_|xQ-7utPw$&Pv zh}lUfygh`X#Xp6*olqc{isFR?f#=Rr@eew~B4ar$|2`PYZ zel`x$75N-JP8w{!4q^!(PRpIry`MH=6h*!uR*%wDdg>y5$(Y|U6neIS2~W(|){5gD zwDUyjmG-mw))Y^jp2-3PJnrX1G$cD+ieYky)$5(wlHtUgi!3D;Hx;xlhlH zGbKAI?o#aH!VF^r;_8OACZnnpj+ZW)p~V@&aXc0Y%ysS^Lk`uRbIj3?@b__|mcGhE z^o#a-nZQm`QwcM6f$Q&1oF>6ytXayj4g=Jv2yrBpmQ}IqD^9C?z~k$-sT<>QEO>eV zxzq&0ga#7lD?eAJ2MrVSUc&%pyKf`O2RGpfdsB1E^yK8lfIdx^K$VHfvhGo21)dkR zk&F(?-k6#|bXWI6RHNuo_Cf_}vxzMA=cy5?as)54%2Oygb!Y$jRF+vrPJB@aoGU@D z1YnVMHoMO(c}We|TU=zV^4;wTdCe2S?K6wB7}FK`6s<{mb{ij!<`G*Yhv87Uo(vOT zwn9)HxIj%yHI)b&aBA`b0ByjwPJ!l*=klIF-^ z&xsF}6mK1_o(x}JZ1iM}HLWICi;a7(1U6!I}bId5K?_QmaPF;?@YFzN{D23UorWKTb;is+GXG1ekRXkKc-~<+jPn@bE z7A{}2z+a&T8E(XqeC-<-K+vWEgnj4~=BjG9)F@hJ+n`xdNC`ff;y8 z5f>wRqHt!#1SIP~KZt-Z_cdCxoa z1`T~M+**%HG&!E)fKXnpMd$J_70^|n0JR&qmdkR54d{4BC315KL@GVB2xk?ckk>DhredGH)YgJ(o5A}Y-_18dr4hbi~ z+;e~l!*eR{a2)^&75}8OESp-xaQK=(3|I0L0?&-4i>jrdq_{IXOBMpua5uBZ+}nJ4B|* zPi;q6bt66s#L0+4h}u&JWGZo>9(BhNFBmB#ile#{55i$nJ&LJ-Knpz$)Y_CcV1)5` zN%@p`ixxOZF^E6Y#K^OC^9JJ^XduJUjM@N{r0~1p2}nBNf@2&4bY}Um#XC!b!X(D= z{#xgw62t?>fEDN&GB*4X;$cKKb^srvBVC-0s?oEg;s@(cXh{fpWf+bOAx8SE<;E)c z_%l;~YjU4d?fh~kG{j>@^e5mf#ij;rt_yKsXs~N;F`}2?Lb#`mqWs>3@T)#$Lz(x$BkfXRHQrY>(xQ;BGAPh2$aplJa)JjF6Wpmq!0ToV|-zOn?0U`+n~| zx2DTX(^OMUHQn!-(q+2H?t)5~k`!Sgg!CDNklMS_O&AKPFcNZ~2q8@6l8@UU#R1(qdluSQN~u6NLk$ZxbLk+j}(K|NPX z4n~UudeZuCZs))8edDnzqR}=mw{b*Aqi<-6&T41Pgq=Zk8$P8emo44dM4x=)g6X5c zl%kpGo^!>%AJci#DIOu|J65I8*ve3AS&R8rTNNPYC_4hV$FccrIc_Slb``^qt&{If zaA@2C68m^Km_Pp1bXSeT(;wS*m`w@TC){=?eZgF@p8_Z5>`r4_x&y=?ZYn<-faWKD z@}>tT(^B=Jq@lXOdWpa_7pvW~(?2t9=Xi5f9>NNfU(G`pa;xY*uzp4NnIA zWcYhiDB%JO?C{nmn}}fG*AYAg<|o3hR9D+c!5BXeUlN}<0WPb+#=lP1%mTaOAy+ir zUv?n9dy^0}ASFcz79HD|bLaskQs+8p;9n_opmbl|D^6w^PE&0;HUVxkz=o2zpGrJ_ zbC}m6?;z3=S7U*y<%UWKq-&aAVcI-wn;G^r3mkbio}&OEqR|r<1T!@dp{)+m{dMya+Cqc1U^D+0^XY8KmCH8 z)zG&QwDoZ`&TW}H>@2nA2|;o*y$tC#FhmSR(kX+|#CU&f-0Jx@N@c?rz#xH8<2CxW zWL*blNPs)2`*#N9D{vP8}vgh*Yb|6H_XTVr#|G>|~U$x2dYPe8&2H{-hQtWZ9y~VxdG%i<})WvS$2;h+ggerjRyv+{(x@G{ zLNhG}wV2r;6q4A9Xx>T5hBa)ja+x00E3GtrWCj!REHbpLgug(_)u~_y>rjvy+CVv(E6Jh{np~c zw*w7iwVXKas891QeedLJF@_3w%duY*pq&nG+63uQUbjlkS6MjU&ISHDxaJeKuUeG) zOpt1n1D z`6ggKPljE(VE#u0idv@3YJ~w@TXPXGniS$Hx`jz^#_K!H1uN6-*I);Jg>Le0hXB7s zpMsHCI=sbJH0?LQ;uqGtYi~_=fHPldTzmvKKL#92tEI`$hSy%HIzIuMwP8_bRJw5n zTc$E3DX%Y)$sL-}#mQ^To#*Vp#N+qmx@y5FXO z*cEFqe^6sH^9SckOSA0jJ&!rP&+hPC)Zp3x2j&MO9dFeJl-80`NI@S>gS&%u?C$21 zYe4rB%v=t)Pr*+uuodsZ4Z!+Ybaz}Y$BiuNhpN>M&n)eAoFEZIn1x=04J3n_4A9gV zJ2TM9L}^jTn7e0#Z5+yN9A<6(yXTLO>z<_gjf?j0@*Dcv-%gY!Whn(EB*~)~KTUU~dL)I~Cb;*z131`ymM+ww6UamrR6wH5NI5r8S~gqs^OtK?CB6 zu?b>VICjz@1(8^KV*twGvzm&kBpmS7O9HtonZ#J86bsRXc%qT$!!}1b>|YdtBoUy& z02gaov7m%MHuR4hUo&LF`mEV|4}}s>EPc<7jd!uscDV8Y(o}3j4eXzgCm%+Wjo^`^ zjFlN#Csz3Cb)9FHw7BT73LAW&*D+X}WE^4Nxi$BQv#j_{#2=aCD*x9evS}t_Pg~gy z3)$n95wfLwx*y!)PdFQ5j~)VIJh!LHKq^gGQPS&x2TSkxv1c1ev00gGUZ+koQil!7 z@K6=T+C71EeDlc`J^w2MYzn>-Xfvv%ACt z5UK(Jyq2b#d0UrH9=#)_)A=QvJK9)2_vY+A-0Ni^Qbcv&MLlk#!j3lJQ;&p+Hv%^; zCe%VJMrOha0LW5YwcR7cxjnPeXahLfa%xl;@KW!d?K0Jv#CN~+Vreh>sz9lJ;+kxu zT#mxmSPN_b=o^iHYFeFNf>!He)N8P>U*bGxdAV{Az#t>#Y8l+J5kI z#;?x9UgxI`ny$ZjY2BcSDRd&zub$&&q+yY^zdc$O1n63?{PmlqkF>It!#g*AyYJ|I zHsp_8BrI^+@ZhgM_S7GE6n1v~v1?i2TZ-*I>hS5QsVRVdT-+RR{j-vrbvLw;B?jic znZ5r{y5A;MX&PM&tp@$qI;Y+0`!BfPH(UH-TBQ{)OPQK>`_-6+ki~z@=E$RrIHDyc zE|Yqi6X~V_!kG_x{u%%OLibO;`|dxw|Io~b|Iz&mUS8id`QG~}?aRKtfBEpJ*Sn0{oqqq*%&S`h|9bTZ(fyhoBi6Z2dGKXU&)x}#XFY!K zbzX1F%p0%tZ*M5)KWu&dv+HsFiT9@l2jaMEZSo#I3a2;d#LsX;D~3=w`%3)@fcdif z-E~8X*D~#mq|>h0L|0%&3$^8@vWsO*qZq}+w>M%8bpEla-zQR~bVmQ^{YCJPX(V0{ zP%EQ&)>+!^mL^>8K{GpdC0^hdJC4cl&l3S=cCEtuiRSMRSsB^m(c;@+hXsdOOEWxG@j4IOep7iZ0 z3jOu2GI%h2fLU6Y`DG8?#6L@Ik4xlV5({T(BI#!QZi=G0#*&Z$YM=FtJ8{IM1ZT5| zCfeEkk*fwmzXYTljBn6x=T`D%#po0lKu$c0VwRnri{dS3kRA2~N&U)1|D78*Za0z0 zlq5I4R#f&rtL>U=Az%D#iW#k$xY5^r;Jfmv?!p+1zHq4Tv~6qqCN{C-|2^FE@YAvD zQw#6?zBcUzcOm(t^zE8~=Oy>X3_QuPeLpa@e7Nsrd&FE)#nyIt%2HvbvSLQfz_Pze zO#gIb;5NIDE}gxKKdaY%mdC3hA-wQBNEu4yq9VFAkx^=%^LSZ?{^^&OA6~5D>?4a9 z&b1FD1}MjW?y8lzK)WXJ&k2ktJS&-A?MXoVl%Le%RkeJD14*CJOOm{c1p{;UmmN1L z;{3FoG)-X9t6U`z5;7V`Ch4GC9SY307w`Xi*Icrfbh0FsLwPO$Sxx{XGy zMpQ1^)?qXW6j=;jr!5GjfJ`%-%NkWUvC&>n>)SlUpp|5B1$KW)2}*cXTj;7$Gq~DA zmhMW7)jRHz|H4xbc9qzpfQNG;1BQoKL8IbB?|OIM1ddx9OIIcG31ihiqvG`#w{ zsIbQmtG3y8YWfdoj1+|X%jX&SY6A-fcH*G?B|AXssOMZI?ZpG?)#=hphH5}J6O5zB zON$JJ>nS%8m@y;nfw1q`k+j7mM$EM}>s8Lm8&(cSitXgax9DXD--M?v-L(7X41Aoq zni-muMoZ7F^N4~I&#+T0h(#D%=?%hV*os6gHh=LWMucc0t>*F}=e9^D!Nsu#8LjKB z8^+~sHK`#m4|%!~L(O5L<0vv(ZICUx_9te^k&PE9;|G@T^BBVYPaX=U)}1+@c>4?= zK)7uV$x`}{I~15a?%v6olKV@-CvWXAV2FE{F9ewJ(9xx?o{tQO#V{aC%@V1J9kK~4 z?!$`2$?7y?=dsv}x5QtLV$2%Xs|%j)>M-s!q=dB}81Wg<1T6QlK5!Iw8mP~=VNwh- z00gTE=974wS#7Z1j3A8IbBcKl$^$;)4ot4DUhYfMOu3ZNU?f>L^9S8_z{5BKyfWT- zN8}&*cKWivJ%!*_?YDY%g{5Fbh7HZv^Zw5QKppQ z=gDg9i{to zv&y?Rbx=&f{seASm^O!Q7I%D{V)q)iZ}vXS$a8Pb2@At<>~>81lM0*9=w zdymYXuUoe%Y{t?{lNM?=9Xm7p>ii}4;dj2}bUnB^Wqwe4`Hdw<{W^Ve-p_t0q`3p1 z?!q;Tj9%p5PcA!Fdj9dE;$K_d{2AMJdg7RAzHR6_z{c?8(to%8|82of2HJ zi_y2`e%Ge+Ns)h2Bj3t9N<7wXTohSfNgn>W#XOufZs##ezCqWP!v;x_bYcDTybg=L zHP4%YfED#D_JHm5{ZGVDptQ7VwKU>#OuTnEz2mUU4gU1+uJb231hr#MRKKAiPYqw| zNd4#})!_Z(hOt!dB!yv{r~f~@>CMq@lN3A=H0TAdQD22Lq#$;8c%RvYBubd)#Y8V# z0{|l^R=>5ipjuFFH|{4XRJ+V|bThOj5h%|RfY)luP#$!uf_#OZmX{j@a%#i@k0%m} zp^X^T(DKd3%|uEGl(6mx3DuxLxtoqoJo3zAA8^K|QB$hOLOGSX0WO;ZLhInLI76-g z3TvTxD#d7P{hX!XsG&eW8M2PnidkkTK}}oF`$aM;tOf2U;$T0NhVZ-hfK+nfr!up0 zXSNt%Qi>suq4oODZGc7s(JX6{fsXW1qpOOtUa?az6p&{Ym|MATw!We=K(*Fw&_?35 zZUC4o!8OxEvMONNTy0vub;nKs)ZNC)2B&#IkP5BJDLR5Z1x*ZAXFx6mHRP2Rxauvy zrPS7ZH|>kcO_MqytHKzywTTdzeVEsM(Yp=`-C4!u)KqWiwPIUgR)v}JxY5Z-CkGNJ z;S$;v+n(yaM%Wwz={k~@)wDRjfitk3S58_=E}NuMym`C}l^$ktNV5VQ_YIaJ2vpRW z5a=`AEB`(zYXX-2z`EYW|8j7~(Evd+X@zp!i6PPWF_x|~2S$%w?}GhcZjCx@BO>=a zs@xP0p#WWvzIq^nDeYj<)seXB*x>*cQycf(`-(pDN@)`Bc=$e!XzX#CB}ZW6mq`V& z59`%%lZ}Ym>xB9dI@(cMnkP%qT~ILuasg=e2nvT5-Hs^@-7NnD$xhYAvDN}{(9xt* zg>9YsmR5dhFsjJ2YQF9<+4^#P`QJawJ`(V71*G*JoMkX1JCkxrCZ3&w<<;;%;8Hxc zk2ad89U(w7MFJEiZHV_m@cEeI&d@>~H@;?csXyEjvdg6Z*b^hF^3=LZsAfS1J8~QJ z3ENGx#wC~mOT~>#nUtmC{L6n_49cmTMUmIelg8z-964NWIA-nhvcE#5>~a&mFHWhG z0b8=WFBPz~%<|R4IptJGK5X2#w^b2*?GzaPkhB?S*)CI9Xg#;YUEjL@dessC>qR#+ z4HL{|S5}3OT130zza<&ZBF9*hHZ1SpNu-r3@tGBzy?|onH7`AlY8`}CPQaqv6676# z^7ZRV;MHZZdDU)dr`P;(Mv1YPdFWjB*t+n!4!KcMZh7mw3NUg3Wu-Yay26D;kREJh z^45ec=`F3X6iafB;qH&O9r|k$xm`r9eqLtG0vo$dN7ez1q*wyGFNq*}GR&KBa`=Ir z2C|7?SFAJczh)}9WL6tv&<{}R`siG8Wlt+PVW+7Inq^V?23RLZJ+0K00T#+taWNoM zIlUbEuB5jTYIYoyW?N^qtcgl+GFAfiF3Lnsijh`OJN|k3oP7Gs z{i~sMOT@o6wik%bq0VOS2<{34Z`H5KJ!WL^++nM>9GGPE=+#kcjnA1S4rEGv`p?rQ zm|9&Z2Us2yWIr;?su3nhAGI6Le=x2>5NZQjPMUS=w`mPnwT(8RXRki?p5u9LLy~2& z6i@??FRnQlchk%)7V?@Ue9~g+4qyLFo0@B8@8_Q`^0R;MghB|QQ7qK0f>o1;hh(1o zuIi$#cR8}_Nm1>zZ{x|m)iwsTPu{Fb=O#D&$r5gExoJX7TkQn#SDg22&IMSx($(bg zBnvY_`#ubn0s)6Wa+%OsNI)w!G^>RiF|g?+ZEx)q_8%8$cGB};er0P_<4#Vh;_psU zDJ3U2-6~6VF^+>8ThQ`i{&EHdxMfwqv5K0``43NQj!ZK_7>k6Ww^5@?+@wFj z^5{s%QkQvA4i~AKPUvZo zxa?F5S3y}eAF+=HcyA1=4X|UoP#dQGS!b3Cu4x3G7pN1HC~_-k%0)vea?~5LJ(Q{& zKcr!y7n=af6B0Xm`g#|UHtKFo+;Py>Snm}tkWxlF_nl`=vWPukp`fhV$jB+dhP}Iy zGeTFjNIPQlx5D{NH}n)qPd%5maSP0|rO8|^boKLKL-XfnP$sdExZu4P!{3rNTR?E?bs}%;M(5^bf&L4?_?;wTR`@b#K9KxNH8boJlhghB z(fQSS+cz@{yZt%3p57np?4n>OquTuQzICTaK`oVJ7Bt5KT<$ZqYJ2rF-GU>f%5fp% z%d_!Kekz0Av)5QvnT@5`DvA>eS$T1@PEp&B+yqh(%zj}QyBCxn)K~guP69RCCK#m7 z$^LW6La@hhU}%bCjIm;up^o(LdSR$;6;D1#*OCHV+2mp>@>?HIjkE)3)Ut+M3#?Ml z{Y;VY8O-sEcYS_mp0o@(91CiQM7DPC;G z{L>VgA(uAg#uL+Jp?P_h{hlg`P)}`;e;cI%; ziX3PxwV3pdWc&AT7Ly5%(foea4~NOt+yr`TbAca3RR+vvli|P*T@C}jS&rg3^o1wlC-Lchb?Vc%HN8CO+qWY}Mdu+dEofsBmLJ|wF7;AT5ZCU?Fu|(CsSD?IRm1VymRC1r_5}qA~1N z{iB50H^k_Xy7RZh49Q|`{bB!}ykWd%$Q*z*gKA@NpbB8Rpu)1sC#(e-4A9B|mThqJ z-eui#TT0<@(r^3UtHPRJCPX>|T!-VZS94MX^ zd4s&Y+kbAF_mi({`zdJ>bi?$a<9XMXSc|8bi&Cch8)tj0*rzMYPNwu}-j)KmjY)ot zb(xd z!mynY9cu)D41LBNH$`O(?AJH%c^j3#Q+B^Pa)xup{UxsC&Y(!2xpDsgkX#YDzrL~= zbAB>hKW5V7ph{a_EwB{q-g3nA-y!U`szDB5nduq-YjFSnN%#M}E$=GE3MEnA0+oo# zw6JxRi$ocY@nwHfJZqKMh`($7XWu$7=cuxR9xNJg@*`GN8U#i3$)T(iFASdl>1bl{ z#aqoudy-bU?}%JWXADk=h0zp^Zxh;}P#u{YU+5E+O1%B%lV0Z>Us9`rtA-c2atXCf zu**3UgFigq?2&oe_ySS5V5URYNCR^xZo{wxNk#BVUGVs?dt}iSri~M|q@rf%o1T47 zKaCe@j}_hCKl}Eftrj2uesp~4=l5I1OJ_c%;n@G6<+T6M^0}Y~7ywgHhQM$HeItY% z@!be2M?g2CzY!{qh;IaRBjg;B;3zWw{rh(a14mpr3VA3oAkw|*mrhDAEiccRDoh%idPvo3E#%ud zi&XoXmMqNsr0bV(iPrXZi9~9`W;K>7Z{2-VvrVZ|sXcuq-Te}4mWag?3*C)kr3uXk z+A9@`_kB7~XK}&ET#>UleQGjUrFj3QS0c_nP}d$4lTccfx2>_Zvb6lx^PYuS`EA{; zw;p{-9+_BHD@~o0BD1y=HEwIp&B^V~Y91Lct*L1i3Hkd}O|kJYDwPsNB&DY&8yN|9 zE1P?JwXb$J^QTK3g`zj_``vxrdv84okc6w6+f!0xmF2Yv@XpJQFQ#?+0SyGuuuzql3O~Px9*B9%5`lazw(c{9I4Z1d+FU%B(DbyL*x}0cF|e=4R(i z?X6SRE+_L!8_Iva>35y3k;Wz;+TC}gv!-d2viDJ|P$FEoBrknrjU8V&OP&>)#Lvmi zbRY_YIByTo;RxvNN> zB8w@gQN^UA82n`aq=Ya1iiHcyCpDEI@ZU2uyx~AiN?!Vs99d&+=BzAP=EzipwPKxUSF+qN1cA2>P+k;H%uhS1O$BrzaUAwE7C`3GZ@5|FZBV)9=K{G>^l z$VEW919BP=ExvGJJ_?90D9A;*@N?(pPMw;GbO$6lAeMZ|lK*4{q(mTbp|SA*vLyfj ztX%N)%&$=@?QjY=wu@<&c1TL;59zhckM?0ShB`8P_I2BnWthQ(UrRrbBdKTa4BAh8 z$c!)f9&vU>g+fg(5We=&ZBj=T!+-5mGlJJ{kC49@gz`(*?LrGa|M_9~ofAbZ``P|` zHOh7gWAyXcS;3#C5&s*<1N~FTxIp{t`SU(xS)k2_HX{0z$o)Xt2HKaeUiBgO1AQ8_ z9nr@{p9y&vXj7scjJ7YbLD2Fbc>{ecv{YzG(6XTojhqd%v(Z{2S7dN-5G??Y$45(u zJP@>-k*)FO%{!!mAom09b!2X!n*nk;(5B!0KlKgB^gs)?c5M|}UG!C;8v_zW(7gfO z29WH5G^YV+3|t1QoUCeWR%Oji z9ho3I)&A~$yJlf&x#pHu?C$I{_zurdUbLIK+u}J~%+spIvv)Ejg zzmc;f)P0+x#M(W);JUZBow%W?Dwc>j)Oz*M`L>dp5`l%giGW+sf1pzCEYHn)uT!7W zwTi5>tQ}b_cjwBQ^q%8a^K!HDOG#;Jx_bnndDNRSD?273p<&;7vgm+9QKD*Ad0r=# z%}VV%?S|vo+MZr=c^2CwKxh)4;-9*0Q>(7OcWq5xkEXfjuDZvcJb$qbnI5T0={*Hx zkLHWWS@3h<(b%YTk%cHrCOfpPIW-|6)K%Q0>+QK3aHy^I;*kR;48hvksz#+s5)%-V z-&?gj{d(io%!F8PZ=%wXOo`%W9Y274j}6EBPu;y*y04kXWl8ge3^pqzAy1q{MCHhO zE^7Q;jf{}#;^^K`)6m^{b!3z{ToSNtNrSrkYNcG8!jGAnm#yw>I(0;u92LH;NQSXk zBU6%v7A*CVt3kf!-|y?;JBqA*1%3Sk8_qX39BB};1lEoMWRDzbRrcP}wzX@-Vo`T{ zduKbDoFMD#{c@_YSy56oH76!7x5_#{mCTX5i`@%K75h}J+*onm^5m+8C1|svJ&JZP z+M54uL_N?O2xC>sj$)RXXL`44M^_owDZU}L<#{9@`(GT7M;~vj>i!?cf@mR0ecJJg*Sv-*SNX~sxyryum zm5GZVIf^t5NKNf0+K$dH@`_QHla09*kk0R$pH;oRh-a6QpOx5n@%6)!nW;pjwzSAN zfLp^_KjWCDkUvSu{Wy-X7Bc0d*R6mf%UNJ*?}1+#WhB=(yH`J@?fEjYQ0UsM@H=zn zuBAoPprNdof*f{CPo8PH##=knqvE<&sf&PTuDFQiAQ4BA z?1PF<0N-_~Q7WfOTS2UpN5uuziU8Y$AfM4J-#JCG=mUF_x zJ0ifb&6I)Fzj{<^gA}@mU>o>mM$a000Er%Ejq<))k7KWZAw#N)GIS7s=g_cN5toUf zDPozyzqe6@P>&)K1oJi6mXd8X6wM_|x31D9yzRz3J65KPNt*8$%*b0SD>Amqm(Sjz zTpoa#xD&c{CT7IN-s^%K*ro2ren8G*4#cfAd0=~&mv;x(nB&YhF%xV z16JC-nh2OGCJfw@Rm9=mq?(RIEKvG-E3`O;y^Ls=c7?yd4VBdFnd^^JOofJSft{i6`9y_d8`s;wG3(A)&i0dA=TRBXg zR@{Yi^7QIx_SQ5~Tdo+Oc>$+-(wq{i3ZKj3vWf7Z|Addnz4Wi=!5SVGmm z#z8XFV_jxHEo8U}Fd^7R<;qSI{{!c85@2t`P?gjpH_ zXGn!Q~kC=#PrZY6U1&amb=ch_%#s^J`!L>BbbBT%G{9} z%A}U%V3qf9AV^|*JWVdPN8g33HpH@OrpQYUVKN%wX$a$q>dP^c4pe5`&77v1NLs$Jt=Qed8S3{R^y6{Tsc|ico}s(li9<# zNO+ZwlfhGl&uAL}y)Ou#n{S?@pJ~YrCq`{^Vg2)FdU4P4B}eoE2!aCbjz1fFvh>&7 z9G~5f-+kK2U}tUW*;oIt5a}j2@2|b!3&<(dc}8F@gmRLM-Rm6J;SHfTan*iAAJ}K} zcU`z>QnBs@WNE9SdGh0LXK7)W_7XdfYiE2tbF@e5jwoL=BEIHE=ddobvou{+5)sqZ z*DQ1DOix~Ge-#t#SQes&RxcD6Mel&gbk#bJP?pD#J%AD&G&ncr;-H3ry-r-4ZW6cE zKzg*t~qD^Y%F zpu@9l1#myCW|&AIJt+^E9eOk0UqBf@G72`&(qcA~T9>@~ypEZlGCDYwgw{k+{3(Mt zt~8SF;Y32sN4ig{8cUWI|9e2hbWaToTYw^;xmx?AlO2$&oGX+QxH*?F399LH(O;qA zu}h+up(On(0G=$!b|%v)wp!w|BpS*U(e%oQb~{2Pci&COA$1xPKXk5)N8F!jY$9r7}8naJpsrXsvLPa z$-jDQ%!R@j0tTq63>jiy^Q@DbgS3P=Qrl1)BBGDH+yRZqF;o><2Wul~0U~S{{}zoS zZ-tH;aCNH^f^zktZy6L{A;Zm^AxLSB=brx!d{ku5k7Kua*e$$qHTza(!2*-I%}j9{ zVYp-ufK~3Uj)!HqTmxpJQLcL|gr4%^R$EXXq*5DY+7*|&g)$lC6p)j}^lW13vN>xs z^ykjghAT0Sk^*;wp{?Xn5W}j&n9H>gmXyKPk!rwI77bZ(2IMd3xH(mga|BwNmzL18 z|6~ARiJW1Gp2e=*wv|_v^vbb-jyB$@LJM>HG51K zF93)Mi0K1^YT&LJ@4bH6@Z*d0H&BpD;SeP99da0!HBOI#Z%*n%kzn*N#CD9mcF9z_A zyj%yzgcHlGwbr;i+Pp2cZZlTDVOR|XMIyLM@5Z(I3WQRy|HO=Mu9!%Ug#-hx3=7wR z6_&-PPk09Ca!f?Hl^j328(eV4`6Ky4kQ>>I?RlQx-&hi&K~rfEi?7PcvYODpve5#c zTZT_*bF`5Ml+J*k6N`+s*xW1_{uMb3kfy+eNU6{iF3*F?^BiC0ICd#%m*He6#lP(? z^AW?1NoHI%UbhshKZ5H@@o-bP>Eh(DfM^ca)<_Z8`aRZJiM8Hyvmt?BIrLH6E&d3+ zrO=bW^-6gAQi#0{qf4Qk5|;oFoq_v-5k_+Cs{aO80w2kTA@XP+0#7Q(lWVbHE{>}l z-3TmLk9x#gAo60~Ri_V2TX{3m4~St{4>m-O=g>w3qKJ!2W{cD&3@=`Q&0XS2C5 zoIs;Y$g5appi2Iw!<@wv2CAV@g)`LPVh4u_z`T%9Ag4E(UMLm$61aWi?LAc z^vjE_U{rPVc$jSfgHdZw7spl&T-6zDAT|cbEdl=WWM{3*%AJ5{oi37tK@ncR1scnu z0tq~f3#`y3qx0O+Qrl=HLJ`EPFGG(nbwiX;h$7I`_102zXQ{K5472O1>~`aN5m?~D zId&sqk0o#>a9^dFSJASx5!^v;AmifJ%k(KY+;&NyF%D7i<(F5`cRT*MV2vsu**DYg zxp3!HN9roV{*B`@^SGB29hEQhmivRT-#M--JWT3b8$8uF8C7>m3@fLE4o%-MDmp;3 zR(K>pM9#YBB0jZis?ppjX){OI#iw6?o;od%pVu|oBy`dy+$xX+^j&u5DdMdA@V$X2 zU*qg|)6!4JxfUnRI5y_`-Z5{!`d(Nx&6k!ITZfJvnre5YN7lJne`#8}5jshC8g+0g zUnM)K2w?#Bs;WkOZTc?j-^L1s~LP_)v zoUQ?S9aa^<9ijv7ry6^^cHdY;dc3fBuXjlbz#-6L|0w_jZleH}s9#JAI9%LBRX3~@ zZhte~Q5@h)!U{^5(Fel-3=(6qJ`l)V9336DbOtaKL4gQ2Bhi<<*9*YhAE4fPN{|MG zAv;^Q`OW#g`&%#p3fBd3bWwF}E60GF?<)r)fPc6Mm@NOx%hMB|1O8&@C%3aw!oQC0 zwUH%QYq5X}Lp2_NrowwR!)H1HhTY@02eM)WX#7Lybj{uEaBvagq4gPz820v!vc^0ve|7avmC#*buISLv+wo zg&QDM9*Iv{=*)#DZ((go|BW?}<8byRP?=Aivk8~{f^>j~DyjmBb;hD4LXBJ?o`5A5 zIm$tZf|xN8cLQiUz*F6UdIAqr;7502zFNVTxj`rnhCcIXFo1On;hSj46$3{tG$cVp znwN!&VR?=(Dgi3)K(v4FaLS=_H1zQTbwm{QLM5K(v8|b9wZApx!Rc` z(GqHls*I1HJ&xTP;F#+!yMbX`E*35)3%20Rw=d3JrO=fG7d_B07+amZ zWv<`+4WnegZb5qz1aQG%E0E}d!j*Fk7=UG9J(R>y%$5fUf2r^gsaG(8je6l6poqh` zIb1ok(3&?$wsR)5`lK~bk?XI`imyG26f5pXQ`_$j_$@cCvvhTsOt9td#{Q1N@iWZ$ z>Rp9N^E7wT`J}&<4!gDyI1-ql^X7ohvw6n}d!@a-+SXBqJ@CU4^t;lX5O#3W+ezl= zB@S_@xoJzGfkx78zziTyQyh>|a$A?*`suyK@iCyq9h4IY^-EA6qzQ z*9v2^gL|PEsVz15JI~(Yt-Q+T;*05+o{Kf?xwqzDE-IyP5ka7-@RQ@M-E&7Qzwg-M z7=47OUuAapBZo8Qfky_4EXSrD#~yA{t*qGcVm4gzV8Yd1_~cS&1H~5i1v$;*fx&yT)vSR<=!F67dbjR_0+`OI6^j zPCIY)1=gQEVlfEWE4GlWaudVQAn2cqjrnI|T@2dr}hz+47ZC|T_M zc83<|AU-oFy(-${<{||{o>gk+rx^IIu~M}mAfusul>aE)CmJ}#UCXLmIoO3e>rMoz z@a?1e^jtwtmd%&ur#2ZphMpK2q5@%mbCAwzr*aTVp}G9n^o`p6J(mCU6b{fFC0g)H z2Xfagx?8gQ)+Mu{inyqE*s=gL0Pj z(o}}gHQ@^^U+)?)CeYvR=LJgtix(vtVzY!4+NCn`IrnW;?8A!~u8JPRtY& zF;OZsCMtVX82^0U^;{n*g37&7@c3=dNJsH<6D1Zsb7b7oc@Ij5k=2+)H&o2++#UgV za`@XU$u<#d?dG)jxY9D986kW=FNH5(vGWJVR)%qDi~MCDs3)-}mS7_bp0h;D16A16 zU*qoIEYzd>f1nr>$gwZGfL|Y0nq%rfdh4}U@b%b+l|GvyQXaOXogWdE@YO3=0Ur2$ z`b#or+#NV9Kdtka`^`JnOK)w%N_b}Akdr*ttRmE7`9CJ1;+?#kFXjc|pT9+Z^cZIY z9A@$i=iYDZyDLzPDYV9!ITq}1iW9pn4Rv#te*J1u`rR`TAGh#&-)pzRU6V_m{d;K2 zk4=R?YPbKWJNKgj>6-cL87;k5enQ`0*ix11YiYNH)@)#XTuWY9G6(ZZpvrUwSiZtk@sVbJ00n&GB= z58Q1rw9%^`-n+q-&zl-1um3b$|7Du~TcLhnyZ+}n z{oqsm9}ZVfGjUGU{O=tP)Zoy2^TjBI!-)Ue@i>%u|JKXVwSF_NH~n9Z2WoJ*{d$}- za@Bv1M}J~d+(zI3Z^xtJy;=7+`^hKfzKp7R`0d~HcFy;YFD3_ncv}3+zdKK>EiGm; z{Rimb_vV)Zv15(91G#XOmB000b{}O#IV(hn!d}4$mR&tuCl!$ws&LvUqFk^1d3cR6 zCY5O|)fCg3E6SBfAAU=>@=QevcViT*AG2`p-J@+ww=s$5$LbvEt1SdMsdsfBx)!%) z57DJ^XV{nU+<5OsE2fj>g+ZDsF zpv;7yt~#(%DC+`9W6hFgqQj5v}m>%a>l zv^z?y|D?fE9vCPqvdD8DUHtE-c|0bQ?fz^#$`p5?xpht7U(8za@KT9^G8&fAqud=z z*r)hjxM7rp!V7Zq2ns}?U$?YbTJ@MAxHR&*b%e^HSZ^LGie#`;XaU|f)3pvIbmv~w z!)a2YKD6#z%d^|#emuW4E@hujoOkf1Vouof}wA6JS{cWn?WPOHBkKSy^w)-)eH*7+ZJ9QX3N+zX@yB=I+#r%F zw#;x1+e}Do9KP=78}Q03tHh>Z*01fRyLZcU zn7BIjacF+C9sQ@fzjVLF=D2YRWPIbxK%RG5sYZjh{u;CaUNby2ryO#h$ZLAHpqSBMpOe zMV`Yr=*5&U!bH>!pJto z8F>_)TU}iDyO`1AK+$7CP(hZG{(2c<$otAchpo)}MIFoPW(znp(S~1Iwfz*r*2Y>VZ@6mHWC}q z9>4px45>P0eubjs)R4KeO`N zz=@m=?=IfF_LXr5bnfCz5Cvxv@gCyeGQ0q@=A?L(U>mYr;m4Yx;WZ&TG>&V=-= z(uE8S7~!)VH#<+@_Wi`DX}g;A7UURAoEqsdLWJdRJi>VPhA^6bugLZ{P7BeHakuy0 z9)3o~2qpn*K00P>BAY|a{!WC79uw~gis@e-M`UR!PYbR6MB8d+_rL=SElGQMtI;I< zWQ1tzo!LfXl3{|HveMn&ZWlX|U{2DEctS88^ZM|-G<+%B8DC!w88TIzb-Jv1MtgP%WzB4-2`1_r6FFMzS%@k!Y#;0B=oS<6696gP3SaRXxVpYydF9()a zUMDs~o}bv@%@=&%+1I(Se$VS?A+ML+So!C3!@EZ*-|NaXmeX?^ogVwK?3YKsDf&>( zdYnZ&dLlaI<)^prieE_%ch_2uKWttlduH^phaE6>Nz9x_ll!K2?64|0oOb%LpYy~a zfc;RXrC(m)<5uoDPwHQwA$m;LQ*hI~{T#*nWJhhzol$4z1>Mz&>{GX9=Zemlqz~zf zk6ZTICE`=d=)uoS8|o7F>Ic=Ug&bAn`G3A{G7V7AR{QUM8&CE-dgS~nHE?)4m z4Uo~d55L3omV=h%vTu&xd+???A58Ml7^;@)PdvBj#Q#Cty+_5^{(r+i&hwmR(`=e% zrkeKCeo8WJRFaxDl7vA>!XPAJB!uEP+i1#e5Jtk3P@#rG=weDpT#S7PV{;Lg%QXmz z%zb?C-|t@Q{^P#?c%Jn<%d(bb`NPbb<~%m9&-cjkzoz$?k&86eEloKN$m}i_*SUIP?h^w~R109+A?5?`EiVCz z7BPg9LUB#U4|iqO5q4j(y_!S}*)H_pi}#SJ-M=v(y!QsQnmu`PbfDu#L01>5Anz*8 zpBdQbGPsH)a|0?Hw?oI|eR<+=^EnWm0UJ87q1hwtlC=j7#gVxfqX5+xh|#PuU4li- zxxz`t&f%9F<&Y{n=sH^fazNQ_5}j+m{aGv$kdZg`cwle^`qX!!iA0jw<+AxlF(rNv zkiZ#@;7lhE<$Rz(V^py6EYJd7V|1PXe;WaZ4*59{0Kk*meYCYg3&G*hfCrIEgZsi( z*Kl*K&5^XGx7i7=+VqTQe}`i8yzN6_N)@ov$5F(mPEQOg=f+tGSrcB;%#7g8HH;~O zGzl4#(qN}xK6)`a<`|YWaRfUZP47wXuB~9#I8*xK?B$0Re?foK_(Kn@`qWI-Rr^p2 z3-KvFBs2VDg!*Q7Gm7}fa5`Am=fpMmnWF-tt|P6Fprh>Kc#7N6iB5dk#hhP!o-CqU z2F!DSPzyqS6~`s29m^x^UeavzS58)7Gh>^k)?(D{=rs=ql6Z<9aJ66^Niv&lEfpJS zlj7ILCd52~G2d5RoWz8xEC9Fx(%Mq1@HU=$&wp+vTIB& z>8OwUI}Eb>+SabM;>$JG{ljhOVtQc}TX>Qw#4M7>lIajv|9Sf5jjpEgETML(J4Wy3 zXC?jNAV-@}jHf^HZTm>~{!Y+!aMq$hv&v-_S?-%B!MC|%)+HZ0o2}(TNDU>~$u&2& zHCgkDKo>aQ8c$`fV`b~l4l;rHI8s> z#<&I=OF`Pm;Q2!AEaS4tGpxnqglljh#uME&1zvGX4rHo#k608KG;${s)BzQFEG-5t zI|5cY2K(?l2hNw~0X*NI98ma!6ak*&7@RXj;_w`J|Com`hQi)X7J43k|*|6?lI zQFIoJ8$LzuXvItf?hdCYk}1sv+~aHGASN9D=)vM^kQqNVeJmKa)~a#gi1ClC;Wn$d zqo+@Y3eL6C8fo$!m7^G_hfeM z+cA10eS~K1aMPZ@1tBHPI~&iWtR7KRVqLT%RJD^{^3+Oc^=SLPgoI7A)q=pb>@?eF|7|-eNSQ@O8BV9am~w%=t(mQE zE9#h9q7iDzN(Q)^x6`s~dOkh*>L2j^TC3*2z+z^1L*PcwFpQ#Xh}cKEu-blK0=8V8 zr5tAbC^oGqAu}GKp?6@X1#F?0e-MkQtLAh;3k_t~>|&=sThDEB8K6;h_X%!{g$T3n zNO^3frO}-&yWrS5Yijy+#~N$4?0nl8lKRxGuM*AdY{{r3r#&sEa$|e~p4xG3Y0}f2 zJ_vTkUbAP~8{L>S(KLu%S-WeT53n=Xb5j7%?E zI&e^2FoMp!$LBx%6Bl%7#>+n@Jzng@>8mN|+`civp3Zu4;;aalNGz+c?@Y7lG^<sj_HFFqh)$1BTZkHfz9pI^5B;mtZryk1m=v5kAIC18Je z_sFL{X34d;Wla-5KmF{_3mTwVALO%p(q=fkY0BGqY()THk6EaJn~Ot%0;G)(nAQt7Zo+J8 zYWA;2F@hLZ4FB$(@t6H;AcyDMG+}|;9Z=gN2^Z&@c zK7Vx;S(*>+G>)yE$6L3Ya!dzjf0p8B(GsI)OzF@&o679;q)(a7`~5phE;e`#r1TuS zEFxWhfVZbGd#e*R8t|!^G}#Aj9d7BHUq@QPsM-5N64{Ff0A{HV%_*tSB|^3Y*vV1p z>P}9253M!)qB@Lx<>9kC*dzO*uQlilWG} zC8>#L&-5^{@xyLdG3%Jq$`+l2ce{2B-?`yL^PlHOq)ccQUJWtawkdqooOg3s^15kG z|1NVjEfZN}xj1LJ4#{$h%yJ)}`YiF*EbjwZJ`GueE@t`O${PGU%kSUM z$G&{t*Ox5W%J836YI6K{d*GQ8I6~oGJzSk<{&Ck>wl?bWm@fm`FT21l$sHJ832ec! z!;Z^$$v0YwEB|b@vrUegV%57VREvIe*Ddo=JOQn9ddpP%2o13Kc#5qV=C;P%enHs& z<@FZHBu&5RYe{WPQ})gt@UtJVn}=A6_cKFR6n<6gbhOJFxx3uXgRZz(opWyGBxxo= zZrGUzl*+|CH<0n~j+ZB<1<`C0oJp%tBhir^zKSvX2Ie3?jMn{T z$^(44ZCM_stHWe=Rewg9Z=6tjy6#T$i;t+m;l1^Wkk)BqQ?LBYFt_h;X3TG*)}RM1 z7I#914_a=ruH319d{g0^ZGCh?KpgC?-8J?Z=AegGwK@Hq&}~yo8eCxeA-KPrv{Oc* zFG7w8Xx4lSU!Qe$l$S6`+g+DpzS;>O`u2HLDoS@c@tC?DhS?ubSon7nZo$)Ifvk=4jBF5=HC?%$QE)57g zZ+jpU=w_~J)BiZQk8$NHd0^h>?oNy&+z~zqy!8g#O4~jiD`6+YqpLpOS=)Bneu!lc zoNCi2BZSZQYHCo2me&z+W!AH@SKn+T=PR_BjT95#LJw*vfTS=Ka12lDUNY`){Jby= zqoCr)crt4${A=!to$1#(@up{tAKODrsuk<^rLW&ir~kLL#(*zca{>(gg8%sg063nA zCi+m={{NhaV1P*Q_CI0!(b2I;Mk98OtTa;Ch&&@MjW9Km(a2Nl^|ug|M(i4aYecFM zi$=B@d2J-Jk-0_|8~JPGvQb<=V$_IoBVLU#HNx5mO(UR<_%?Ff2xudVjaWC5*T`-o zk&TcwlG=!SBZ7^rH*(pCawB|=3^;<=$X_GGjm$OT;mCkrxzdjCHDch%j3dXLo~Dq7 zO1Eg!+B$Baoc8TX)tXMRPdGQ$HwoqxB4T{HUUPGQ#cSiHLJ@4PZ>rHY)s@$*T&JXP z=v0nS|G2BY{@C^^O-sAJZog{W%w)y7G)=YIK_IVdZ&vRwRHG#QT*Zg?T^H(ah(+$> zcv5wy3gK&&TI~}bo)8*(a(_-sM@vtC4`R+AZz^L$lXUxgKGrlL5UtEDM5Ad4bW4H~ zU4z17qZR7M5&uR%Hdxeyf!sH3TtE&)#kD=%dC3i>Wfb^aIUar0?8!-SX{)ypbCtx}`9V#b@}|h@@w< zFA4_~eg-2RN3#f-U#Me#ilLe@66LZ_bJ}0r()^67iPB(fuH6c;4tw!DqIe*y#wbHC z$L9=^||Tk znacd4^#KXpN$Jb6uQZcPEHk*C&pUp4a#y@%G@j2Hk|aU7@HNsH(0}Y|ccguns+EQh zmB%o@Pwq;Jw1Uzo{AatgfF4w%LDesX5Uff5jIENs*kUd`tB)8adWch; zYD86KnTMOkW3Da#N$^*K=aEBuq|!yhQw)z*P(4&pRDPj8pW@W<=uMSNkrZOdGxqs|BQ@LE?v@?9Qjb#7Fqt@q=?CP?$JqWnI5~)+ZO~1 zD4=`wdo906*H(9b;2fbLB?R2L`_SqMZC{k2@4LJ2PZAQz~!e+igf6a zW1v4#Mbdqeb@@_PrRbpaNvrjzYs{x&91o12dWrB*8zIXpQRCVfy0(x{V=HfvSuV{o zg2ptIeYx%UA}!i%#9eMH(=mNa)S;3Q4ioQhpc-{7&!o*kD}(<*86ehB9!$4%ki7a+ z^6pD3gF@FuQ~Zq!zCJ7(ENNrqo-s-C4|`lfFxyw8ieV4!mg4w>7mjxGGWmrMpE}hx zKVVp}6s^EHUW1O-i#glI2GT(R7T`M$BgF08s3TQZw{%6)#OQFvJzlzi=8`1M$I7m6 z2^kk4LiG%mLPF-Pq&qfFc#peH&>?0f*$H?D4;pvQgSn-0EGSu zU&NR`PUKd!s0Ib*kZdtZ5IH6tMtP)T*L<KrR;IjyZer zIU9gkDxkS@fmyN&x0PukipySMzG#<_E;mC5b9jn2p9*wke4u+P;|`^#N--i{CLX_2 z$gf^P;q{GTCWs)vOpaUAkla3Mn{$EDTpw3*ups!CHBke)grL53l&PIV7`%Gvq&uy(P5 zAS62c55+8 zq^|dpyh0JBU$S^yklo|GWr_L3=o^1_W(@8$B__@}{jdn-tR_=vN8 zycCaCD{X^$`*-xy!>7*Ygc*}v}GqEDki)mTYB_lOkZr5i5z?eiTxx=VE64rDn15JfY%{|trfnM2{GASp&w zZ#kp=M~*`gAwU>6*$7cpbERF+Hg=E-vv1by?ELt6zZtyz>Aq&Pt>`Z^>LC)BYp|!E zb>l~VvDox$E^ZFSQD$6+7n8$>Yg`l|@=bnp-Rb~6`Gu6yc*zIM0u;FD!eMHr zi7}4(o<*WovM@iJ!-M_6ss(2IAG}sYJkTlG$z8v*HSa+VhVczwDNoO}Y*X7eNZV zi`mGX_e^U>lh>M$fig$~Tq4q3htBcIf0o?wZNH?!Y>YjT=5TSL{fdm-AH`Uf!vEoZ z9Tgb+BeNv`%sH(4OAJZY%$*VTqL~pqRqHwwEG8ZZ@2Q`s`g^*8q*u%Ff5I4dkL;83 zsx=hH&{o=G<#K!GYrTEL7u#9^c6%xJ@H~*%UUr$?vNQtaT04Q*U zH8I4%GY2j{(Y7Aw+h4T6990$zFdH-=!(HnS=P!>A@sO^j^&wqE_-etiDz@`h|S~%m$BtgJ#%vXU0YlrZq;MRuV3lkSC4}czA!d(HUBoWr4d|VE^ zxY(*?gmm<%dA$~Y$KYN+mW<>PUX0OhMqDHU)*^tnj(D@no|}c|e6kbEcTag>F<1`} zXc|E-7l{acFyRc*d_VBeuiArw5bcVJ(?iN^x3NBBwnBgio`Zz&Fn|z90Ih|$931!L z_CuV*ofYhljov-VLW|MMh(HzJTQ|&Gw2FdZ?tkIVD!;*+m=iXcBVPo2>&r1M_>zw^ z4SR|hLT6}WuaOReIK^x}0m8hE8An!!2bi?@h*co#C2&(M{_+(YtXbb2%k?y-CI(yn zSvlIm074-F@0Hy?WMk1-etreF)hfO zK9*Z^NW>4cJz=Jygn2nauzT1X?js8z+7V&|1{>l?O<+l7>W9lIo<7-YPNaATt@}Of z-~hUgmt!bG-`;TG?5MdMQ1#^Y?$KfL?fhWX!5Q_3W_Sx`1qY?lR~}4CiESyG$dX`N z9>~end`t(xkt#vwgz7IP=Ut+bs}HxCfuX=Hwkc`&gUL(m{FZ0ED4DWpz;SNZeoC8ke34c7SiA(0q;=_p=A5QD{+I> zxEI6L4`6%)@PpXq6S${jtkI5;1OP7s){)M)cra2uX|%+MdkrOo(gtt+@#Ij9x(f_4 zGz>EV?5B+If`BF=c=9>u<8b3}L)R&cCPIS@2|rF^J3d=XYL65tLLZ)9f~FR%<>CH% z@b^{R&*(p8FJ?`}?c>}zW-g$3GDil&v?J<20ZWZt2mow-texg$Fp6RZ_}CxWr)v@_ z{FnG=DctRe`Io@JC}Knu*jI*483U?E5$BtohKhDrsxTU`4wmnpU9ylWM=Q$pk!x_1 z9JAA7vXf2j3OrD9HdI^c1hX6ri7W|$&i3f4h#_dskBd2Ju_1DF-)!A~&RLQL=yzA> zrT}+z@fZ@}AjPd@ctHu~aSdcVaJ%;UVE-dP=<#5Uy4Umtm>y?j&EFu_=eVhe`@Ohr z>^$0n(Yz4u{nx0{33ouxY~y@KVC`p|J4lL|aY5~5VuP>-~nbL#;<{-K3L2VOmJGl#f~0uPm( zW$wk64O+Y7EgpZi-bE+rH-cazurRK&Ht?6aYzSV4^<{5%M4tXK2-f1xQtZ?h{B%4% z?ojS=^V&;yM0Z~%j&LPtGGa*~K5a#!t^E9s93U~^!A5*QHTdubCr1(RP~neP5iz-# z6Bi8OVj~+JPg306^Z+K!a5E{fTO06x0~XiiAyJIkvP;Ac$Ke5bEMgmR_MmTPHLx<`!M4+Z9P^T-Tg!+6P5jc<4$)zY z9XBvE7#bj-bEbNdH6SV;SnSWnBFrQEmSZbz!Pf8UwDwSCYR3zjs=QnSw=o_QQ_#zKPc$yw|d9dI)!$xC$>a?u*6DBp*T^u|nMxS&m(FbM%GSfE*9e+!3J7N63Aq=4fg<3_Ad+k z_O@cxan}uPw{|~$&~+qrO|TcQ*orXDyK$=Alk5BZnrL@vP*Xx`^VgJ?5n&B4)cahG$~pP-P1#i1hN!w-KaP_?+oCThptfKLksi!PO#gCGs& ztnm)g3haq2el>AGFg4g8|Ji@&;~zspWbyhpn5)r-tVF{tK{Z&s>@#oaydc?e^}#Iu z{^LgvAM$Q^Q48;`?7i<0xoJ_u?An)Yq7an9^w^TF#&mpdM~%0ebb`^JKs&jqUQ_=~ zLo1p|!4twK7F%7uiv={JMH(S7mcN|-)?*_0JLRT}$>1j8&UNXvpet^9`0y-6%Y+&t zsKar$W#v+*%4I{}1{l`|0s`dDW=Nc|CB!YJF8?j~T+@O=7XCd5s7cZOD(w469F1~a z5x#T#WEZ3x5nM@lC~<)XJHni*PTvwvfD<7z%;nc#Ox-b5hwt&lR{pqVqsP8on&$!u z+g^(yI;?)`I1Bl#h2soX6Tqv+i#^@p>MC!bcTd>(;j4YSt#&V{aXDE?^uF5cE1!$P z#W;gq+>N+cantc-;V1{pT<`Y!u*I`_r`6`XAzBNrbhm!)aaWPkP9gRw=3g&EaFZ{1 zvwY?08~+M*_{|;bX%G--{j(6oI87iJCQSDL57pv#e}kqgVB5Rvj@U%5C_l(zbN=2c zTJgt+?sgOdw#02hWL=K^9AaMS`$Uqsk`AoD&25;ua>rG0x=&xRdAP4?)KPaL#Q4dn z(r&v8VQ*n$Z!sGG_=@*?=*K2}W;q&SNh}tFA>iuRd$&*C+qtpY!bTgpu?ckUZX71x z`!fcNDh*%mhV9=*v^=x)(QNQmxU!8w^m@!m^6%1}(PPh&^@@ognneByTg z)GrEMWD}eHYENsq8%PMPeC4#v`x!5=yx8jXJ$-BP_j5C1D^G!ZF;|hPN__uB_ITz< z|4%Nn-9<9M&;q6k9TUn*d|u96YZYuIv;G+L`{IDW<*;By?P&Spm;$ru^)AyB8XP^e zvy<DQZnKA9e zh6DC?i3`sWNlH1D@5+sW1WLXyJo~%~ZN`W75X?+< z@2Bdl`4C3wmNih3l4ZvEsssT9_}$*}L7nP@##U`p)A@DnWo2%U@UR zu)I28MUG2h9#=yatpBzRQmKi3w4!0}KF|mgdz^j&W}RecqzIF`v=oZD6{C`Qvp{-n zeWp%2{(DAf6lKh)1S!V#>3K_1{q9APAEbJh^AktB989sYmAVvCB+A*q#zzW^IGSTt z)$7K2d@W!{ODYSkffUQK8-fL$_j{3}{jQ8yz^R296Y&tmbe5)xk*_HF;~a4ir>4+UW`eexbTT8VaZ{Vu})@ zJoxfZ!`lsU!rg~9`1jR&`VTK3cYr;PE~3zvbhKiEx&bdUkO~6QZFq{@1C}x%D&i$3 zzt~_Kr#w+qZF?0^ZBpXpg?u_)2W;s=Ifaf+J#Lz%#?RisO$8#7*I%0&74^Nu;Y(rS z_|}nyiJ_J7`oWtcFhOE6Ea3R1w-$~4x)AH&&e!{s6hnnwF1^=#c3;h-A`u2uAs6%M z?xA-m0-o+^p@V79Y-06wkMDm~EskC7+%t+X2W`ITfbdX35GI9<9Jza4ch zc=u!;$TCP7nN0-pjZvs^&4#s|unGm{e%i{!mvPQOHQg+;Rwa-a7Bf}qt?o_e?8$)5 z<|oXZykd$#n@#X?qC8_jfv}5B1u86k%&^BFN9w3cpX^~Nv;h_^!Ke2hTRiRybA&Cp ze(iixU=X>tSg>HvCseu1$5PBZ78`O%u30(S4Wjf0XQrR9Bo);H5l5SWN@(C8u& z`=If_SKUgc9GYjQPipqwLQ93tzeKMW6Fp9Zy98&U0z-;aihY|Rh%(b{+d5Fplo+=@ zSRr;9w{I?glCgVzq4gzZ&-+me8*%FnL&izUlgzaXo>)r&)l0f)>5L$Nb;-&CuJm}l zwIwJmP-8NJ*zbq8iZ3Gh5&^J`5|XXiV&*tJlS8*7Y4JO;0P(56C^ER&Q-k|t-A-D# z15EYOgR{2eeZM}O+G2R<-Ls2WXD8h+qL^JA$*IV;%je}vaV%MSCxLqslr2p$AseiI zoWHI~3MhgUy4C>-)N;!H0_hg9jmJOB3@TGU1m?-MI7pR)2^m<6jSA04$^1lD5`*_U zY~SQXxP_t_yW)5%ul=UkPkk{nd{m_9E3sv$nv5!(QLyd%@B~?bjmk$yQjFtWm=dWu z{WoNUg0&28*|k}og6zLG>@>Mbc5l7Xu>RdaDkbO3#dVGGhp!(E{ZKb{vGvLoJuNr> zj(+kbs`PGegm?Sj169*2+=W5S-)m>Fr=7pQvu*Eh6t*z+h<*1)e!hc)VOiF#e*MQ4 zy?@Xae@rvYy4832ThTk#%pJSsPtP7(QTeAM+jLv=U%ko&KFd*ttUQ62be%C;wEqJ=h=Tl@C%e!Tha)SDbKA~sP)>}JpU z$3Fh~oSz@Z0l`&@P5;ak34SJ&U&^J(tIVhMSC!XMmZ%=y~+N`EB}p6%A{-1vBS1M@;<>*jal zneLu*3~u=GF(lSeePM2hgGk`?bIXfnbzTiL*S4-xW0I7L^+If`?ZqmUjZF>N9RTgr z5a=TWUD1xVpr;?+D<9_hD|*E_XfhW%;2w&x+9vq&Kw2j`{TAzxj^>=y#GnNK5-8Xx-h!-=E)ttFwo}>_J+}I z(nStv<7Vx(F^_GbptU zzSm)YcVY?AnET&#(in2a#yUz4@ctZ%i$-~zt-8LAv{hpi!zj&0NEbuNju;0aW*Rc_ z6yCFMT|B1vaR|tPa-w5&?Fyl0W{Gre)9Ih&mjF^NcF}YRyl}^!_#dd zRy7cfM;0qUr zk9jl^M9hw#VSZzYIsD!iM+iZXzOxM^b`w;5w80NxB6 zI|pxl3~a@n>%~=bVj&IQ;w3}-^cY)k6IWmQ6;wkrg8Ej^Lp~zen4_G&7)c7|eeIBi z5_>_oBjx9#B{2L+OLA#Dt(LAZuz06+gAWZiO8w)T+Qs9%jkCfXPI*_NFbl^JK(T)YX-99&G!sG;{ zrTD&g060Dkazo+l_ns6q&NP>ozQ`?N0v+hDp#LWaTwPj9G9eV|ps6huW6gmmH*?}# zSjvKyZS4+pQlL1zE(d#?GbQ|>s3BojW@_+DAzbNGMe8IphS9Oh$FZ9DJb4>iW)WUT z{>ZNpM=5#Y20|(IDTC$^j$as0buWFl(N5ROGjtc5!Tqsp@;P2{sPT~iWsK7?#U(ah zx19~0=n`_>Be1Y?*K<*`rHF2`7wch8U->2CM$2PLdR<=VbgjqPXRU{yy?DH?MtXE7 z@AOc}mU|p!Pk*j*+JEg@52oQk_{8^&v*kszngdOncd*3=Hu_`zJN7>oPydmeJU7q$ z`K2&5He$2nVXU6-aNyUIjH>E<{2AnY`T^|eZHLWU`6S@ zOQ-Jz&U_lP`>&xFo^NcisF+DB+Vl5}-JI;*9~O`JcVMQGJ?m4E<=Z0qqbD;r$5Wc<~hvtXfq^-F*Cq_fK$GQ^FS*4y?;){`l40J1W|^ z!)NY9y14xIMtRMd+4T4E4SS|Vmyalk`Ng^CBG}YCo_p#9vuno5`0*oCW>ztV5t0Wu znzK;a*lw|*qbt*4HVu3BKIwXNJ$Lt$y|b(Kyg(<%m&?hW`)2?1Rn6}h`q*IQcxeeZg@`+$oJR?LH^HOxa4&~I?CO_0$j#r<0=?a&q&RN-M>_8U1>p z+{;3QUGl$5lf~1}oo#<@?cb20kIK^zW+k}Ozl?tIxH>hCv`*eW#XfjJ)szMY%YtOv ziLb!xl;g90p`@|<<~rU=`>T^LG=BJX%vL(art1_He|)kF)|PFxlU~O|$;Qnt4r*0R z(5;@cBl}vQoyfiB*KsQy$)f{n=`B+N0~7^8zmt~)(g{vG&(FV!-5YHy|8mS+0-N)X zF*W-^C?L(QTXbL#fB5<|jkk~;>-{|JK>~)$2cvlK91>8Q$-=*f?fC#&mwSmBqw-`v z;U%+HTQp!%>T|gkiv85$3nQiix)n zT^F`Ey-c5e+&c8my{LN=zd~V7q_tA$cfua8aXK|p$u@$Bg=7d`zr+gs;Rive-P-f6 z762q<0IJgNU>qrUU;HNXnby$2qiU^Ry+i9$r_1k=6k!yUF*=Ssy@urt{CQ&CCA#GA zS?wom6%8sEVB&}on87x0;xC9G9Ylwx&l_ozjE#IzNpFUE2A>t3FR>c6m2mu4Ol!w= zvZeDGJr5ckNGk(86iChq0`xIpMcVQG?Djvmkc}_)P!5;!z~o)$tH-iV*z0|psv4}d zr|s2{uC--GPv!{sKHKKchv|)P?r$r{2oZFmJotgu+v)WYwQyxAYSFPz+pK;zQSdv3 zm-x&3tIC5?gNYKrR+pedzTQ@|TsCC;Qq^FXKgkK@9{c25=rq+vks0lxvsZy>ofox| z%fqK1T({B}B$MB!Ve&no-#*x)S#Kux+?C?Y=-F2kNRCSZd=)%W3vN$ZV$1zv%1b93 zT*^ZI0jK%#IzQkw7OvZZF~D{jcj>?njZF?jT|db_UkoLD8mx_??gPo8rQft6(|7XY zw{G(E%Tv~$^foX;w_|-!5bDsIXTH^vZoX;3%jSsfZd>;MNIm=abb4s{A-5Izs)l^S z$-GN@B3|rq|FEO`S}5;qgyp?r+rFASI%ys6tS?wP!Qz5h*Zv0PB;K}$i{w&!_pgRQ zS@_tMZx%^!&b{z;QRGYeEqOnlo+xO!_V?cE+T90+UBKOK>VZ@-famJoRplmPEPPVMm~?uD_1vgdaAhc>1IE=-_0gXVFd&C9){ii za^cD5Qfuv&#H!C&wmd!CB{L?Ne{L zts6^iwiPHL{ooc_LW8Yj=)0{Y1zMxtcvYw$_E(G0BE8-^{a_t)3!u=g{|{mNj4YAp z#q$eRmiULC#raVrZ-BZ|?fRK8t*+>Ip8Ui?D;mhyV>&l zSQH~bB=cOx(G7+<0JFBTRw!lCrE`lS z$9Bt4h=ShV8^h-s4Q-wbd)zh66P971t&Z`{E!QQc^l4jhjIT?W{iVx+A(5Zo= z;)Z@i%lH3WmvaC8IAFLyvvj@3tsT;SAC-Y zYy~(Kw^KfjcL_D(>lz;wwXz~@`*uXoQj{r7ELHmgP&dh+7P*x6Js9s%RrEmVT^G8e zkXo58|KBpkd5E?@`)}HgEIT6U2$3U$j_f!R?Z~ntWq##KJA&p&r6c=}usee9NVg-B zjyOA_?TD}=2al*a^6Ln-BjAoKJ2LBU-n>R;9Z`5>;t@|r6dr+igxZm4N7>+a?%ca@ zp#|A@B;Ao*M_?Txc!b&!tVg^aS$SmK5p74X9&vdj+7X~f%pIY2MCbnt!6Oa7&I!gY z5uR-NAWKb(g_%4deH^N_)f_{);&&c&WUWyiKBjJ}Yie%NMaTLsNiW<|s@7g;>i^c= z(boL>O`ljIiH?`HoYVVQ3v^A*?g6n$!M^Jfb6?);?SI`9J5$wiIwz+?40F<(b-J|r zO)uLF<%KE%hhAUaUYG;*9g^(y^!oCi51m>cKhep$8y~9mA5KGAQljxqmwZXuw@$;Z z^1@x3me(H(5vCUk_*lma!zUEJKwvC9`l-;TmPG zFf2VeRrc{?i&KC&C^r1gjjpo7V~4d`ce<$OWmmVp+t*c8U(+OD2{ROOCxIa6O-)Yy z>u{-z!x0A0ObQQ{#RX?ZL~v2{fuE=D&c}O)cU5c8-AG%LeY34=S6!K20z1n);!yv? zM{T+?y}7BvZ^^xr`VLeGaJcD4TySjny^fnVjOArDxw%TUMt!GEceth*!TP51>Y!k8 z*~%myh3n(W>Uf}+r^D!AafH~ntS}p;JN%buN3Yk>tjuY%JA|O%-xv#;`D^`x$^s53jq!RgwX$fVBh#E7e?lHr z!XN1OyGJvaQHlPHOubavwDg=)W_8zW*Q=20rBEhoXJ3gZ?x$ud{G**YSkQjcvuC|; zE?WBko?&YKMC$1HPr9(f@Hl_$BeNd~@s;xD5fpp7^tU%7(=R#V?KEGn3GP$WnoVmbSgk@8e%{Z;+pYJ`jmhT7+^Ta|K;QZ_{U6PuIN$L4? zyh*Pg`;%pi#)fn$qUkl(%xw{DhjX{+d;XN~pfEeQ)0y@vV{43XgF%;Se`DTLHNV8O_C;V6nj+u(SM^(E)jtx{sPH9x|uJGVjVfFTUhrq z*w=*~=F2UJ;KrXV032mk3IodtX()6a{_A)|h{Ps8Vjx_PGy8QCF-M~G4Xp0Z(W44o z3fJD;s~g%+a9Jwoz42t3*(Gz6MPO$8~w9V+mIR<6%~@pi#XKHXNS&&Rw_j2N2@rN`dyZrQ6ElFUN|WUeyD%b%{2 zn_`?WMt-mZ+F$rcq>)+egSHNnEW)wJ6x%i%ZZ0tUyj_%{!1HOzfGT3Wi0qjUs8TS( ztzvAksKb#frV-Lj6}2Y12(!#Km<sq7WpyA?^DlXAu_ z(gQf-WVq$87_f^EcK7y)>!pUZzVSM9mL{L6Kq(*{7%dx#_;)%G)Qn1y7ZQI=*glRQ z7DWT7fc&1^IV2~_EYz6qAb}JflH%za3x*1s`RcKyGp8Nd+gm_&l()VU>bE}n#|_kN zlA>1UPTL*=bCr_FSPq##vt-b)9zf&Sk~C>OF37pnH zgNYJI>thguvs$Sc20vCBpoVc_MOi*(_rXjv#nrrhrV)U98Z!%Rt9c6goo2wj`lRTd z0a%IU;C^d*APVBP2XDZMCmPJH4$^}RfR37@=hdn6BvP!}jbzDp3@uv*u&|scMw+Bx zBhPBr&|1iJhC}PqM>)II%m%!92acA1J(fQ9Xv)LR2mfzq`|Y~s%5l~{PAwlM`HpF2 ze>)gr?;w9^xMZVw{L(5VDlN1C-fzITE0-BXz+eei8rKDC{C%BB5UL?}YfIY-W& z@L4qV+nwEv%^G~5hh}H540vch_0%7i|4sjge}%i>8V`kFTv+Ji?}juguV?H+uOMj8 z4apG1fG4O=t5gf|K^=56g*-p^lXmpbyRGvnCoRm?hSo)&lbJIw4SK{&qu7N`T)Xs6 zK1-uYM9)OHV~n;7bfohn}@~N z{_)@Ed0n$lHPh78G;PMUk%IAD;v=%pMD~Z6m z018{|H75+1;v(d%&;!df;_)ywNk$t_uOM6@JMBGDz?vPriu)tgA>_0y7%*% zpR*P)rlTDg-N{J-m4XS(8$qfFOn^cuMbkk@F9#&HLyKmLzTmWu zJ`qsD26Blk1O2#Aohd}$QL1e`lbY5M+P6N1r zpWADGfwpo5#K~uvZ4m*aq;C8W&|$5+@nGbVJ!8MD6^*1ic(>p-clV= zJEDDg+r(W{9=Bp01;dyG7OcVVtOULV&`09qWB_G50{14(av;ImJ6IqAay}!SFuu78 zw@Jd8d|OKma8zI{4RA$8lGgKQEwvD8pcA6r8jAdFzzG}7EwGAL=XdnfLDDfB0>+&KktL}ouD;zxy z&{3UrcBCLk2QDQ?cqyQ$H`PoHhAJ@o(};9jZ-2lRsknj^P*4P4)A7wEz?*>2jCX*g zA#_{~c4;2IqF~O#MBG~DoSM4Ar$2Y_YCsUV>9JV%IP?0tY#(aaP>LG-KZ`q9;l`KB zF_r=xn6t`6fd!LcPnZSJ04xdN6j2IwXt+Oxa8sP8wq3(q=S*cX_>;w!k%3^HqZ;x$ z3i4TLPd~elP~m3s!mWpSX1c|H%>yA6vR#h8ZJuS-i~U?`ao~P}t0s#r1NRftkgR?v ziAl&c`=UU3FoxFtVe(*$NZ5EkSW4hNz3}H3U`oLS+vfgMfT$fMOno*YeM2SKxEg!6 z^^i?LOA5P&TPs7X&!=2=1-h~!Jh$T>ty>!D@tp*5!Tf1WO-z?zdj){oEe;^DYN{^;M zH^qX%8r*4q`sQeCO6fY94Q@lC_aty{*(?twIPoR-w|oRc53KofS~}@;~`Y$Ni>*g@7NK25N-Ry-pGxg(67)`gGpoC8J0A-o83D;S>x4aA+@Y z`*Ki|HWRONyftyUe8SYOjf zqIupTbk<;JVTO5!aMsE|lW8;S9wc9Oo$nB>$X3m&xqEO&H)$xVe%d(FMkyQ~V<7|w zQNe^ri`}XiCzCJqTW+zDrD?^m(}yCmjtWye{63r!_BBR1w_oqc56tT7j&@?7^yViJ(Lrkvx zOX%!v0H$w_emgjQK$+*h0Qca}|K5!u7y7~rhn(dL&r9&K#v?94q8%4P^4=<2{Hk1H zBKL$0{;6F1V#pEq$rdyNaINE!BW4Wfi%wiWe#&F8gb@8i{{c$x#}9c-xxi^+%K8hz zu5p9Z=eSGOOH+wIX( zqK1PBe6R)~Y`KJ?jAcl3Qlm)8|CB0+b0varfKOsf?Iu?lkamT+_5yzrOA=-63I-ko zW+wyga=g+g!d>-P$!JI|#s8UuZ@!0F@I8y%!YpJ^eHAm+Lxu)ye>cPjAMQfoQp1U2 zmo@Ar_W?Qb{+|mdqAF7C%n)o59hAYuvhpw=J}y;6m?OKqe9er^ttJZUz*P{8j=zSX zcD)<^jz)4&Y<1oaKN90;mIac)Mh$u@KvLIQA6W`IE>1fbCj=#y8oas+zJ7PkN4MCU z7<=SveTdwhrlDy1G(L6ZWAtKw-DS4EM12+d_pbFsq}91(N7B!H6bMn`d@VNmG#o-* z8ymIBr#F@UiD#xMo>9J8oE;}t!k;gJM1f!GJG@eL>0khKA`Y{Sr#1=nJTZy22F3@2 zb%Qj(gp%DkFUe2BqO#M16n`-?u=-JBZNJ;Cv%zmZ$8s{Ub4e`~=Y~5ez{+D3ikO5= z%43qcnYqyG4lo~z8Zz*qG6&OM-ja08Lt(=|V-u(Z^eSkj2TPKig7dJzc$f9kHtFN| z*M~sgqadCVxPi;;Lui%8j{6J#_QloJn41AY-I|E>m97-}fx_;t!M(Lx#xFe!pr3&1Zv!B!!MH2On~8%U~@G0ATP4v?HSBdaR%qxbc^n zSD^1zg^Lb2Xds6Vmi1vSe69Bec<{xl{RNVZKk`IBwI(CA4I=nkk1=)76Qw|KY*(6X zfWE?eIS>@$Zf#y87e$ZEA9lYh2WuqEwLE_fN_{0HeZH1mk4belt`yvPbF8nte9JNm zn!Ll`WsK@R@9hSO>t(Ms-LUH0-Vx&-(5Aw>zI)w;o_B1po1EF)T~&Rfhun>LIQG~B z%_}HW0~@VF>ldNFGVMbkMkpTk(kHK3x_d^;tdz+-t!D8Y93uhTzy?w~} zkY_DrD`!kH8b$}cj1 zYEDz)!?d_5-|aAcvbj#YB!1%Q5DS`v^B}GG>0A`&iT32<0eYT?7JT~h-2X-VbC(Am zjY9r1p(N?XJHcQRdH0fyVm8>fEON15OUe*gs9&S?$Zm&n;fq$wmiOcL`0>5#PGQ5; zFGR2Ge;e}dS53(9#p?Q|#=V|;x%+jHWN&Rq)a#{hM9B|7MFRVqg)6!T_OM`N zOSf0gaWaTPGg}dzhJteOI1uyK*R2&?`HYpB13D!QTn1<>EeZtq);~u@xwi@JqNCRN zL-cm165$!u+pzbm@}*_^6@gwf!%n|dK`WyY9nZkl7avW~W@dcO z)7;%;>V4(tLXjMsn+~{7iyISw!`K|umU8Ejjr2b_q3~1EtJELo=1qd1UsQ*Qb(p^v zgYw20*EPN`&DR#fOsBrSO@OPxEzlZSwJvP!VgHvS9M^6AZuXXIsKcf$lV|{@p5vk) zL7Q^^%;8d?c^~MLG+6t7`eEEv0sRfwqqpXRS7!}*AU<1%DzLzUbHHBj>y`=(T zpe6qj>q)Cow$4Hg<%L&Uv%mza_&`0N>ClD;w>o1jNuT@-v6cYjnVxh|jb0Th@{nWp zy{lcP0C$ka33~PL4sY~EKR$>WK;LNN@;L*bgrQ6`wnJII-@W}+-=Ot}fq(eqlfJpX zCFUL*{_2wT0!J;+fgc>m_n$v^=2s4XARxG=_diESXLA1BnWuHUnqz7c)H$*)xn-@j ztN4G8@z$+BowhWTBo`K25gysBr3Xe_+d%yP9OLh6PPS0R!s&ac>vwu?ud`UJNYqMH zTyyL3X(CnU+ex)k&wP9lSF$krcv952Jc?wp&DnMavToe_=?zPdUnujOk`jI?W6r%- zkM93B8(q(NZZo=ilbSaO2d6&n>YLM6;yU)wj0d0QwpRo$dHwjo=Xv_d5nJ76KKwGj z^T?!=sZSn$UD#DO_n$+?nUB6LdVGH6f3KfB`o6@_xSls?*5m%AFRzykp7-?ekL5kL z4~{)N>&efR?;o65^5*H2fz`d;En5f8e)=o(%fEL|&U^Os_nQ8`SN|NI{p?T9uODCk zd-Lp>aUH-dl_a+EXw9IF9J}{qfm^b?Q5SHbCW1AvEq1@TNw6fB#gI|pf=BkdDszUq zG7nposG-a(6=d{9k4Q-#X4Rvk+xqDx>*+q!Z6B-nL`^=!>gPO1vy?=`$c8Tw5wRA* zB1t|&%xVN6jHIrc&rdYaak3~W&wf>dfzBii)XiGyPs4h9m!3hnmNc!Zz|2aYlv~(! z>1bt+Q=$$Dvx60dM!T4vK?U^5HAHmy>IG>uQ!BN?krmBXjLAvvf+}-jbHL#Ow^+rU zbwFpJi?&Pzx2s|Tk4h|M4TijRkxI_`bsn-xim%(Y^4>ZHqNYV(YzR8tVSV>{Q_z3- zXi{dC@L|gGt|U6&Mrxq*ztm}_E!^Ib#N>V%s%ly1!mm7Hm`ibOmT$D!Io43Y}<1HL~cC|$+)RLX@vCx z7LjY>qi)1G^97TRG3Q>;YiPr74E5RI#912Iv|vjK&dGjR(<*Y_{(kpo1;#MrO@&RbYHvQwIRv_eN^S`eP)z8C38P-oR(?pQ;?x><;?|QzOZ1;Lj zsxpaT#n5->v#nC$`kbE;-FZA#Il!#k^o7*(sr{hJNPYr}p%mcWMU+XR zGMZ6KU{YjfGZ@`e!g>O86Ok-SoyGlfTwwJe7x_sGZ-4IGwp3~D~KlP z@3%*QqeC$ei9WrFkZ$%6+Y_iM+P*s?U?iW4|D>lmmg_j_dYMqEpxg29a~3PETM;KQ zhc?nQK?6oCRbaL)5oYMQwTKpn|L&zw>LgG2(!lU!MI_}-LXJVXE{mBKVWQ;AIbTjO z{!EOxxC==N2L8(CiJF7cidP6IV6(-?GxOH?rY(ny+;9B$f9ID0E~CXoBUf}t~z%)M`y|h*t+L8 zE-cK~!P3#H*ULl~oHZo2fC$bBFe2MJptua+`(ND6l$3*ZoJ-{{XPtN$p`k+kWvZrI z1kFr4hvHs`JVL=3m}}GLrvs1r5>THEIdlEFp#t=7>XcEDA0>z4Qh%IRGZS@?cIP~% z>V+yD2a`deLDL-2Gs^@;JsEZY_jusUPPKr7(>ol@p zb^Ytg{kx&j{Ofk%P!&4>U3~TsyKay1u^dBQHVFpMOigaRpMq{ahzL z>6enOj7nGMv>P1H*;4G%BRDW9^g(j+p6F`Xe~U~Rc0H{uAb$p83CyeKPQBdn7zP5*dJ9i|$w#3r~g=Hr{P^2D_Z2UwF{p9?zI zGCev{z>b^3PdImHcJ<5Q7Qe$^-_!hawLEh3Gxs~hm5dvm#kry+ znb+f1>D*HLwTf3e;_YJdJ@czS{(WV4&$_JPHt4pSi}5a{afNIQaU&qZ{NA{``u;viz|0dSFpP`ezw&; zBtwDAUc7PB{W_brHJ5kQu#WAvxw}a?zLAx5{qnQjmp@Dh6TJLuU+}isk*7BF>%R6; zFK&kC*{E2u-J8n%leyPC5EDt{YCmpP_F!Ia~G4LQQbNnwwXZt%yy&80m-{NjqSSy|BQ>s zp}@`ae4YrL5Cs?|vf7k{_&EhnDRA zp$vunf+Ut@FytJg#HS+S>n~Q4K!cU?^oQ=*M01psjb<3=wMC$~S7RyS-I)})_}SK0 z4*8TSE1BA|24v={n15PHx-S%`sqonADw8%bfI@;JE;@?`t9(aOS2!HYj8O@rM>!s2 zA@tf_>dZhXFh7;JhGHpIRPjz+al@jhD6h2KbG(WsAHuEyY$Zjd1Llgo8^N)yOOLHf z^g>EF1dYGiCgaMF*iq~EOK^(#%N8M)B9LB&?P;;0NbLtuv{z747wQ=t*3YzIxf zj&#Hp!Bsab*b6Lu7A&CHNFi?k>>6mLrj{fFTX4boe2`dbDOOXVv|uF6W$9FSId!dp zWxI>ADFJhrg7|?z>kRjK9ZYcpeADgYSEXw09`P-UTG>&Ep4!TLnD6b1+Ggx+TqY2< zft6gi)E&M!ibjWH=!#>W+u@#eDa#4Zyg(%o```pbbf7 zm$I<(gr<$E!g@-i@Z+c}2m1pK-|f(KFT|f)87fT_WA+4iI*&8?+6j2&C9IypnQwi? z3QAO@D&XuHpm8llbwERPzLe$kR;45#Ym&qpZyv3?8M@6v3;7!;TtwL@OLBr$0#MB< zQi;1<&Mu%jJE?1>fZHRV&#p1srizJkG1HB~x^~;PNw!X)l$9)z9-z-+Df=9YDl#Ws z>ODs;-2id93S4yyilio=cXaXSaHdl(XH=bb6ssqC(A=U02OQJ6r8s}^(kkHJQEx6+ z+4Ai~(pW2!BIkOV;J{W5sy4vJBxoBu4h`oTld6W&RkNygty6$)pDJN+TiEZK%h89M zAKvUS8C)4ceJXK-IirNK_A5?eI-1i;+g=?(NXLG$Qe~w(%qVBwk=(vodx@WMBz6uQ z-Q+vsc&Bp&^-Bef;+ji#10!&qO4x9`MN`D2I<97KfS`f-St6EEuI~!%g8lLcYH$az zNNX?aEX;^d?JQFze~7i~FI2TnEohinDx*d}cj3mmu-YJvx_<7+HB}p&@=y=DMzdne zOel!yfks4mH>$!<2e|KonEZ%PZfmmvy}!EB8!A_*iqgibK*RW)3~E<%P09hlF9#x1 z6_E~`>!`{+Cv@0PeeN=J)Y$Z2)K0EV{X1eNZ3;iJTy=4Js0m=Ow!ip9WY~r>DECKe zM0gt4Ct4N%H^I@-IL6l>TibQa$`JfCtH@k^Jcm-<{Y}lExc~Co(MJC5 zz1|0G`;Gwfsu?VPf{A3mK(Oyc)=VS@!YN`XIWpG4VF7Dag=8s$P+GDJj=7AxFulJiwzvZO|_!+Oj5w` zhqFKZ+fcUm=B}Metl8 zHNS%?N*r_f)g9H%xUd{2UjGzp4LrYjoY>Hk_>*bIiR9Nn6jZZouq?PN;L7xEAyXMv zn{$F|9;AqvMYS$DH{&nDs`)DOhH6`>GfRCYc0qjn#+|epk3*q1Y%@?lfsEFB%vLKw zFEBd?T7?u`f4Y6{wh7gLQ!r5#cvEF!m_C(}h%2esycXl33Y97#0G&wfQl*zYf>C!Kv~ z(gtpI5(ypkRbg>Eq(f*jucq_WMux~|qXu+r9P)jlCrdHSR9dx(5ND;UIB673mT=#e zvaPu>x(*ETdw+*ampv{NwE-Y+cv`6v=uV8RN-x!p^`1nDDGJ%B=8f2!##waaFK8=r z-m?jnIidZsYU{U(doc*_KQb$ea?8?~#8S8W+KU##b8`S&-YK)3Fz8pp<*CO8@~IvC zea>~@;6&eo%hlE6cKo{qp3g6TRTup|Cy*KXCGBL6jTZODdv=mhpODU4JyT3CYw;*;MR!CRd|ic z_w(-JZI{ZzpwUXx8}$O*tX&p2qQQ=+Mqc*fgR0d{syEetw>w2qr@@g~rX>{W4+vmB z(X4W*V+232BQ9E$`_S7|Z>Pff@6MJymk4WsZ^dh**FMgwYp^opOhrh z!C2F*MU#FP#=H_PrZ2UmYF8Wpt41$Y2(>pBj!bDUsXLxr`uhMQ_9FUWS^slGuJmTn z92KJhP9MIRRUg7j)SO@1lqU)fYWFev7HwWrx^q*};=vcs|NG5)d;+dMpA+1~__v`b zmS|qI%iA{i1WQsRbtrY(^weB8s*$_o{&$Ytf!iFzqBOk^F8vG`lu*}l2nPsyxcPz== zxh}JOYi7m%%v~olcVEfe^H1j9XPNu{%iM3w)OYM%OBT84JwNodwUX;PhIm=+w}e5pLKWY^ZEkpkP4Nr zYNWCFHg=)?hyQbI%I8@7rT6qouI4c%<7?CUoURp%hb#*SzDhI2gvr4y$+m(GHUmFz zD{oghw{K*AZ>gRC+3nVz-xJGO+N~oPrVb|0l{(Tqwk<b)YL%4 zq&~82N|?C0cm8ztUxgO4Yj_34LgAO3ODZg%Bk&E?XcUnP`kwtvDB|z?eR07*Zs`4A zt)pj|yCtXTBMwAPFD}_4V#-V}_Ds_m3(n zPi1$?RAB?f+OY+WN)Q!p@o_oEu-L_#5{@@0FuEkTD3TkTsMX{zB9)D;`X-Y#|CHbtex%*Jr~$=M^_hPsy74`2DJY(Salx^w0yG$#gs&q&9ntRyK}XO#g3=KrkN9?k#J_y`62a<-hesrQad9!? z=Mg;r?%jLDy(5Gk5%q|BkBp2)lzVb=3Ig4c#vQTo2y{mPJObts43FS;gv}$$9WnNZ zen-qa0_G8ukBE8%(j(sf|BB-gijO#agv2B89`W;tmPaf-BI zM1+FJtrGP=?YR0S;{U0y2 z-D@sZQ(k_-X=(Xw?G1l*{7+>b7bZjOdTo<#%c+#KRT=yC)a0s*6JisuX`5fa);H{_ ze);reLa61n1`U$7*Vopw2+QaFFHi01xzMDIiBX2eN0)2ztM-&{(`XRLO^As4hFZkE zho&ax9@2DVP-djpu8rA6YtyCe6r$N{PPHSUxn^7GjF^eY)qbjBkCm8(wC{1LrJePU z&4>UiH_MvZhN6t3=-9+^b?G5ZZQ^7_(TbW~`5I(VS4@*PH0driXvJ1`UIEgNXSE3e zva?e+S(%cb{`k^~`utqAi(4>K$w!AqBiy~CO(qo+olVtQ?NUoSyAx;YC#Qx=rFQzR zuDJMs3r+gx@82hc#i!?H5K@<>4o%jnmkB--&z@@Udi~PQN`buUiWK>+J#FnDJCVHJ zkMQb{QL9!I<*%huP8B-^h5C8u0(^o)!zTKz>g>GrB`YKCz2SXmnC$&qLx1n%J=Hbx z*jVJON5KEG71jCa#Qy~Jxfw`ypOssbm75kPk983TC^MATbPb|a6BA~o6sT(p)akQQ z6wg2AN6Y1QWcu^x{j#8V50amyR5modS0pMt2oq%UM}l}{|3_~3q6OKf_B2bKTuyY< z7Z;bWO3m1{tyXt7qd2!Hz)xCRReN+t_4AJnN_DYETqyQ`RPX=S{EonQgvtZ(|FQA9 zY=(u$j5clM)k3~=+@9DHNmDjYkVa@5n_4y!Q5)?>ovLokwhjpBKS$6CIiCHJfKjIp z{k>Z_SOj{jXh^}H9?&JTIDGp+?C94~iB$z$%r&~SyjvG#vUU{GzW?OsnX=qnlx_Nm zrb26hrE=!YRSUydAU+L%7qrdh12goAJlLi)FfqB4+2A@LV=IJn4p=Ma2<2;TL+F$PGd#Pfj}&gho2Y| zx@@DE;IIg_6QG&;?XcSKlR2AhTQ*vqF;4MK`Id7f&**r531b6aA`X^G)@CKJ=1 zyzA+2lIs>PrItK<9%g}A5?3Q|Nj;B#qe442=eK#iW!|?Wkju1R(R-JjvzLrC^;ltu zpuZ24I>r9zy@TO_p@k%FqSQG=Vx96RI;);+q9Jd_v!c+T=B*6-Vk#GRB}j_vVMhr~ z9K1-9J0h|Lqz#|^K+lnQ5jvI!kj;h8=oX9lR4U1xCSBSlt^l6K}T{$ z0AO^pPBjHg+9}l}PcOw)+^mKK`N|80x4GPGejd{jo#JTLgd&Q==v3x1c7Jqk#C{PP zjB`40+N<%l`D(=9D~-K6c2KYa&hRScH?e(`+D1IK-W>n_ zH2b^p!}n)qf2TKw4Y2ad+J{+nS%-7uhMex8|23s5zGURSj12n6<^6iT@6U0wI~L9A z>=5+5&~a^25MM2B=0C|3dYY}ld=y1$6W?k>!wX|*{~Y!}-^gbl2SW83FMrKYs%|KT zcU^4X7(V!ScJHMBLcfge^UvenoWA7Fc=1FT#UYycSAkppprQbh%$HBP}J(sf|ew<%8yNDJu?Koc*dFs$eKsQT@&?+)GhzT6&bhq9WqI)j`W& zS9ATlTiJ3dx4fOg*@lr=!AlewR?uCV_3Yx*#&z#;%(P!O!bhE3lteB#gj;-@ z_Nxd22YG#wX^(WENJW!%=Gw}@NVZgmp6~(k^f-ECO7I6^^>@(4ET$5y;qgAXZ3?2uH=Lkcl-oyHW64B3ec%%bKX%ZK3GcoE0| zO0NIY2(8*RIFfR4VzfTAU`mbdNYiw0R4L;LhMii)VqFJ}2u$!c62qr-N)#xo=t5g58m*Z?->(mxXOdYH>*qeyscgvmtB zfu)zx=u$rsBIeoDi#*7XH*)Ow*wVM=QLtze0&H;ecnX&&?_CK&4Y8e{9rth=@h}-+ zqVtZ=za%6H$o=x41{;^=JAHzGfvEz7qFZ-D6=h9Pj+QkM+_({_;+~{?A82G`6?TXc z4IrosaFIHlqo*7*kGeB=I6;QjF-G%qCQGaiut@~Fy%Iq(ROJ0``Qr8>|1C(+P;}$O zvVE?i2>9n{>*Xiv1w$0G20r4D8{6o5dYTHJ zxqsHW27p9uu4Rb`IJBKUk>ZqVrptoqGvcZk2Gz_B6vHyjl(|3+Iqin_XE$5f0^Lns zwE+_kZ=@qv>uBo)!b%gA=uK&uY1SAc_yxY=ZLZ}BVm;o?%T+i3#^q~v`XI8^>4*_`Wg`VjY;Gl&k1nRgDH_;Tpn zujSh|@&2nmyOoyDQpRo=`grO1x|@Ih{+O}#kR*^~@fD~0)u+ii)d+U6=!~TsaFGa1AhkK%uyx0C!csW%CIYqfI$HZbS{%Yk6xa= z8ak3z0y%Dq|E~qMGzEVjfSD_#w7@u1;UF`T*&|u-IBy4j8DXy>M^<$I%wjZbpR340dfrRVUSTbeDrP1Lk0p69xjvGk+{E~ z6;C!|Q3)^Q?(9*oFm4d$aA<5>BgQwt+-TfiCPBvmOa6Ly4fLR*E-s5SlfxhqJcu*I>3m=4={N--}0faU@*z|7>qzZ9524F@T`OwL$&14&(znXXCMe&jz_W>>9WRuZI%ESP?h%g|B zi<6@WIUF!5VSp0+Ab}zfzfy^L^uqX3jJ9-^CyL0-8#LxCkM_dSSqJy`!yvs4H}(I# zOv!*F1<~M$r=I981Fu1358JHO%};me0|>Uyi$%n(`bM!g&RaU zl4}KPZ+n}`6A;tuO-{uhl+FGD&IIi!dys-2HPWuny%ppfy>(twcz=<|znKvh5Tf0Si9m=BJ*VJ53KolZlztCdJwgc%^x z&&m||{${ys{hnucp$h>H?&Jwc3=K{~L>Qt|hnrW%bwPKv*j|GfU)n2EaaaDD9{@L1 zV;fH8qpc0u!Q~7e8UguC$X84hR!s@(@nE+KU8{hD|6-Ibvxv_7)eCOUfdT!FG{Z_! zU8uF%{l0u*EkSBI8TJsukmkW6SpVvJ27ow<@ zFmV@eT3qn_pPq?*hXRZZmWy32)FbE646{YP;?Y<0o|NUd)nQBBpt&Nc>pTDa$RUhV zB?1GmYYY5l5xn0G90SGPT z48ttuRU9@C2)qLv0QNb~;zt{paN2TJH*D~oUXW`$)YbV|kIM%Pwy9v^O3-{(Hf$>H zOn|PwLMvnJ2BxyEcA~|BX2st}(*^38P&3g<2|SW;VV023$Gi;%zZ5_~0)O`+AO|P| z^l}>{n?i7ap^}ipt|x=Lu`OM7QXEqFv z{J{(GIODD!nY_lrmp?On4Hhxl-$4!9>R{*dvr8o7mkrd9y9wWQW6u0-Si?D5G-S%h z&a^r^`Ry@U_qH(GK!;)F`|rWb@wm@1EZ`kHZjLG4E?Q3qV=Q->--Vm}N`BOckVETH zV0lrw`0)e_VFf^r;1jJd07c9k24Zwkt-M(6Q+te2j|^OriESJn$i49PR8`A^OqZ9KQKJd51I31U?OmOK}Wfd72bEnjVJ_A4~* zKof;W^j$p`Fym@a_SN7$S3@pc4Sjqy?AKM&t~oNaIeJEOOm=hZp60kq&GC<$6Mi+z z?OMi%woIJSGC8{?aZk&%OD!`Vx6Jz0qOiM$%I8vMTuaTqmbT~Gf=k!ZA75Mi>zdN8 zby;ZZiW#k|vRgCuv}Rpu&3@dv_E#&_eobbV;b(m`VOm>ZVOzDa(Syx^!o*F1HiCy| z26I(>x*l`XCp_N>Vx!@Uo6BQR8Hj$unki0>CZgKsm{11^0IyxIa8mgmn|d8V#e{sE zTOO8|iRJcS&C4t~YUq5PKUAc<@^F|j0#hv<;d!(~bYCj7R+72{!|i^x|Em~z;&K~^>b?U%rttY#Zr zUWH&xO&39~edmh}cae=&3UytB&vbmOgHUa8=$tUoQ%=L z_&>uRjPpHRJ1*2zJAHH#);hw%?)b3lrg-?a8H=A_Utdn1llAn69(y~p;PIQMtX|-% z>0lXN#7`!BW7ZCsVh-Kd)9RZjFle*`^u_k5GQ~`fxf!tXdxniqY+A1JdfvpdbTNN$ z%y~n%r>6VU6O2PW+2R}C_8btP(@*i-i~_DGfT#!4{souz%;Xq*pLdi1=JF8R>L2O7dZK{gabEqzm;Ta3v@VKGYe9ek6RDw9DmYd1_XpRfm35Yx zmYAdrdIESXGuL6<+T?l=6pQkTn!@TV?`v9LWWDm^%Oe&pk^4;s z@2DPHpAx&za+anm_Vf`tF0&FJKLS+jP1Z5>#M{%JQ5N0_@nhO}s)C)?7HM*A$MIs( z9D1>A+=`y?wcgW0dmh{$e8p6ns?m{T6t;F?a++S}^o$MtQ(a;=t*&F33?%5(#TkwT zHfAod!`qg8C>9R=ZmyQYf?TF7fUh=IlDfhiwxEr#Y{YtiO=_>FCg~butz*jm#73JD z&{E8KzkQrRm3+<9p}Gwu$K1#tBuLC4G<3+}h7*Z~Wco&Hv(##7TXMk)8+Vdo8SWdO za7_#bx;U+k%(YHTgot1VjkIrO?cmb7L{UU8!=;O$_-54$^B8_8M1Dl@kjOKM=rU-y z1R(M`lhafTY;HDPL~f|19mF*I5GbTM;b19qE+ZkIYtkV--7 z_pI26Jaea9g25Hc>{}12o)DARW>mK-dxliC-?;hGL5ec*Q%d}INk!cUEMs+lL#9Jo zQn;Akpo6$&*ZpvAv`mMItYj*KAT?tL7-3ptP?_3=r4^XmI$fX4l~U9l{97i-mwz4= zftku>D=V31dWEJeiLV-K+q4tIPR z$end1UfN*!_E33#v!p*T@m}1^c?ApsUpHk_$_b1uYh)3qMw$XCy*EfKfq=VypnyKv z_(QIzdMJY{p901YR=V7r6k`7D7miht8fci$Uci<-Wlvs(nJX#!Oy~W}dYmo`TsRD5 z0B7HO?fLO*3%a>cbejGESB+i}f3>!arzrn}sA%&1J?<=iE=EJ#K6;0w^*S?tA8>NZ zLJZVIr%MyHm{*#L=2L&oTz(SkT+?{GwjUe4w});MtYfegb?X{Pnzc^HRYzg}epyOi z9k2iFN9MY_r7)aCcQ79sf#7i)G`Y8j31nHf^g5xuSEEqEBAx!&eE6;L!5`Cx&y=`M$y?{Xrj)?YBVpinmIhI|m^h1*nh5VA> zBsMbJ&u`6^lZ@*&Z#XIHt!qw@Wk+2$t@F6C{bWk?Seq8+qxBh%J=<$o5=-@1nP7`*!O*%4q z?t%$>e@?84nRIl*!3C3!XHBY2opfyas|8ao|D2>KpN+;F7 zwW^*)?dK-F;^ay1-;lqm;mE;V&D$M0y%Wk*uA?Gr=1i%5J;(8a=iBhkz#Yc?Hez1v zhYi3(3-<;1yIxsAeXHW!&VGG>+QNR$BxKjtr5vLV9aWp+{O|3O*Edf1HQ3Kx?ey^e ziWba=MUMKGL`Cd4bI@vdEIha@*Q7S>K!`7DYgL##ZworcQI2E8k$RCGNpnQ5&lI^d zXqo{FbZ%t-Kg`{ITuk}@`2W{AXRc>zPBqn3Q=P7->*;z*>P#1eFcLx-$x7OG5JFq$ zOr<1t5JH%ggfP;QwzZQ&Xc@%jV(lQdwd@XJW6}5Z{=9GB+xPan{r>pfZol6@KmPHD ztK7!SInQ%{J)R%xFP8L~ASLN~GKbJ$=1A5bJG>8M&wx!>1B1n(8JVlJ-`0=}YGqga znYl6cIcu;T57@tQR45zza&GVCHC~^_Y>_}L%K{Kzlawy~kJQZE0V>tEx&3Y(qJ@%f*q9XvxBT>%F28|nz{7TB^ zFWpUGj_}KvOGtFn45%$m&qy$6YywoQ62T@dkI-0TU#lp#Sc$mlLKj<|0)BP|G~*u> z=`k^x@Ix!jq*=+;F*2fi-EXdN7Yxc-JEzQHC28#(+I*1Tch5o>X(w^0+gFaAd%MVtVQjhIt+m@El`}dWcUB$eU=pGKxW5BKaxc8vb`8HdKQ=`!bMa-#!iVfX9%E z=4#gcXmYh3sX(%27@k?l;AP00;jJq6#0Jf;Qz$G~G)#AkieQPOEJ!8tck@@Q!ZL7T zJe-APr!7DG^0&7yEM8siBv`&1sHLF>`q4qk#31N^1%?*_;wS?SNj{G(2UtqolbW!8 z_TA%OJBoD4)90p~8gKGb=BpU)DHK0Ny9+NVn+LiWKF1`@+9L65o2UfY)t0Dgs@|;Ev~LC)kcFzh&)NnJZ2)1=Q8u5ok)$in)}l z|D)0IeCc`WUb=zt96~-h0kRcNdwx3p3uk_wfq9Y0Q~XPoYNwk-;SN}c(Yo$%#zR3h zfyCbb(C%dd;&9UfZar1PmuV)*p7Tey9X!n`n-0(ckHAx4MDLF29Fbh>vrXkCFY^lP|8bW&;lZ4v2WokZ>YfvYNr!8D8pKB) ztT;BQEoldJWXFi_)V!)G{r)<~z7M=Ib!9bCNihr#4hRj`GO&h!KMr#8)Ja91Lf zRlCK2mfoVJ@R4KzICuSHYjJE}iE#|jJG^$>*wYSfzMZ5^k=WGwpZRz(?@BAb5R7Zs zy8h;s?y|s>sTU<>TmPgSa2c?MYg4az9!$UZp4|)_RXjTrg$*?&-@-3`oIIng?Zh>9 z?qgm-t9whO^Yhq?MI_CXD~hGGS2SnRF>v;^gkn0{@{#=Kk(HHo= z-(%AAOOH`2>ed{=LZlKpsC3JaZ=VG4mL!mAQccvZP`){4HQI45H!K4 zC-hDKbyCnVK|ckZ6a-T+G73c%WKB>=K@SBP6hu|fM*Y_@K~4p&6U0pc0RhjS4?;Qh z>C-3Zt)O^PpsVn0#;RTIM+Ke4Cr}l%UzoPc9>y`6W z1tJ&81>MkJ&26T?OsSQ51$ose>8TekQB!iV1CsE@##*UkfY_Q-*QiTTs>Frq43=0m zF-2r4*{~twM0;C*C?&C$6!l57Tbt#PQd9pxcBU$vlr`4rp#18;8lGAxF33yI$ce4W zQ^Wl_vPh}6HJeOHIjV1y$>o*lWj&YL13W#`(o;|lM|Yy;xw+bS)sUZ4s4c5J(Nx>s zX*|)^my(bf9?#yV-~Qsv>$6K%R`Z9!#Cb#<9q zEC?UC+RG8h)LV)MFAb)VqW#rv{Y6xoD5=t&B9k(M+yyEDh%6s0= zboCc206V|k@c8y`iIxFhoXr*WWeBn{aq98v$K4xQ8x{>Un>C8G3bCY;dM)fJWjZAN zx#233blU=RXUlHtN|~aQ_Rl>|bt$%#xFvO(^gqO0zZ#fTK!ENAaeqtZ)Qt|A$kMb8 zAIKir&EN$z%Qax`0oU8Vm05)34;s{o<0!kp7S#-PgtEc~SoE8w#s}vSRMBv9Wm=ql zjj@X@(Wx)QI~NdXhy>u>m`HhOKle+v-oOe>8G16|14mWIvadA@5m2q$$Nti6zA-)h z=1i3RImt+Zxj#00j*lkQ_3=Eh8pU?*Slk^ST?>WNDA{h03G;M@c+|A!=C+)wWSZdw zR}ocODer!Vg=h&a*M2n&&-s4pPGE&`a0Pd%-HTcLm^$-A3yWTZBF?Yu4|Jzhfx2`* z{{vRau@IS_3Z6Uo9o-m?n}?8?YU7P~X`Yf^Ymbi_$xT;Y-T98~6s`xraYX*&B=^~( zL^glq=~P~L?8wyBUW2UXm^8L#swF#xOvJ1oGGCryJ_}O_eAL=*5JH%4BhHN`A)9Sf zb~9_!o?T%3_FsGT<5*v#0dpMjz}C9zb^8#|iI>*yyi@h}1>w)KN9>YlWBqa``5hXz zOMl;<_}jaSva_EVX5q$aH?x8tW{@>=Wy<%juUT(>_Z>#mR&+DP29oAEh>yv}JN+{p z*0+vkb{BR$!ZiZR6q#o6Ba6VD@&BGPzFqUm>g#!NqD}&}P_36!D7R#Ay3V^sc>#Dd z6W`z6_{;!!1wIBcUv@&PVe%QHW}0i)ufOm>J!?tJc-2C^0VQ-g`0z4AZCF`8t5`eL zK@Vw&O9pA!EUhL1Yv-;h+Nn?OLF*RUqPhS!?~oyno5DW*YT?yRJbG!Bq{X;i6uJHt zf2A2^1evar@!$SaY5-o=3)aQ617v@5WuEGU2N8|b+2Qi_m(x*@PEvV%J$ZVU$>!B| zv?XdL07OANO~0B|d<^kzqcj%5wWMWd_jxai;1Wg`ZD9w?g>r%^mFn^}tM?BUye#0P z_pVuClG_hIRS$pI$jV9T;yw4k{NbGA?UI(}9qK5Fl0;GgZC^&D$9|ZAemO%q5=6Sg zr#tsXLsx12tN43r1ey7#sxY;yw&KgvrAkm-{ z11t9ouxTey#_d~-Otl7Yd7+*7<_g2ngo?xl)|U|q3pJruh49u-PqX}Rs;E$hiivB8 z8eFyiP=-Yn8hE%GJgBw0(>Rn_G`^#?(0U^hI9a2Ors!XhY7Z_fHJNW=2lf;RAxZ@@Wbn1 zT4Lf&FglZ<92q7SCRG5_A(V|%Xr!u(KMv3~om7G4w^r-~ywnjMA|~2tws%7fK2`+? zs*9055h*;BK0z*D!gLf*I+Rz9^%NO42-KzHXS_cA^@l@zh8iF(fX$D&5&y9sW%Q~T z0>g{x^%L*5{(otRzI2Lu9&%-7MR2Y2vCDo=0ax9hmHU2}y;!k6=EzpNoZDBCFYeof ztpB|61Ij|Ir5r}fp0$nrz_wI@o?;n=MhoUxZjQm2&Biea>)jT#b!^{^cxlGj&N;g+ z;n(Lo@zXaK2Q{ixb8T3&+CNCWR)zj6v^SWxH{W^8>G;L^C(gAkF)|86Ns8O^5?+6B zEOP-e>{#aWg+P#lUW!t+0b6u*Mx3>Y=D)N@JL|4I+gbW!{^Z(qeBHx829l+xj}WL6 zoXSl!!Y$OLm|qUf^oD!=1O}Gni9Tjl=l0@3;*z7BHs`g_9Q|Qe`(CO}tu2)d;)OS_ zKK@zqaKG0-4X#zO24-j5&%z8-{-;CN3io9`bvpL`tC|m2HdhqU2>Jm%_W4Tn+NBG` zb%mpso<0M0Qw7Ze!FcABSL17EC4(0C#Vju^oJN^YLDHlEt{!g8Q_wakh6ZUnwKM?G zj6rp^kGxB?G7lSb>}$-*NFpye^nX&ab}5S5xk`<-*DZ#Rxp^i$8Vmx=SvYtS&sn+E zy3CMbQ8WuCp5SlhVBo+r0unui$efsd915Ev18;+<2q}kbnyy3inI`bL46saxfkmT< zVXH!#bE$m0OoHL1r`Yfs+Ci_PJhb%GKfcc1?D-50&;k&vJ7Yb}y;=2D0XM^xYE#p@ z!AC_G%_KCUq#)E^PFtkFzhJciwHioA5|lJLpu&7d2}OT~^VpI?6A~rvVimR1c=bzG zWJ(sl=%}c~lR#xlNDDui2Bheiru}P}bCkP*>>aZsfxJA|_qfPQQgo<>Lm=VaR)Ojm_w-!V2Z!lBj-}WV?{|N1s7$(DRHKCS^JU;y+ z{4yT>j8ih>lpr(8BwT~YZ^Ov7V%>5ZbE=;f_13QmG=Kmcb!fMdj1CD`WTOa$mMvdw zBa4hS#9#%BdY`Qr*cH7%TFNmjkOCBwjge>Mjw!^($^lTLNZL0JwJx@>HfPR?t^t}| z(K+eReMXB+C~icl!vOAc^E9Ks|1O;0i-?pVE(QcgOV+Nz!*FETP^rJpEts-WW`Rvj zpfzzU=8f?GS@p(k+Eh<8K$ilHW$^aR0!OeE5TUi5F84(r3$Lun`J%!$EJUJoWQ=Zu zyADXS<-t1SY1I5j)>!y<6vs<#0brVeFP`)3O|MWH@Yk>L&AYSt{BhPs;+JG#QZsmIe*Jb ztWH#I1@3xarL|o(4V8y3=ISa0O4Py&w^w5kMidZ0u0x{?z+VkC9|#bMplW2+5pew} z;-DwJ2$-gfIcFvPJdDIe1ftq$Oe(=chb(H$^Pn)8IJ1-ipT+PE*YnrQNSG2?FyQql z1i4u$a(|QPa0T^M0o%u6w+_vSbql(3%I~ubTioE2v~%tmuG`7i`XtqB z@B+RX`?6#1ywJ=H>xGF=_vch*uFG;*YL$s0b)!2F$ELYfXTE!LN^*LeOq9O)?tdmN zm=s=1nP7ahFsRMu<%b2fWtnGZI84|oGcLuC9YioQ5Xw}qd@~!PpeWgAx2OKE-HCzy zA%kAwc2$aT@0{=5NeJW34|klmQvo_=9$?)M{Gx}?kJ0{_h?mj*{h%;RhD54&akoa) zXGbwNh#qZ4xH44bv-f_w!|)MB-!pe7$2nuWkXw~=54s(YlzJ1QIpH7Y?R?j?b8%BN zeW2VnlYembt=*Yf(;Rw^NEYPIy7p}Tw_USsy6o@mPAhx6?_Tn3-stv38MR~Sx~x}^ zg&x$ze}@pJE+NOSzT~6xlw|bOTE(Gviu>;(uX!Dwbn8&by66Rt2d*@IcYIyU&Mw5K zVQ$w#qRkJxQLp)V#vIwXX&=?^6fXD3184>{&`=^)Rp{5h`jgaJhpn z;i5h&V50=%*GwUl-g9%1KpalXfaix9KCtyo0-vS8O@_QpMlB#kC7m7A)e&0Qt35e4 z0}+@OiBw1c%&VHfHE2fE`H`mYc`EdwcLJM~iOtJ7>Jn6qxu>KcFz!4l+K;N0YSF_S zi1t9}s0vyAINp2lP9C+l_~4?kM?EK}VV`orCl91sIwo2s4cyRy=n;6PRVJf919W9n znUXO^J*~`LeNqTIY;|_ATQ_EI!{GJY^+kwCMmwTtb{fizK*LnKc>wve63cn*{C+w5 z>$tT1_OXsc5oRL3s5%(aen7QCAgkts6}!hlX@lK526kH^3{uv2ZcffE&tUzjaaY%I zKzyJUew3j0MpQ_FDVMEBDa87olLd)7D5+tuy}<KZn(28`T<;#se!u*1W(SkQXxU+ z?~?owxE%H$Z@9`egzdj$*&<0ulqb)_{7#hCYQl?*$OIMv_fD zvzSmV;+YRvtr};q1?w9ToAK@hH1s_G4kv`w3_EVJAP= zX}D#J+LzTo#5D^=4-kYD3N7-#Q*(L;?;T)ipkRKZsf{ zLc??@Fjz-w$2w3xUpGFIVblK9{1UV^aozJL>@G<05Pbuhb_Dw+3veP3Ya_6c9dZcY zhsy5AwkGnF*l?LVa}hYbRp>sw=xpQDbu+Oetq-=BW3I*})q7@VxjbJ~-0)ij;v@4` zJ`$oNwmcNG(_w_3sP02!r-2w8WV$4M6N1_j;Pm&CMPP3F1+aySUK?FB)Ou*!@oErg z4DP_th|`m^*{I(}EcNR8iuYCn5-d=IxD&|pX%)^&FwqKx%bYFW*+m%<`cnVXrN|hk z%NF>r0xDqgX&@!wha!3wTKA_p@CI5Lh^$1EUM9brZ>^d#OGb4dhFqUhi^jm_A^rQh z^Dlf>V?O4s9Xez>F zX)Tq?z)is$Pk^{+g-=fXo#Iw8@tKEk)DhfJAo)MoIuib;8(x)7L!-^+Na9BqVx^}R zNs%XL##Qh@jrV3?>r?ZuBTI7hAYH4J#i|wyAnXQxZreLGy%S-3p zs9cwIboi|$0HJ0ONcksxNFAQF^YLKkRN+xOefjNEYi9oTm+3CLqYO3moUpeHe|9JQ zW&-N0OICgmqCVqev?0sB!`uMUu({|(KPlA0E3H3Wcc4?3pPuX1=1$1>RbxCuzh~6B zhZ}&C>>TzSaeHOuU`Cw@?8Zd!%NCWhB++lI zK8+83GNHzI#)<5Ex1LR^V85MQYrLV_#1$<3YjAg0cd4aCfIzQTjJJ@)?g(0ZzyFU5 zCG5}78e&$wnBHO)ts0qiK~rvnjmt6azVmW+ThOXB=bX@2(|3=4eD~BWtaxyC?YqDJ zf7=jMo<5pgwTxuUo?dy>HU%JM+{|{ruCoI##v^uqmGz}11%*^OSDHGh-XVKH$v|^c zx@gvyrPF#&TV5qJmPs74{K%)rl!hrUd)?xYtLvf}E0hpltJIHO1?b4@7Cbi9q`^J$ z6pam`RFwLhPJ3KtnQu~|4QX-{T@p~+)fBYv>fv%riPEi96eD(HTaME$r1|%Ycx;E5 z5yJsnNhOVr(h$e^#_!&?6*#L#E;BLDjCxNWe)F+uP3eUyEXfw{LW5Sy6l@^>dLq-` zq1KlbH#&_@o^UUHm5;3eL>$1s(8Li&WFh5$BLCYzra8_T@k!z`au!l0k$@`WRF8e{ zYFU?xur2I#iVAV$fDYrj=(^^7e=v=#C?Q9dFon5tz_L!$8(?Sq*Nx-2pqCDkKnd31 zu)=8XEt05jGVqzyV~XcqyYO5qaWv!PrrQ@xoe&u!Y{S55fo(iP0ZmaI~sSuC$3v?Lv>E@^-4R$nF4{cX}nM0#4yTS7sM#A{&}T z2i!`FSLic6>AP*|br%qfh`FQHn+ak3-wsd2t zap-yZe0DKmJ74_xjdANwgs((jvFUiz$F22D=kZdyoWn2yrbBuXh3%FWx|MSZ3ARfL zUB%F1)-Xba)Y9=JPQ|&sVn$E^Ui?y4o+`vn)-}qvQ_`X~g261J`4`x&FjYhew_U*t2bhD_z_2kIkT~V8qKB$&ZWM`jG--r531A%!%hLjmuA1p; zFo1jm#Vx}b-b5FJB}1H&0Lvx=2)^1#Ga3P~p(u;hDc9^sz+9Mz0GJ+S)|xN@MRQf7 zS{msmR|UY|(H2J-jOhS^R!$~B{*%mg(NBoGV2@h&8!%=)wcFY(1dV{@LIGCuJE0As z`=<2BCg*Ro-`m!zm`J6;BAZAlEmSc+t0=CRD0MQuWLj)furhGUt}@W?!w6u^)1KkN ztvrD;n*T}u6QWdmY(5~ zhdpXNbt|@&Zu47)?761nqWbYjk5c{&2}FKX%^c8OWRcpbT%~)&bW#k zvO@~;ka?E(zbgxBt7rdACi%>{x#^L?l`D4PW>eTG++E8IR(7Sto4dFB5r_Q0ADYC~ zA+~+}SQLe@L?3UZKQdtcLvzNH4Ajp2jo+OBD#@3yMS69v_LWDu6YVs%>7G8{z_mk= zZ}Tqb4lZ!cLfvujVE@<5FY?`U_*xA*@_y;`y;Yt<2=7caj8Sn{6N^`?`53{VBD&&H zV}i9_rQIDsS}J!BT#TH_I=RWf%>x}mn4P_Tr)A>o7k;(5B!(08)L7M=x?Ib)x4B=N zyn%+3soN%29_EMQ0GBknx~aOJ+_KYPIpk(pFTw}f8s=Pz5ouDv^+dG$uf)CxvI}z9 zTYt=q^7GGmAmAzI)5D`r!I~GBIY;09{GDFMz|}{din?h>%HS%O&W@Mik8ptrc&8{9 zHlP&JOQ1!f1MwmycK6aw%vHC7E=-9>r9`uTId#n21S~RDKMRu$yOvjJkWLfx+kC~w z(tcD_L$U%m!A!z%F?RYzSI?C2L$k~++yn~!EG4*5^>iFkNkXo4Wu4eJShQ_$RCtJPd z@Kmch{>50Fk(ean7>In<09>_CN2YEQF-;d2dkk$?=x$KQHaVU5ZNVSM2zojGPj}eW z)}fq`!AXMM?SMrhq71|y_Uwr``-#*ap-wy#xxH2*N&$jGKf#DWP#wji8ikcV3E-r$ z`lq;Dr=^&;h?EG3O%4W%pFuk)6(SXFm2yDX7cDUWk%1D(71l`!tV$QbNSD25*Ds33 z5@J)c0kQ8zN{oQl54H`ldCfH7oV9O9MEdp@3#n0tdXK}9H{KkOccj@~2ZF8;n@;m1 zW6xdG@|Xm$fx#{r!l8iHpF*TT_T(X^w8!uCd080EOrh-OfC<@@KuV1(psWb4#7vE= zOWLi66Fk7l5hrB+=a+r$2q!8uT1!dDBpW#$d8;R(ky`0TTM@LfEonj??ZBb-=)!Dj zJ#jH*lR=F-hT0h@IPd3VP`*`Fd@XIG4PTX3YptgxDdRX|fCGvtb;tD^`EqLgT0|_R zY-9*(ws$h`V5;ITDdWedQ3xEETyRgkU%UQKFSxv6n*rFVqwUO8VH&kiMA>WTiMd_P zLms>M)F{X~+G zLgH=&!V$`$(kr66>hyB@PJPm`jm{Q2-)n0Tq!$k2FFN7WmPs^gEzQu@ZRKo3Rdr}P z?VzVcYQ!xQK`0P5UGVNfutgmhOT$$*#Q_ zvZt4=j;-QuEppX23)mTgwwHCF&DSnG*~^du3l)5}bK0>T*gmly?R*QWM!=d66(=*> zKKY(npMKb*(aTT`?9Ioy&Ghm#simCi5LMb5f}VOte|S@Yiw`|UQoF0894ar`%Tmt) z>TTkff)`EI9yCu*757qDZC}VoP?JjQ6M(2$8pQS1W`IDO$+upz?e#REK!}2Nl!YCI zBlxRe)%Hth+a^@j6z4`4DJfu}oK!FcMzcTve7WJsV|c&~o-$SfTu*;`sF9~%w-7o&Lo-OhP^wIY@J%_dFyGG&5w^y@eMb3O`tuiDNzR4 z&^a||cdFgMRHp&45Ex5HTGTE<-?2xrAE(-;z#S$BBqpm}H5=znQu@EUxVDOSTR?qR zh**{*K3poY)t&mc!miz6x0c?F9$FhdorNE;1nPZDQB?#;G3?XovFeUL^vm^QC4YKkklV( z#I%UVoZK<@^o&hcyE{+Li#1qeb~$GjES=jXdpK--Fx=gE_I}6lBXMna{C^+wu-)nC z&MwKBp&xf{-n_LPY#r(JkEQCwl~!cyE+ukvN5`^FV_LU%U*J1$HPE>6$KzY&QYPZi zeE$~{5T@9U?r5jD?V?hBZ_&Jse0B5@ta0_hswvKmVh03i-ftznemq+GR&(gdyv@bn z@@t3P#|z*)*5Tc?sT1F@&n5H#!tZS&B~b2j8gSaS)E=pwyrmXMx^%2QD%YJ_x@{xF z*d);-p97*SRX42E_wPQI!$a!g5lYy+u_(uc<{+g<_Nx}ncvD4rc<^m&7YNmlj0*wmOQ_ z9&UU4F>{%-os?==*X}5$bKH@~)0@kdBDVSz{ihq9+2HH2efCD`P}nbyBkVotQOj~^ zG({dYwp$?Yo}G*2?zX$DK*~F-assJ)6OKOpeD!T3n8I@?p=O8(8mJqN_nbnX{{%+B z?ya_WWk0Wr_$B1hEmsD>aOu_b3>%Uzl7mUbPek%VBD1?wGcAFI=@%73(!=>WJ?@Ej zt5I@k@#0x0j@iT85v8X?3SE3bcBW`IqM|>!!H>@~_9QjBc@t0ZYpa#4Y5NK!cPth1 zSA3ms&P`{6EjzRo4DvYuo_)@nGWV7NY3bStniJtK)_kCNIbEql&U_x*Z=h$Lf3~^G-lA|Pb8^Cj zukPqiWvl&eedGAzQ9lJ^HtXW3@y-gCQ#YvHINyDa|J^2GGXiH|b1t~qYyD=NhYmF) zE0=C)rI$>ja(VO&OW=Qp^2%D)7}PzQ9~xGYky;->m&kUjZGpu2=R0?w>V~|2F;}GR zNfz~#TV4=0SI%zAlC&de2Kcg%hA+j%yoBI&lPvsyFCMr;`1v`cB*m{j9N;`}^SY=B z1zt{jFFn~7iTs!_dmi}ELD{SR_S;hR`xKHXe45lT_{>`eUqxS$5?y1z&MDj_f;P0$1uQ#V0q}{7yX_ ze)-}Yb^Ptvqgt}z*YCa0Z`wL=zEn?^p5ohA-ebPrSK{FJYHy{3KCv_7d*bZF`&{vr zBXPeyXnnPQGyU;?-?NVM%(&5?&i{DkhdHON)wcVO!5(+^ch9}BZ)MEMm1BNd8GB>p z*xy#h{k<}NbR{V)P`DN(1Q#U67bHzBNM2Ad?wjGq8Mw1mf$q4Mbzy?tdD}CD2!T1u z6yQ`l|Hh@aN7cx_-Spd#y-w1}V}EbQl@uR$`?~brtXnHB;W0VgJqM{=tEXRIean}& z70C~+nZ3Vnwjp*F0y4IH1x;tjUFZL@QqBu+&h*7)dvWPbW966wS(5u}=MMH#KOhZ1 z(({?Mc9(x%ZEKqG)gl_>Ouw{v3(7+ByEZa%XwRGTjLj~szO;1)nCk_vk^0|{v1Hvm z#maTJz_~Y@c|W*O)+5v?@1b>)163G%e$oL8h6VlTU3<01=0|fEE$i5HE@jaIcpg{1 z<@$uzw(S)CPc_Gd5{V;hLuoM4`UhVcG^?t%c5IqeT{wwGWJ@e!8tkRCO~%Q{dDQ+t z*7DZcu%%80Z?LhcFTdX^NfO*t!GA|YuuVz}<<^Z?8h5_@v4o)3zD#^O`62B&sV;=Z z3ipEy02rx7PojC0-EeQk%G@)Y{O_;O5kX5^=VmRvFfz^m%D+GSb~0+V`pKkgkJ>gd zlWSU*R5{eP_B^vX`A0>>bElQIr#tj*_QnrADU^-&Y3J1DuczI%mi;yB-Q#8aL*M_E zXf3DDU0rY646jptwag64I^%Q+hhO1$=0e9DgS4hILD&|9e4M*;!m@wXTKBwmc-zxX zF=gPLas6LSs*;=q?~c6iT`MRt&wIxyK`Cme+s1yK+_+Zo_=hh?79A-*N&hnV*E{#( zuEiG@wK(F${VV_290TyDet!1vu9K#p{&z#Pr_$Qze>X(K+>_d0d-Rqg|2L$)1yn%) z4AC{z*N{U)H4W`FG~2Kr35hin(GW{RzYWzibktB&Lp2SdHI&=XOGA47{P`f%+E8di zcMT0Tq}R}F!wM!8+R#)(stt8FwAPm{^+2r+H8>R7kYPjn4IMZ%;gESl4G!aikZ?mE z4#75*-VlL9D4vjz1cR3lY(t^_U%w5lIE3Obgz4fU$;!$WOGKYO4#FT}|8;%)LBodT z=8jGyWXUj~2z!eAn|o^7^6p*_hr}0VBVpGNwhW)VFhbW|y{tkkv)ng&u= zi%l;E;ZapssqDGl3;T|DH580ZW_%S3lbo>c2xE{imU%avdh)P0bEXQ`J%>#L^XC^B z4aO%gMlSUXBq^1j{(AZ3djFXLSiNk!bbSCGhk#+ux@|R81Z5m}2os*L5?ZXu+j+3E zx;PKkE@9?Vtto`T&NJ6v-hb1k%ddg`&VsM~;{b*abpP{Cw`O-sU ztG*9bJeAgD>Q^-{KMoH+tgfl6v&6+PML9g&WBzE$Qy1zl^kio%Gt}8IN18cDIdhIG zFFS8sQ2Ib$U-p~~m(8fwRtdvd0uaT9Zi@8?Z4Z*v#GKF&ESQj zFXv=uz=kD6+7N92KOt?mP5%dJ3lc&{Qd<9mv?o*bWj@&+M@p*GIS)W8(Do^L$8Ti|E>VDg`Pnq)@s8 z8*SWpQWuLIhs&)T*pVunW)4C*H1HzL!9JtPyEyq zHwG_o4>qzyxAyNpqbBQDqlZzWJnJnT&dT@&JzqzGNM6UCCrwvQuAX zPzi|}SYD0#M6N^!G>IPY;aR*3Za{@^Zu&f)@cAKBT(K=OlqsxJc3~2kJ;D@`W~HTk zq``q1Q4sNXljny;fGtlkp2LH4M=JD$i^9!#9GN9M(s5#-tBLLH}#)x7 z&d|~&FYQqg`l0TY5CGt+qo_rwQrGQw&cFDNBGTFbML=h+BDBi`AX@R0F zzq@_;jn5>hLEumjV>uCPXlD7W6Cv|vTHqQUyG-4UdKRfZ3^7)f&tWhn6vf6qoyIHz zC6hi5&ACLCViDQ6B3?ekQt-X6Pg%Fn{*y-nKezx-=-{;JO3jV`+F-oUN;S%I*Q-cI zV6!oDxcqInh85cj5?RtVt%8F*R7Z`xc@y5vl#-?s+*p;eTTs^h_v(12LBW{_4O-o% z+`k*9qMv7Jd2SSti47c{cm2NTYtzSc*Pa%)+XTJ>jD^SM7(boDY)Av*?!RxRr|E># z!=+0lu_>&Jkp~=_Neu0Ev&eI3C_0&W~sY^9jBzN8c8ftZFu*EMlAXa+uh|}ezrq&^3MRUwKN0njVW$4 zxmsmVtQ;69G3#8tI0z?OtyyOIcB{W^uy6`&8|J70(GFl#@tUZSV8cq>$N4&qP2cOi zw!;%)zGxI%`&^6qi{>b~(-8bINQke{hT zW7Xtfwu)luzb>_!p+Yi9nw4h&p0$R>JH1QsK>|1d!<&>HY2ApD>1hO95mD+81F%4& z0rmmtYob$!*L zj(~*Se?ENlv4M5$+KE51%n4g$&so;jNS1Nj*4X)`CihyBpKHDK_suGzyo;8t$tr~_ zOg8XOJuUh1S}BsDiDMTnXGj! zsihbpDGG)@6yr3S{IJ&*mN{At*+DQO%oSLUveb^D!z|THkXU5`r&bqz-Ba<+SfW%! z5@?v2L|R?~+^j?GYeN*DmSbqae!aap5c9`8KGCRGUz zaAjoV7m!q*x5%M|V!7qKU_bnTv0j}r%&LfXv8~ zjQ9nWDJJI-m_^|bh#FeM^wT2F%>+B3Qo;SAfQK_xOj(AJ%szL2Dz_|^l}|Fo>!@n; z9|rH7F2;NuNW@D~<|x?(THeCFnmf0*adNM%~5 zhsS`8#R@&LYK_Fhb#(kyZZ61qPBz1drDBQ-6Lu5NBUPPjxX5SC>JzBA`GaB~GT4-!*sLaNPBzH^y>t(qgU01|(eODEQS~IL!>UhOySD}Hr zeoBQ@J6v1gWkNV*Wc9y1#hL>1W6V?MEo-la%j!z)YIJb(Q=H9`8JS%Ki}2^DQA+|z zeY|`Wtaz8`?0tBw{OtlXWW2+{bs_%NSvuPzRjf$iP&q+~Qwh75+ShM!S|zX+ptMT$)mAO8+U&5NB(RYN|whjm2aQ1OlI zHIWbt4ov3bB9++b=r2f^+AY$Mym#jE(Ee$V6~?IJYNeq5kbe^kV|bzV>Sge0#^9j4 zK61r!RU1X&F>L&rA(Z_~HiB zkP#wCQ`JbsBCvWi3vn~47r2d;lav!3EHZ~PE-zn*cwQYATC1^zVenDy5+@1?*E=Oe zVG#tnX9!}{h+r9_sZ5yXyTe&OIsK1BS3ChOOtjT5uvJZDQV2&ag`D%`Gc?c$emjkh zc>;pfQYeVV5D0v2+Ym8}ey?$X*%n=Buqh!J-w~d;Q?LT_Ig?$zbw*Wdww-!s`Xy^7 zh++arCs8{Sh%&l_;Y-=cN$*zgaZz9*5?IPmcO_;+EVsFtd39Dy!=1UtghZRAQS)!^ zb$Dw#3Rl@1(A%$t2fVyji?YWc(y;}z-5GULp6yMFnttfX>@lZiM~{=&y4g+}?N9Vt z`1L4-L8J+cV2Z}d(R1HGdD>7&qTxu<3}*)hp){0^UXZx z0>zd?3XGQ+l$Oeq`M=+&8hac0cqqy1{YKkHuOmz6a6fu}*1@lNbFEi+`Q5#|#(CVH zxkrXGToxV(y6-f&(O-FMhFASwPu}d9s#zg>Z2snEe7S;~lIM@T8gzbX!_UdHoJ}ZR zKAZ4#jSG*+bVGjLHSf3KxJME7GoHFf0PN>C0W+cxI^&=(By(QW!GNlHe_p6|4?`GA z*^EVD*7xVV3_TFN&N=?{!58m*bvAR?PdsdGj+l6FY)~tFIipEQhpVdgJse$0hyhld zi@Q)LM;SA6k9@oIi20tkivjb~!2s$~Oa+2<7)J*m?EnrS^bC}L4>)W?LjYleV;F_7 zSHM^Dv6ugpS?EDuv)V>AW4H%6;@H_HgrN=Fkc$PGG)F$hGO43HXrI-X;~{iqzpdgj znEXcA@gnUDJl@7R7Dc-F5U3aC>7+w39r(d(KBh!1RhW}ef-4<>4F2gDWYq`u*lk{c z2q@IuxCJwyUL-bHiHQvU!RNrI-tn$7nA-Q3YO%mx)Qwu^gd?aCm6QLAy7!NYG5_Pg z-`91`&zkD0rkZ|V{hm^pYO0ac)s!U3ND`8fq)jrC43cZ6Bncx)+O{1Dqm3Q3#I{Tc zt)C+y#13L(TRSW^tJU|tpU?L`_x=6jzVGij_g^>XIF562nyY!fU+;Onp0CGqjnD{~ z1nQQS^XRbB{tNT>`aO)f$?qd$ylrq`12L|80KeqwLz$}GV^ zH|gHTOF&1QC!Fc=)fjYoe~v{FFo&+juKCT}9g><>X!E;bxxExvsRd>L?R}5HtGBE1 zbhKv?3c`Xw_PIRNoj?owEL;RpSId$9H5e0sFd1@Gg8<0{6P2f(9m?MhMEXN!QZ!tM zw$51s6HA_iBhL51_u zk{shgXeWtom7^!_+SJ~$a;8u}!iGtnt@}F1#X2J7M+9!-d~1z{f6iV!dx=*WA`)Of zC=t(TXk`%MqK%}*c*g~!A{`d!h@ON-8ypQbTGS+SnQ3c%1fX-mUQZpC zIRU@B5o~n;!DN-Q1e*kq$TW&6J;=g85IbW(83N4N?`<8+JX#^UqUSfAbj~nQGRyXR!}ejb)?pLXd{o0 z9zqZ7(VfbxJ&6G3sn8ESqZ+q%Xz7I55 ze3310SuuA4fw+$^MZRC_<2U8b?=j)>Eb(u7$lrBd5sM=Hp4mknyHj`y6&&lgk^wUV zSb8nmRW+k$e|^y%B=AP5{N!AVcoFYkA+fp{KGA zefN8l3%<=s1*cO>Ed^*r7hztMY z&Rxe|{0cW)ebQ!}ectEtX!haJ+P;Jr=(@1R!awb5_V(+o!qb1Z;hI0SD|l*g{As9E zy0pxv+zLB(cjD9!c5Df{$P!z9yJcsO^_7{3oea?)z=H7Sy1&c!{x}GEJbM>n&PKF- z-bQCID0sACqOpV~!CVAYb`)>yvE`YtJ>xPAe28>W12$3SP7L}dPYW~$R~guaifipx z{@p}?t7FhBZHdF!-Iq!axDWs}hOmbl(PO8;hZ`}G3Y$BQYbGCw{MXxiOBFUL|CPwMi}AEJDQl{Un0GoBtoasuB3gp7%3*y zmRFTI*k04$`QX^Jza4iwoCIjgX-;?^t0Am!hFE zq|s?XYB|O>E~W$b_P1bM1?*uk;?HmOS=h)6bkdq1-ad(9&p;vW!f)1!*8DZUokDE2 z;I9psnHqc0hzvhM!U^*6pJ*uA=W+rCYCl4cxT_H`y^5;>Tf4BnDUUOs_AR~d;$i>+ zi|&6P9-6)yIb^bI%>nFpw^7dKC-a}#+;8w)&^`4{=z1p!>UZ$;SnN;M2IuI9&q7*{ zeu0ileb~}O@Q}TL(|Y*Lmw_uYgN~b`R+6P{zoq`TKkc64`%{~(CIf(K9h|?OI1ZGSjofP(-y4uDO5I4^+xd^lWy zz5U;Q8-cR`*z<=o0yr;#qX#%9fO7;mL4czHI1XrTZh?b|!-reo=mAa~;Cum&A>a@J zP8r~g0L~8J+yRaQ;DiDW3*bBg4h!Hk0Zt0w!~u>lU~e2!JE~RnnFVpB!)*|F0ud+$ zMMaP|lAD)4FsQFo74587LBPw<$dHVZ_jKwZgal`>hKENXKLo;0be-*xaAIOEl;%ly zR@Ot(OH)xjWTC_*CDp6yhlceK?UJ2S(p*~)`7KrMlrSe&Dyk*v8SzQdCS?Z1yrkvi3j~BiATO+BfbirMQMI{JDdeK~y9jDd4~GTz zRF=w8lcanBe`jem1lJr^t0A%mf@_F`qK?jXhm!Qh)}GwcZB7iXC@K|lX^M*SBfJHW zxYDoJG^@3vANxyWMOCUwCwG2%NjV4Sr3I(=>)%5v3k2FgP>ixp)vVDvaar$DWs?rwKl#Ako1lK7!Md;wplk6<2k{Qey zJP3z@WSgS=qSUm6c(H)R_k>Is!XcN3JJGoKzqA~4k-pCW$v=a`BaJQ9RcYlT#*Y8Y z3utg;@PC~b@KvtS%KsJWa(l@Rz{?_4`Y!3EUH=Kcf}nOhJZ0?1x3_fL%Dk3dZJfTw zonz;_Ku-|vViUwede14bou5!<&1=aepU0ZwW@2riI%;1#G{a6x3{Tb*JH&m2U0&-{9onbm~k>m4VQ-8*Uny!&0u z_q#Hj7?6cY5^*%Z&$0eC^SyM3y@=aBN|1E)RsTi1@!x^&QkfkGaKXg$hUj|6lnqI| z@qc1IwoH~8h_OwdD?=LrKm?|97JRFdW$ zMZc7Jip!-m(>9=_<18&@w&AB~W!R+K0M&%i)Q&7bqt4c3IW~%ZCB;z8c`S1-T=Czy(L6U8RLd3hRrFL=}gSZ(^l^q zE7DW!za9$8meNJ-a1@Jh6LzjP#_aDeBmW=6uc&D~v-XZB zNy;{Jw|H}vejdjqW=SjNT0M`lI3!O>*#DPqJ=_khFZ<{`?1BXFKHp+7bBSL{-n#L` zoTsNw-qpkC zQ;=+xE8cs9W<@AXVgHJ6)J4M;`^^N2jjLjEz2W|L`X5sSI*KJQC{P{c!=t*`84?5^ z-9-e#*cO&Sfo~%*C&LvuMx;KlvQaC;0p_^NX~o~`Ng7baP;x5@&6SpKP)w&y({$Mm z!V!SnouL$W>`F2KPrjbRFi`aChY;IVomp0o1<9x0kYq}07<3#p+DS!*9sl6S*4laA8-^VFQ2cAVPOf zFtbvR1FK#scIP35z^}d42yzg-mz72;%{ryKzf@6(OsjzAS%zmv3~FKobWcNqRlPSm z(iU}+8?e?A%EVJpW|crNOz>?%rbUXN9Rxijx9ePrK=V~W73MMQVwR?!X_921nNwhA zN{WKk_-pa7{}8nD&sKaXgY=BuSegXm43enHQwr1wmD~S*j)vvxOun2znIkC&{8|-A zflLVr$QVPbh~8N?8{rMneX|f##;}DIwcV9I46u~Ecqd5y(CqQ$T}uB6v=EGd`m3B& z0a=;>n4e!|qCXs^4tlRW?$)9EF5jq>P5n^Dr(T%xaf~+JxRnu*tB8)H1P8x)L(iU> zXXXx@xe^j|&=nEC_aRuXC9-Y`Wma8=Ro7f~wNL{ZDFaJwY%`_>fDd8PGG@!^S#B~a zd)NFsXnNR@*%3mYBE{5(xLkEEu=NIOgff%P!>90NysK3AtbAU?4=ai)ecO}Vz6`ybFjG~@|S@fuuI`cz?Mov*Ov4l%6s8&bZ-qL z2}!}He=e5pDFUo)y;Ah$+PJGvM+}=(Bg}H(-Ox&|-dFgIU9Jw~aQgT*xWe3tLLCQ4 zlR(47fJX$v5GWMxsuxzB6h>#q99lwCF4{y~`$eg6oce6n=59I7N`v5&sCHI{VM_&M z*Sb>_9E~B?!vG<1)J&(_Mu=+Z+eNr&o^eX36n?jArInn*Y)64vVQvg3p8__yl%)Ky z0(cTzJxG#?0+?P$<&^CKWy!kT=AH!L>vha5t>U1$7Vt(%mXLpG(G|548RfPAdd%*A zY24yn`*WTTKHs&)!n4p~UB}RS`|0=qMVB6Xywu95bl%T;25LG;BGZO<=gQEY@$cr} zC=XvluKvqTzhHG`nMHNA|G@`zMT2pt~(U(h|coR zrsQ?3YX_4*v@V=dAX#@yobFSz&nM$mI>xyXl~QI|G_=*p_%vZ`_s6zbDFcc;&14W=+lB+`VvoISe zs(1=eV*s1Nyo`Wq0U{lmTZ2s0q2a_TQv&#EQ5K2fd~{(920z12fZ9_9SwPqa3AUZ^ zG$E1g<;%E66q6Q2#43ci17bi;B??>BT#IGPAalW910V#%o|^NtJ27166{7Xw8o{_M zcOr#45fxM25PuoM*XOtqHgSF4wmLL`z?cTW)}h{%w^N-PU5j$3Vh}j;>ulgoB5r~d z8s*L-Q484o+Z}@7D)iZ}h!>6uWLWRKGMrkC$S_L*b|e@L*MZ6+Bs>;NdTt@mJCh&m zeJrKNjv$@}u%z|I$XVIGPDz?u3LOOW?fFZz&y{`Sn#Tt4;6>eA19w|c2T zxD=glg^WqDa2*0DEI=n8QzI}e!cz-Ow5ZEe)Kj&Y`F6c@ZmeL~&q23MB$ZG0@Z#W@ zDY@!JO4ZakqSf=T#{1|Pj{2$*DN_D#%Up)hNE|0;!;-?#dM=Voz*k}c2DYN!cZSB2}zFl53rUt$`RS|2}Q_)V3Er{E=*8lZ@E7J`v?zRYxE14h# ze`+j04BK1k5+@MAmCCb&<^cnI_LF7Hfwk0u1G%H`(Fp|VtyOh;%@kPfc9a0_bZnof z0@oqbX^{3b;9=MdJEH1T9qRRJ^PlaCi2!z-frFt&;JYV4tqduiYk4_g?1w!x1!7}B z?S>p6%cOT7&(arjCJ{?*fQcFfvb25mnSppDPrHNrx8oX2*5EQ79?h?o#8A+gCzWd`N-oOY#g8VDFrVm z$AYBjzyPo?An$(oc7hH;)aVZTz*%y1^=){2Z*({m#g(ESQtlTDJ=<&X_Ao*>SXkrE zkJpJjs)%3$wMmWM3JHL-n_nOFx&71vQTv<~A!qrMtX1iPhe-ErL{)||&=z1^%>EN` zJm)ki4*xJmL{<^bdRb`Re#Xgz&P$xfC5O)PRsn5Gz(rf`pZHFtY~~y*$9mL40G>RL zO4;K#`N&$&*|36@-gs49m~wdG)+6r~vh#P>3T`8xdLlO;I5KaZrecGpvO!ao7|t9I zLL8+L=|MAt)iH6q56oJM2OB|Zm+eREq*w(hx#$k+FHO`?e-X^lxOo+UZU_k~) z`c>q~)A=D7;{O(~4cZA>Gz`bIj_B5KE4~5!al_GtONgqnbRVK6fsT6M&JNV>3&Arz zw8-rfHt(0ZBGigITo5ck80gaC@pJg38KHfvQD9>2qD5DjLEbnZ zIdpb84R*PVbrDY8?vdS|8QtC`-TcOGzs_#|!S2AZZh_Oq;K+;ro8ebIPcP)Tt@!@0 z4e!vS#BGFUSj|}-2d9Y+V3H6=g7I@9Mk~p6Jn-P9_imcf)%Z6`M^8PZA%eUy%hd-~ zng?MF0cuBLozoEx4nhR2_VHYbS;kq7-Wd0FxMvwtu^kO2z{1*D%fivT@WT2u0zImx zyJy0+;(4u;1xr?VQ1j}7QH=+%l1Z-hAzPLg2VmHZg;-rTlC-p<)XpLQ*L6v;*Gl(o z9+!ak_F!!GBiOJmT>X<$r!LB0Yeuu5uj~9gMTc2UCG-4BrtsmO>fxW zVVJiJWlOR5Ue^N+2n?v^0E8uIGbyxn5cGa}vCoY<@p)ea&~ z!JQ)Jp1AWQAN@r!ANu~v^83*kUY~FZ4YV~~0+N+Tve%5Js}=%yb-K3^(L>%5a_qj0 zA!#zxhPWE`1xcEm@r~z}cLd0m=ekRtVA!*JsJD7!tN#V_l}>N($9%mEJQ;uacua;NEMA75=9}o+;oDMH;0(t8Vi#xH~ zcUU3Xl?9!_ZEpGtXMUez2Lzqpa2a4y*W+Uw!dC>#1_S?w$Kfw#x}2K<06nzw(&YLb zKh?dPf!a!)nBXf<@Qkj$>*zl3p#ySd>p+MRoJza=+a}}y9}`OZ=|=SJ%r)LJ;JD_O zCvCq3P$1?}1tIHq{_PP*|B%^a=($q1iDoSzzYWzb`tk9jxSXdi*vH0OP!}9MuzxU! zLPP2{1?enq9YfE5y=t{3lH7k|;Ga{r#%JGzlq!;LAH8hh@}qy?xS+CW88}n?Vp}>0 z);BesIv8KzY)hihc))#|_=_c&sG4}Ac7laA-E(DvpA-uu5jz7?bKPRODaKK+)E0s> z&kt-poxX6wiKT~8)v3GqOr*R8uy8orYzZNe04WwALpzr{O~gUZCEkHa*aWGIVUg&k zZeSsaxbzt9JuXIN=Y&=JpBw>wG;l=mjg?@R|I916q=_!YTK61sAd$_B5|wj+74B>; zO@8{55FxSXP04=*p=MOoxjmqv6#e0&W=wMT&rIAyii8m8vkKrLjd6{&{}M7GNV4$I z%jnaO$vbI%8&>nqE=B(0au-EnTNb(M!!X-%wH;?YVylWp#4)TI5VM*$G2-5R<|K0Q ziU+@0gc^{g_x}h|pRnpWGId??l{Lkjr`iX;8{8ZGT3@bxat(JsCtEnaX7RYoqzKE3 zSiGXFNSvuZK>)YIH^P+L@a#m;MqNsU+%Fxf(XQdjB=L&*SicU+{aTpEd`r z-g*Ch^RKS&CQz#u;IlS-!jRu*_pEvUKWjw*CuEU#CuHy}vq_?J(6 z++=Y*n?qThmBfKqCfgyhnWUO8v+e14lJQJe86Dw`eWN!h%A(C#LK%zbDl4~kn>9M; z!GU;CKJKXz84iHUz$Y(Bzu#~)jwj3~Rf-sjZsC|`bbK0faho~IoCk>8zc1_q>jXs_qSswt7R#^rojD{KxT-ssd=_xgT zi&Rv0aRZA+uiUz5>ckbNOVrX18aMFz9stn4%NVO)TwA$1<}%%c9Vy8LU6&XrSEZ)g zWNQs{nr01b0J@x`$}NQgio#*~0=3os9TUTn2UytkFakl%whfgGVs=Huzv;LYcB~!|WF4gQx9kAh(YC0n?-LLBn+F=0WR&||f z`bnOSpxK#hK$_o3>lL%;WG#!1k%LAG%aknfvn$Y2u0O};Le`8Fe&)1H6OnX;pRN0L z^8%o7Me|h$7}f+qm1}ZW!nCL{#Ep^R_3TQb{nVcbg~MQkqTEbA_vv9?4yma4feU#y zygdx?Wuiz~Zg7^7_6mT8MLin8fJf5OHcAt&!_ zHW{w{7R~vA(m6;(#FjZ;m8W=e#@+F2Wz{^S=nI8CEP{u6xidVqm(LBr$!K- zP|>}2?PEQoe%a+Tnhl;nMK7~RXP@HnSd?OdNBRy)7V0+za?dfah=0slOc(oot=)3`Gg`K&a zinq=&N_$F{sH)4)$88|4VPTX3%ZTnEJpxup6buV)$i^@49LA<}>fe#F)JhLU6=4(9;0+kT_XF<3VIco;|X8j~$%jwvWh zO*R@jKyJpV2`Wgc=GiM!B?bh#j=+tEgz{`DUPqJe^vR{@LQ-Y!NddUg#5zh7ZKTq=Bn`gKb`}akDXYH*?A)gMjlR!iD5c9ax zr>onl->O87eIdWG%TA2dxB}8V9{P!jFHfZfs$x9WX?h(p;Ju2y+)OI)vL^x$tg`Q7 zM#>U+0)YOJ>dmaAcYDr$@7i#nEB=?0h-IT`pffZbZ%Qk(xK18A*z;=%s^^wA>cpC{ zuRca$)T_vlmT&=}X;9_nay4MH6hG#wKz-93nk#hU=IWIexrQAftQA;qMA=;D@4P@g z6gjv@tA^R)n%0WKtKF=2-NKkfsjO@QMQc@n#{#qkxWd0%rzJ*n*Cp#H2z5~-R&pHz zrJOyTST8h~=OhEAZ4Y2feQ}q=iq(~4Wy6&tezCi+oXtd?LNz{RG;)qSI`Ag z?05r#1XcRie-ZDWzvMW=q>%Nj?2|0mLJcuci{tdYOx|FcWK=LS4460Xmqr~IKMHuft9rD@8OB95NW=jaV!=97vtjRbISUBPH*RBap3ApTrka?uOKQAkbv zyobf)s|}{m2F&cJ&5YL>`r-D%+xa;l(|g}@-lf^$rHa`{+kpR$m{E?t_G{ms zAHJ{@zyz)!MBb#onG7*MfHGH8h?)9O^oFr;L_pE{4|N^5bp^o$I(mQs8rBWU*lDcU z`u5WYYYszqRGTL{UG}pB8CT${PGbivGNE+%5;9T_?S*UQzTo5`(A0=`aAIMc~)v ze^%`;J`ZNXH3#@HhOsy2Dl5_ny`tE~2$G*>B^@p(zM^|9poAbNn{Nes(BVdsnL(T@ zee-!$<;)*;ByFS;zA*&GuKt4&NU4u3&mgz}Ezv3)`Ftvb1 z>mTV)Vq(`)d+BKgG}hOEOsMZt2-V9hov3Y|f?Z~DIOr~)#c=DGYu2y;b5I#>2U#Ne z^Gh)kff{_#F5K##QpPF=jGeQq8NFU|lXji!7tO8OksORZoQmyUH;$MHE;bKr)PZ@` zF|-9vPP8T2s2$#E<}X=dk(&e)EESB}J%pL?6oYR3hn9?=U}tam$gezdE1?kGBk@NB za}qe8ezsVD?~do)R-c6UaLYG;@V?B6NJLw|wzOAK+pAccx-ZaJ;O|GK_QO8*Vq}l8 zd2^-D78UYcN6VH3z^k8fu#$WiVzN2GcAuYjX3e1`4u=;-#AH1@G_$+fCfjRKYs;*x zn5J`HQg?61>kfriW1I(LTt;GC$6^SM*v(1o?l1O;6niF#y)wk!`C^|EF~3^u+bH&H z6Hn+A`(GCa42lCs#1qHF0#0m@Q*5w*Y)E9RFex@PBX&G2KQ_E1R=|l7wRmqCI5BB3 zrV1L4U@~oe*W~uYv9AHAgW{=A@T6@`pDyMHA7SXic%(w*Mp+C{8&i5#JY#a|6&mBd z&C&^`c)*P7-aPFt6t^|U6}X5!lQT76O!4X|OTuz90g@dRM|Q`ijd`1?tg*N54*av$ zl?uz=OL@t}Hk%D>dda)&P^A9KE5b9Y`mnhanB@A}>n57XoiFsduYWi_H_^<~USq>TGVBp+ zf%z6PakCXdAAsu~5O{xfbAs8+=EU50Tg5AU8&jxjhOL>Ose`m@Iq$ZzSRq>k-{#x% zS9eW4UE+B+@2HJ6wY`%6MSJbXYEPC{fg70I;Sjdk#99r&_V0D6-bty{^flMGT1C`C z1vlYaOn!Y?urFO?W8MLoEE4{yDG+-~#-ZR-!uh2Aq3oU!Wj(v{p?*XXtFf2KuY zutNI-_zQu*sek_h@4x>?TGaoG>*)XCEC2uY-;M+SJTL&*zyfTAUM6Uuf{rQZkAf~H z=!Sw;C}>!M#wX}yf;K1Ut%ANOXrQvS;$1iPXG$WSc&z;7d=p%llAfBGEzQf$P0C72 zO_S$j<@R3Iw;tC73Pp$8G^OR0!IGj;WB0peQdtm+vj?)m?Ys@@ncegcHB7lq$%VlcbO@6gshZQDU;UyMy2ons#kUAN6Et zh>VCV$jhx)s;&GzrCE|hd2Vu|q(-HNe5Ht}$Y&!%eFM7GbZOtM!b*YAzZhm^WotEuHP4J4s`~njL|${FrY{(3IOEyNVRt80nD z?u6r#xI($Spg5QBFQTezhlU2#4fRR!NmNOBdIiDb@)}cBI#pQ048xaX3tu^7kVIenKk_tE8x?KD(%|yQh*W&&Y~QO-${(uD5c^ zy?MGPUt03aSlMoDPfV0H)u6; zbK8Gie9(^vop{h02#tJJR!+smCD8i^1ygpQmXJ(FKDHhp~OP7Eakh z|NZfAY3A--8{QifrxH|8lvSqV%Q~;Tb&5tT9;_6e4Qvd@K3=5@R1~5pc{<`YTxYQu zE5?2|Q_VBDoZmS11=0OA%cb++Z?+Ya!K|2s(swKd?SDEO|D(MJ|J5G!6hf8(v?@a5 zAhaq%`9X6bG$TU$AXFpNBvfESLnHjw;md|k0a_B>-94cip+w=!hT?2)Qj6nBp1bhs z@wU$6MRHYbN`g?^))GgO@a-s076lTV%7T^!G8v!ml$0QgiX%4^$@2Sd1yafa zInRkzRn?}HQyU=vx>*Gw0xMvV?^stI6;}!737u-w}lDfBEra$oBog~&{^~E z`EtIqqo7C*Er1asp}PwohPT0$``5trXfWVP4&na|Q^KfCp2hD*bh%w&e6MKS}@t|8h^)N)i)_WR-n|6!b?X z%Xv?3zUO&!1Ct_aRVALm0+_DX)~trk%gPM|%;9To)^@fGpKR`dp@3C&YHv>w1TMfZ zx#W}tbzN;BiNEgA8b>-in$@SZJ$*d_7c#%0N}ZgO4ZWVP{~nfR7Qqa^^khk8{vdSC z{#Q0>Y5&Tvxw#SQ6DqT*sRe2e>I#;P|7bN1x)L)p|FykB9YUimlo`}2lr9uuX=%}a zY>ONy@4US1f3=qn{&@Va_AW49FdRHZL{qo&cMiY)FXQ4U=0AO2Ld_dj+727`Ic&Q2 zAi0iVb#ji6grIMD5qNnauAs^R=iSWQ`^PhWV*Yt`#|-`V-$WoEp8ex^<&CQnd+P#5 zkJJ)B71L?{ZL05|U!eZaNXR_!5DE|nTj3D{l?7D>s~uDvd{OX~LiIt3!4e4TB9s`c zd}47Ntb$N+P@z{Z_Xhe2@^WPQQmUvZ2{IiZm4g$-&&ib~CJ56qq{03IZ+}5rPNZL; zp!INDRYfiQX%bG{ws!4FV|!hFHLQgtRAseJE$}D!{zTnz^@21>T}`dO6IUcA&yuTL~ zGk8A0W4)zW>%f)PG^@o?2{i>Jt!*vvoDs(-C=)XrqHLB?Uz?h#Kkc?uDh%JAse$oLU;&GBS&D3v){; zxw#dKYtE``s4pljYH6zHmW>Z(!c21+s$&+$9JpbUhqRiYnO?h^E zHPnkfm~wF9I=B#NvTXiMs-jMv5tRxr6Nx#s@|%4BFg_G!TySbpK})ok&xQj z)YI45tIQvSw~DL%@2_i(*IPQS_P4Yi?~%6;6&1+fQ3G#O&=Osz=~Qaeg{l%3jRo%+ zNl{#=GI+xOr)YUXl@%A~Lp8y25Feie1qJ1klam2e2Fn{v*kve+5_oK7aU6@l#-CUnZ|hR(G!j!;}2^ z6J5`)vS#;v7ao`qul(R7PfAyLTrPbR|8dT=KyY>UYX>7{n3)OaPiO=srM~S%==V-6 zH58~LQRBN!OaGer_yRWarOWZkdxf}^eK|lfI?Fjy`M&~xqQMg|6WI!17StB3gz#m( zd-ooS50=ERFd=l>!&;};>!Aw&t4k<8c%szQ{96^_trdzA$``&Y_=JXse}zhgg%qk8 z>UihQ>Z@0;!)F5@;gctW|NJus>neO6P}cBi!Dk7JDlEDGz2(A(1RofD-tfUd!#`9x zbnL@w4C^qIK76ilO`yBG=i|rs!6JUk$)4Qe{5q8y{`CI-I2a`mv~;w<3y-#;O;wm` z62>Qm`QEnNldbi*3yim9ox9vyRZ*W2m)hIVtM69BH*8p^Wtdrr2j zw6YxDqcVy!7!KTL-G;*Q5|Nl6C6?4Qc07AMoa7gokyzBz(IHLAXl)o;ke3Z_r{_Ag zIf;#@`v>!~lX!$vRbt7=X=<>)H%i36DW|gY%HjK{AW>R0q=9%IZvmfh5SA3>mX^y@ zIjTOrAvry1Q`hr=%yO2#YTBX5{+qG{-2lc%j@E&Lw9sb++{@I&yZ-V2%W#t#PwA}2Km#0RE zBh{^KR1pO)x93jFlOhtdr?1;uNeLFAqS_W@%Kjc2u5PHWIjkzllLU+7PPTRs{+v2W zwIDm8vN0Q8AYZ>6C2_K*LDk*gGSZ@#%OTZTdTD_I*~A`sC7t16-mo;YwDWEbut-A5LKXfi!T-Bd)}RB5&2|(1lgfH!7ZHA5ZuuYJ&zy$$zs~v(@TV?&`klqJ z{h~Fm2ftEzU7!o&jL^WJn^1?Q4-%@|nmb2)7vAgdO;NHi7T{1@yT>a-+-#o8Xb@xy#_>Q++`%b+{)w47FFVK>;Jf97h22i>fCGP5>dhq(x* z2kK(tOi;IoBAxtcNo8IbEU#)553e^sv@a0j)w zOc0(?H!~=nof2h@8g?;Qe0_IKcsZnlc&SJoCq6J6L5Xa`E)xdJ=f&5~%P0zQ7+XWI zCyecx1^?%{sEJ55q!z<~#l=ymNUuO;VGDMfb{{j`;xOt}x1v!_7*ZcpJ^!$HEO(v4 z#By|x4&8a!&(b`22|5)12ucL_uMG%;;VmLvVyy`re8P|$r6>T1CTO% zW4D%C)OIrFbE7H)`K&YO*k(?~E;DGOEoMB>VFSJ!P@g z=dn|3Yi}DoSe$f$*vvD-C|>(*aq1izldIa*KWENA7SRGg#;{~tr6ebS9J8EZufa+9 z6C9T!KYbO=s-p`_Br$X>!SH%JclssRiXD_HF)%1AV@jFFCrJ++R?jt6pOK20wu1AY zUSV(7P(#)LFXQ-j3Svy~fgOMU?s88V`X8k57yDb9araBlYrZs8w0oa_?PtT0!oCW$v9ykVGfj-A_QQCzr3o?D-UJffO@o zr@Yw4>l~>HVOIk>O{)04pXc>8O^pRY_FouW4e3y0e1QXo8xY$fDF!!QSOqGj(8?;g zVz!Q%VYGkMC`Fuxb!fayVK4QCPA$09Zd96UUhPTA+jcUapqMa_fGyEs0wXk&Q*=k1 zq>}>R_keIUgSbb=wrijKAwC+$52QhKh@5aW?}&Mnf-9JV1~6fmVtF5;IH@7~=#>gq zFkS`+IVsC_#{esGypvw9V=!TUZ>EHAU;FwSLDtVv5~7S#NufCY5ED_r!T2085dkJ2 zdK!ZabUTn@V(I6wIr|!&NvYX!szVN`(=z;f0aieujNx4vJN;3@^mFy-AV5Ou0cU{` zIPi}Lzc@!>LIGlWU7d6Hf$uE4=N7yHYGL%uE{LeLVD~`WKzglkI@k4Ra_Gdvg$NDk zDSCDRVVT=?J%>PMHH98H*OESeM$fJisUgLsbHZJ}gEOpl^tUNzwq@B}8@L?t@q}te zTei=P2Uiz-JXwFEEhqfigPR*Zo>H3~%bhmkVPC_?cFoLVFq-b+y>lOb(C#>vzr@`} zF-{bpUZ-%da69?vv0u-b)Fm@k6|6|VOi#;?sjVznau@P3xT(6+@e9=f7Q z$M9cp;%eJ^dTQ+n_Qw?iC5BJ=n*u_jKi;Oy^S_eR&IcxSXDBl*^;NO?t#vZ~tKjd! ztbRbu6I- z*#nZVxuM)u9}@qpBgPp zRn!1vC($#fp>{oez%uSZv%8de{}7U_SsmD>+~=2NGZ$xbo^@3)1Gs~c;U8`0+vsCy1SGXben zI?yPZrzqw+T$Q6;?*-2f>X@lAq-2pg*%L04@Fc73^afXfoV-0-=g%Slnx%-jA16Q+ z)e8x<(F4H2F;RXAuRw&kCy<_h?r+k zm?zILw<8dxCrvt-{X+yAgTHk2H>k{su4r3>;+23(o{~k<2?Dz~OHK2|yEZLO&cJIl zbgoRtf^nSt%hc|hgSw(W29-J1lE7J`z?=d;98+o5q2%1B*=oc*|4-nUt7At3w70l_TKid9z)0CF91zm^7FObc zh^{OjS8wvt5<8~Z22-G?82u~&g}XD@6guMLX{NI90|n0HMjx7&DL#3EdZXkFGSLt* zPXlI6L#3x&!U&YEqBuGrd6^B9OFJwvZ!Lh4U(Pz8Kr-^85@iFVpa?S^_g>L<#WFyF z_(-w#TGSLr5-K+aFGnqP8^a}=nYF039{o4*K{*>@4+w3EgRat2u#v&XV(&_3^e&FP zvV2Jl;;u%mWHXPy1)h>pXEm~Sc24}sE#6wx)EF=2K{plBJMf|cxQWkKfzaqeNrRSvr^s14QRxr8m8=35v)o2ifuw@PcGCg=5 zmegx`;V_^}QT(oN!#vARM#SIfY%2?H7ozrpDZy%#AG_oGgHt?=V0!F^Nmr)rtzXU4 zp}*8d*vR(3dIs#&D{Vz{JSE|eb5JuqDr7o-mLfjd)RR{%lGo14-~!~nm6reu)bF!U zK}RJL0I<99sEZ2hO||zh&hj)O>$|O1&Jl+~B8C8)p#OK(;qz$=3(YEsdJr1iK1<+j z!(!#p%AMnLkifee*fAddGB@E=w7O5U@hMT3v)tf@&~Ld+p}SNyDYrGp1QY9)(wFhPoM$<9B=+MsTKhy zc@rdIZ@cWiNYL?D)}OQ>`=fxH*vO?OJy`awizQF=C*q)oU?ap2_ZZWI=_e6Hwv{~_ zgaWTEEvV{<)h>@LPvfj$W09b5o`V6n%CgK}TFbgEY_wjM?kZQ+#EAmCl&o*R@?J#! z>0M^)mV9SkZpFf)1xJb-mc)f+%l)!rD)5`jA{Za>xZ z=M;^gE{o>9D5;`Um6tK$y}M(%a+677sl(B-a~lICya#IoW_SY^qeJ{N*X?tT{yevJ zM+|mZb2L(TwASIMy6EV+*A}0MSyfe2Vd(PzVC>DqVr>8T@AJH_*_)bao2Gr*r`5EN zq^3oZFeM4yOevBu2wBoKQ#2ALLPCZ@DU5_)_KnF@Av%s9LMu_ zN5@e|b6uV1=kt2MUz0zx{6yyFJluIngXb*aFQU>89c&>{$G2s=!1Werq20n& z`ffZKl5B+~WW)2(#}h4AFAC-U`67~1vHaiyo^s7U+5Fz;kShl?BFpC~{L{P`U^%X2THdqsK%3Tb2qbeJki=cKD3PJ^I*4|A*=kW#p+VS=PZP9RF zFvgb{;~+{h7VP#_CS+G*v1~AE|9HvK}vP4c1}A z=n5~S)LiEIXVh+70KaBIrtb9g2N++kN_z#$T-Z-S@gU7eKYd(~6o-OBvVNpdeAtJH z(1Vxo+R)E;`J8WI4WRhsfg}w34BT{prb0bzN>2#_A~1(I!bm%J$5pUtCO)beE;nj3 zs8$9)!~E;v-9A=;6eR>!T{s4o@54H~F*D6tp7PB2R{*ZQJK zv7G?g>j9$|()C5d*f`V+{dLe?4VUL&CihE7{tox$ny}LvgAyB+x!qem57j4yD9>_~ zAXwYlH97Sc@8UBj+(gIPmIcR$g)x-iLQ+`K05nL!MZ-*6v_x} zu=qjj-Ak+xU0bf*xX|ZUXqv(+IX8SoIPza#JI(SY*Y5w$+GcUimB{l5Kj%P1E!~`S zaVE-(KwLRbF$H%L0b|YPDj}FOb@Ps0V;8OMyb-j;LJQ7K#Oj(x22$|=wF8e0#x`L` z-xn`Bi19{Yi@%pyX=*-H4&zUp6!;5l9Wm}=9<-P22tlo0;*>{nfErg?*Oyp`7iL}F z5x_1{un7a37cG|qQ1MT*)meu?0v%C(LgHYXg z(m?OV;^|$66O$XZ>@B);AZwKM>zBRhlcxTe1i#Ly8NK(Pd-EErv!A?ie%i98vDPhp zlq}}s=h{F49^NKgW@AZ{dhvc7ARU{Q}hsTZ(;&A$JE4O{zNqz2g)=aYi< z_{+rxk8#~-{d_IO8+T@yxk&K0U2&srWp`r$sreJ99%J?59)fE@K@5gpy&D{Z?S%MO zx>=B<hF?3*(?6JM zCh*YfdKW<-F-Qq@mG!`))u9Po%tXWbgon02b9rorJ;-@7Co+c&R9ux%_zl>If%Yo! z(PG2zLw6nYQzF;U?W!YTPYuVw{H?%I`zhfh@L{LS3WPTw*I&i3dv$e`N_gopM9f^+ zgFe@nepphw+``c~uNH^wU#Y)c(zGg3@o$Pv*8i-m^1r`*6{gWLBPKUB%SWox$k(t( zZFHS-w+~ra$NdcCi%QlP`2<#}HJf>nJ6Q|eyBeD7VvEePN?JwoQERCD5YTCL=k>(; zr2XTA`!~(#DkLYQeVx1ytlcGYD%-%XI26-Jc01d{#;#7o8EH+tl@C7ta~4@y$JMvT z6kl+Rd;eluk3Qp4>B^AwT|EOcJ1ZJL_Lbgyd;a=lw*{|yAAXsw-8*WN`#+Bc=X5tr zIy&pWM_=dm9Lv6a!0^xGZ}WOjFZuN9zsKJf=-St?Jf`;!E$q9tb=d4Dy+0QB-`PLm z;Pn4~E_wg(#DdpP{`<8||LpQ6j~P#XFCTn!|LE+ePyVbN8hCm8;Ebn#3xEIk`swx4 zr-mYwevyhWqaeMAWS$~L!jyb{6wRel8qM%-(ML0HG~Q@njz~A*vu}RZ`l~*VQIRa( z&I1upRvxg%^N>i0E*J6-_ z(fUPz`L@M;t-(m7m5?o^tr-M8miBBdEj6gyWA!Xr6p6`D!cs=&X9Acp&ZT&56VP}i zlyAdDG9$^*Y)2|h2d+*m%=E;_Os#H@DZ58S6s1Z~0RQu`pnv!L9Rp-W0s4bv#{78Q z9c!^GwC7Z^xx|=)9TIoHIs`Xq!x8?QAAW?!JZDVhCQoi zG|r$YoG6Uwo^BH9XW{i?RER1ebLN96lsx1Q$=BMa&Vl3*OUWLxPZe*E8Kpo)F^YdA zaPN$6dGpd`xZS*mXTB{*nF&mq(P-(e2QFKDwmkH@slsv(mPQ9XdNcn^fXyt!mCUj> zLG||z)!GvBhIWeE2qE#d;$tFDPP=u5hh^7(p6$qdH2={a%LLs)lKPvc6KoT(MIX-% zWlXDU+T@e|mN{N5N@s)!GBCl|wnJo#cqC5;IYL?b@#v zGu5Mr#111^?nG1xE}C8K{VFO^18wAvHE!%FLmqN^K<8^22uJ z%3-lMj!HA)!UqO6?4s;{nc%Zk_C=_Rhmgd867qx9f>a3VHD3UHoq>S7z;&4v-IE*y6XmVWgr^$ zBj{srWAtqt-6oRH9h@wkOr9k!X1;gDm=X;h&Xd`$)#FB;fRw41(_1AZ`P``eBt!*s zk5O#&cfoj}%rahw2UkTIdsJVQJZm3I&aOu3))od+3}k6-An})8ogATcmU3u%U6P9$R)^hvO)H(q?`6 zyT1niA#RUkXk?5^fCevjBFD336pQ=h05w5P6xCau6`_Qoh9p$UEmwhJ4^(^-gz8Yj z?_oY{SyS(2uqSg4iH-6cb{fJtfQSE5_0qzwL#}iI#hI(2qCQjui=@F&3N{O}WtdVo z*`Upu5ez_!$vsjaKPn+?v|zVl=bz|f|G+4W0KDwpibFoUE--U!Ym5oW)2cZ^f+bWqMa z%a4hgf@UtJ0u5ytVeK=Q*n%s9K!^}TrmMifwkwXm_dl{5sh8tQLgAZ|I$10>uVQTH zv80+GIfSh2Ki(Fh^~@Es1^)~VH|R-K4epc(wQSzcix{ZV&>eU(#wrylJV1pn;E4;9AJz$~GATBo$5hS3Pu?6&3bHj{ zod(E$wCssfHnXy)?x*mzz!>AnEW1U}qv!h92|Ir9(LceKxm;NBPt-h8`=G$L~hFf%+pd|Haq=LEx>Bs&|ny3go6|HGAzOvdB0d znq>jNDUi{eHIPy+IaYfmRraTC_`FS$Lu53QdD3*v!a_`D=rs%6cHZQy;!#|Nh*`Ek zR-W_C%kYZ}=u@ThEZJ+17p=L52TjAt6F1_n?6j$|6O%JX0W7^P%2+-1baU=nM`Ipj zbofG(tY*mKM;WhL2`pOg=Khf8flL7o)tdc*@k32pmH^ssEi@G+Z1<6jHDmIy;GyOz zV^z?!@+|h7#%J&zTC7XqfvQFg^Ki{zVJxxLkv0Mxh`^}j8&0@=8u-}sSB@kR6k7;R zAL)1m6abZ~CnV1LETrp(T@)xLlES4^CM=j$NNNv@q`9=>#QuCG^~Pg|J*=z6b3gzu zHLB^kB{S>FsH$b*Z@xPLozsRwu26&tHto0(?~0iz2;*~~Lywi5`zn+f!XKyYW8YYH z&8y0TMsa12TF1QrY+sJ7a_1|_Ic|%{GTV$aL;Hx~k^8;QJuEX@pq#z)kXP1X+wa!T z|J1CykQ@H&{Er*YcbNrgPB~m$A1$4<>*AdmhSQ5K+*Otan;qM9IsU>W!G*umBHwjh zSny_B?~ip9SG%v?Mr1o=r{AC!UZ@n<-~MuzmS5A{ZqHaGs%}_M4ccvpTEE@2#^g8i z+nnlysJExHl+KQ9(Q5`8%gn048SC?SeWj6)?a;%rFD~t*PN0sr*;!DH>?3b%MRmuj z8$nr9JQzD%bgAC{MaCY=preXU{Pd4%R+ljg4*tzBrvpY%Bi)Z_Y6zh_?zl#H%WGJw zqrN1*T4(CjWKWlLuy+uFJ~FCGMrK5DDiwvo*w{;FpAEl6NshhutaRA3bHj$m#&nh0 z&fL>g8~g3y?!kqoJu7XWoUt9-R*p%UPMJo;q{I$uXU64QjrAHis>QFhEPAz&C~RPk z`+W{)`^aYk-5gbFSE+TCjMTGkgp8o3!DEenU!!6VG^j@Gg+K^Ro&)o$wryMZ8xDav zFTjQ}8dDEGX3d0nv3FjFEr;7+2wnkf?u@QFM#!cD%lOcqVo2!+9|xRF z1v2Uo@1|!h9xpKD!VY$)wW)V%^htdMsE~s>P8%#0`;oxHR_AZ6C02X;E$t(?sEC;- zyY;1%LIVyfciX6;E?P#fM|E8Zwp#G*4nW3HD+N4KXR8BtSr(g2HCbd0a{)z?N!Ykp}8C z1W5>M+m1CYf-LT>q5@gTFY5iNvUB$U1$f#H5zHRv4tABIm2s6BX2c~Z`l!{NK$9Fu zY2CJU3gB=Fjs$R!x$TfeEks^h2TO%t{Z2ZKHr}kj%E(n=#jP*uIbo)R?ZRv3Y8g|f zE*h#iwvG;GfCPVc)$Z7t#D!xM*EbUf z<&8E4L?+1;6o5)oFUjd{^Lhw%A^*N-ZsWtjG2W)AV?YmT3kci#M6dOgNk2*CoV^!IGhVCMLqH%Pg8|c)?#Sj{%227AB3F*h$no$f{=M|U&8I*V@5wu z+{O{BS1E?q$OFxW087-v3r3yDE&uoeDoW0v(-&WnoX;<_BrJ#aF{P)LR2vn(7=2*5 ztV;&>HlGBYz(fdb)K`|iEYH{nJ7v)AAL!}@EcHjahbL~%fMIS5Qv7I|l)waDc@2PG z?_tjUcX#k(Dz{WZ7VMKZe#rn?l>~`B{@aQ$+99hAVL*D5%HqoK zdKoDmlmy8ryA{+bnZAL!&j)hT{OaGz()JYyNA_T-_>@F>+T(x!B)mci`MD#2UpD-0dK74(==Ji;ll8QaML8g>86f4au>in*h78`fD4F|I2*Rw*vMKU{w9$L5{l*qK33=mAdz zKc38PQvL1|Meo{SY@vD%D`vmHcUxxdYv;&M(M7oF9`C58zqLEmzWaB1$E`O{jrZyX z%-7SmX{f!CrVbfqei`QHjS|yEpH|-d?;rYv=GJ$eyZ0w$kVrbqlxpkg>#l9laNIZ2 z>v+)?QCAezyomLW8#K3vKev6d!JHW*XA?7yt+UjnGLJ}HU3X$!Xoh9LZ>29TN_?Ai zoD@lbd(<&$qv4Uui|>okON7|nNi{~B)=|$NNv&9&7ys@}a~z~rjXfGns#skXqYFNq zWNtbmSQi|ta^Vmx;l{i0VQj+ee+u?Frnr#GW!u552 zN7F!d!%kA#T~ZohZVFUOwqwL4nlc-O-_fV{-rabvzwf%GZs)UL)9z`ryeo~ji-E1wgC*qZ7s?(Y zQI=Rd#`r8Z=Kw?1SDYjx7X+A%gl0odKOU(NLlWT+Z+NEC`oZkCXNz(U(WFhAM_3!i zu5`5$!$ssvsNZ_?FJeqKuvW;vG8v}*;Da5!F>tiASZH{@PyDAJaAD?@%KF{Fl9*#& zzl)o*^;yr6^e|$F1l3&)pL90_s(K0wni>6kn;c-lKYsNmRkj&esMduvfLYE7ARe$< zp_L@pSQkLmM$MS+`%*r8b$+0+5Ls*|hnUHR@3P;2`P%h;-l41a?CZUF?l=gYdx}DY z1-dCr3kfi9y5@}5uUJIY%g!UUqr+o?Qa+}6IvGJ z-pVbr>3MHF4pq*`Se?0!D?p>e%V{p_4}6Y3nd}E8J(Q}WdzVZxlqOGo5G&g(ceUYy zmzU|8b9Ru~GJD(O##0a4^p9Y28z`Db7y!wO;A%Fwyz!W6k0)wh{rtuF7Sr)Q^jQ0r zVXA<0_BIt(L9}=$cka3#;p|xmZatz>3g&ZYAb113zm}LBaTdheGYR6duj0hFjysD8 z7Mp0BB&%KlyPOWAA`#0pa~7}Dy7N`?;9)XoDjIsQ^aWufB{(^@!jC6sWFNLrK>Tj& zWp^2!N1L*L=0iTvmCTeqPqE~0w}!LIUY6eV10R1A`P~jwEl_m(nWr5Z^KQX?3ZSR$ z8$Jda^QD}62is)Gp`A5^J8ua&Ufg`rR_A3{t>`w>+R=r3$^HCAUoy|Gs2Cb7wPt%a zo>gD|z(5pAa_nLAG#?uA>BGi*GcG?U@6Y&80si$&UAF>72qCw1_~zrlibkxe2ezVm zlX_z2IltT^@cr{-4lUUNxLfD=fHWen&F|~1L$FXT($|w;T&BIn6k6hU@VdaS# zD^D(1d8%k->!y{b_pEF?y7J70m1l3SJoofhEA?VqWX-96J60)QlGU#k9f(XUC&n=L ziki+|{LWpM_NDW1`ob-*u9p7Bs-Th9A-)1o-KtN%u7?`%qH@G!M$6ocmFqlwJvP5s zHTITo?#j7yw_H(b`YP zDQju$yl%GF7XE{#sYX9voSM-8K<)6yUc!#SFVLOydK9KSP+nw{so?8B9qKu@{M3Qo zciS@}IG!o*Z_GAyTq)-S=5==JSr@xu(bf68%1<=E?85%gB}8=b1-c=nQa2f0BF|vi zt*wpL&*PX!XWy%NGXZB%O^5EZM$LSInKDVgAAc9ck^enm{Bylv=J3IOC)-ZF_G|0f zGv=8h^c}{b^#b(RlXToQH+}?0GwifOb!mc5wg#TMtc<1xG%bk% z{+9|-^_#&>DQAkS(R|YVu!hBSTqWqhe1)Lh$hXh@)pBl?w0%e6qwf18$U8}FTtgR& zFs_7nz5JhSHnFGT(a8?LN3bN-rbUm6nH6y}C;v_4dp6krIDVTJzEnkE_Lo%A&^K2x zx#7gxOG$KUqWT@ptVvn7_WvdFNdTqN%s}-2CGy|D|DV?uaqwMTT?n8@DE#l=zY#Z& zGBOCJNANx3<`EW;;CqC~cXxLqJ|4042-ZhbJ>vKgWRC#)SFidIk&kG8MCv2HA3^qr z=?@DFM`%7G`v(UH5yy|1dqm+QDjJdZCLgCBaQ%IE&9<}Z1N8`+*JxGwxkQdMD?c;7 zuBqw3w!T@JX@a1{=!7gAP7p%U-7~e(>4|aTcww?ddRCSVg(nE&D{>R1^Chkw#G&`< zo+sM$lq{m91kw5Fnc~6UgTj2FQlU&u{h!WO=p(p(MUbDB6XNXC-K8Ze)1~QlZ+qV> z6jeQMd!*?-$P(qw)A%_1pi2F&Zf(uUI)RUH=_*OAP;AF%zU>=KnV&K%Rg$|(%JbpJ zx`(Hxi-z8xWg?XSymoqYW#_g|VK`sCt!Y+zY;|>gY@Ar=$EMK)92;7-QdL)9WtJ&y z*7mfhn|O9KVGzH&yHnRc6rK<-3JR~QQ}bK}LK9I}S5H$*idhq|-vQr7%< z`D*3e^OsNw{;l(>vj^&t(^so)EtsFfB(c*oSDjb4n6V{w+f?)GbS*8eAwe@u72kmR4*+j*=O5&1FW&&DU$c5dNMJe2<9SlyUy z0#vF0@U!C>rsphe@3rFxZ_C`qHYqA}9Z2oCMee#BKm~=v=I>6JwEsr&FzY9~ARrZk zKZnZfADh-r**@FpPSpW!I&raJu)D${+Sp~%Q&UZkhy)`TBnnZ zDlu^zjPSYRT(SnY@B;PH*2Vv9=O*?R03L~;SZ48ChmeMGw0J z-KIH`bb&;IlOGtn5L{lyo^q0Z$Mc#agPEmdidjpiN=KBK1p1X2s??A6uA{Jp?_-pz zIQmp20Cahw9Y?(m!;7Xz>a24p7Ll*I3 z=z&~;h|=j93s8wsYdd)uvqx9P|6txuwrUbb8y~0u_(EF$i}s16o=e*0ocG1DSwUy7 zKCkfHDlLZo{X-($i?3|o5b(P=3OWgNFQPqN_0J+4OHluO{5H>IfR_k5B1!2$MluXe zd}@?BUqYlz9RqOUCr#=MW>MbWp@DFzCV~mr|3y;6*)w-jy40MQp8_^UbLqbr#mHy8 z^&G|jeO#2~3inQlI}^<*L1l&%Rav2Pk!ex z+=7n`qJo0C=IvuEx>?kUF-r$4erok#q0`_j)YZa0?KawtEa_l|Ch}q$ofh1bfPfYx zw{;YU2s*&#`A5R`|E$*&Mqa3ehQ{mVwfEaK9XWH{tw-GsJw$ARiWE`#koM_FxENXp ziZR~_9zHy zq)3l&b`&F|wVj#=a3hs!q4)J&e{J@$3e^(iLu+TGN)R8T!ZU`a&;ES%G}}{L=uXTS zWUz}(1pHyHV;nO%rQ68vb&H1$X_(WMvZnUeK65>z9^`E6Fq241{kqFc4Ew)CwWZfN znsK3V77u(S$|V*GfZM4trc|KV(?+A%N%wj@oK0Ro^TryHsG8g=5~VdgK;^l`lvO-3 zLjB)4sO9S`B^bR*!ysv)Ia7zZi!*FSy49Hz8u|G%(D(sB@HkY0R&^D2(M;#*U3*1CITLGplJ@9pw&r(3fdGz zVPeDb#6^jy^Cgf@nt)q~{)?EeG1wVzGY>Ti6Olholu-p5?7z>|_^cpcd`Xw;0W{R< zx+|T(&5Mlgj`noXU8OQnQ9=Mn4UcO%+Ie!3F9USb!<z;yoHSLS`WFUxLym^R-kp!edn2dz5-r_MXNxuU<>)%!`I6ZOQq3SEf0sbE|q z<$*0Ai@~G`S$# zi2$N9Pe02uu@nU6j0ppn6YG?LmN!TYgi7(h0J`&K42c$!>s1v0 z9Khg<2%GY1+)pAhPE%F&X2;@8v~xdX59pO7+6?58hM*g)i^d)>#}LEm||ul!qY|gppObVa1{&yipiI9?k5{a zfE4diY%R(L^nOhvh22>!;XOb$b+T9+XXJ{IC*DoKNnkU2b(pa_YLjYnJ_o_iuC1bd zi*pwlDMs(lk0r82VRBo=HIn(z=qM|R?M_q?P`pw^VFSE2l$Slv1I@fu3zOGM0J92^ zVzq>cMAIOgcX%90Jc6as!J`-)Jzk((f|z)glvtCf!bB#QJRKx~Fa^j=1!3Ty>L-ZPE?i^^_#Jh{JZ_-x3 zk=trSnB9weB$!lAA$@+EnU3TZGITie-TaN~VG(uIvDS$VLc6 z%h_xgtOd)L!Oh&|`(g9Tzgo) z%2i3V2~lg@12yosD>zuWiQWt^X5k(6ELVxxR^v6AgHJa^S$OK9@g&F=;lKN!uM`%T zV_zo&JL$-rQ8qi|rayU+3l&oX-N#vrw|KE}pxkINz@zaBe~Lf|0U08Uug3g`5J{Ob zDI4 z7(41G53ftZQ(FN;Zh9&PA9EbO8-)d+OoJ-fEoEkg3^Ni`-<@rKA$}Q)hqzxbl{8I z4%7E97^Z^fCktMBZd<;jCO!x=)$gGaUVoI(g%`w*lic4iLVG&ZMlk$sl7Mk&1(m%! zI&&1J1=%rdE_=5VTrOZk7XtGX0cY(l%ta!qFy)v|9vxTf8B|M!CB{1WyjIQ|dWM4l zK7POsZ{yrGot#IuIC+1X*o)nkT&rjw^?h;3;oy~xi?GXc;BI+jcN+BPEoffCANPp2 zH5!*$O*06vTB@CiBs#mpYL-jjr8Ty{l$8O`D(5T#Y1JZ{YaMOxGus=E$Hq6Wo`9`@7Ko<)HBQ*dM~HP|BR-^H9U6P_}p#g_Ogb}3o}OLOD4w5Ha*FH zZ5di^W4f&^?Bv%&-Pu`p?)$uMK6L(atzYaR;R6qDzT~r|g{jJ)Wd<>uoZSh6&O?&= zN70Wg8$-89@;Py9mzuls{6?(ETHc;f+JOyu)|sloLAjN2-68Y05R=rf#Yfg2U_l+W zcpKNJ?$F~h&e}59*VWO>FCRU(ee$0}b&aD1uOF=}OTsJ>UcNI1EIrcHu<|oyxxc&X zZ>SzYQb%9k{U9M=Jj#O*V9G@G>)?{E0Lgk>U3TY?TZZ~T_0jZN7@`I$7p!(Tv^EHe z)4mNi5`)<#Sn0pZEhN$rXW*d{kVgUy53z+&nAc@sM+DrD5u9>$??>}pJqXc48`UH~ z2~2Yzd8aO!EdmV9mNeVIUy}R-5PFHBF~DbztuUkG!$dfb=bqrr_7q|H|7PwSN-|es zp=|Fz8sMzT^O}U4iEyd6tc0{KX7mViy?81H&MB6n$C|8yxSr+97J93a0|jf%m5beV zn*%j#hiM~&#al2WXvH&sDX|DE++B$Q_DZ?{?|zYCEXCHk;urF<_x||ph4`O~0A2>X zV0_kcZ>cSGd4TC_u^T55kvW%yUg<%gmSP`nSdPna1z7?Of_y&(7V8h^er{#yd^z$^ zmH?;eHg+E`tF=Y%ZLIw9X(Oe}3NGLSERb0DM>0D|A39h|7$i7vg{dD=_6rW&IrZV9c#B_3&eiX^TKE6vL6Fh%LRb|{(J|1v5U=g7)uYg z^f_~+mp0FW+Y0dY0iLT%W+!glBha(hA=QL~!QXZHGImkH3hy^@TNQ zGs4El@J7LHhLmQ^zhrf&FQ0I*6kpk8i>JMW>NAim#k~b^(Mj)LVEL1Pwo_-ImkyM? z8hvGUeBu&J=fD2RmKg3Sa9Eh=Z_$b#fzq8t?an}d1pUTT9H`VdW$xeUF zORy|d1gJ{$%s99SpPqS)FN2KcuRzko17h1Lh)}%68Af zN0Qk^{=|k0_@Ow`@?!(iDKw?80PKBs?hXl^m#V)S-8$9G${!8oNw~S-g6Bl(nGsuj z*!UGswzvM|FiGJhCX}t;abyd$lR#hgH5S0LXRbJY547^xKQ+rv+OF(1gaf`{%R4HD z%s4FZ$nkw)4l1y47DiXY{T4iLt);iJ=tGiNVzo_W2Rzu&AcFe`fd_9-$SV|L!??Ul zW|HA7F>vSI_mqRaXSZBbFmXh_o&GE?!jTXnwvM^Sb+<7()YVmWCPW zPF~778Nv?42ijaEbErX>qZaz97d5&kr1J0p>A$16fy>u{o9z!AMm-A9 zfLp1)`nSo9B+N#i#b`%QqQ5}{bIE3Y+9FKrP*#DGZ3k#@mxKBMvl80qVkz+PO{WaK z^Q5yjhj6D}bsNh@vgCS)PuTToTd+oJ!z=%kT;J}S!{-J+;oO-fe@oQwV_AzseFQ-V zFCQv<(R}>wf4gQL-L>B{B`Isi{@Zs?aHI{py@``8Q^y}l;|zZA(YR%}v0=BjKgxk{ zR9M!MgFm-$I8UTorkYVTU`{e0R|BhJe|xsXV3EG=?bGoqOygz)CpP}WaH^9S%3%bVo z|MFhbN#8@SiF+P%pnc6uv$$7F`>F*mW z7*4&kbWxS>e-JKQ5Cs`wSe8SnJ;6;3UPY{PAI{UmJqlrndsyyJNlFaP`6D zkeldSkTkt;9PtAC6j+__3BT^FcIUzH9qu8jSB}Td8A~I5^tMv@W{_##dY(UV$?yj| zX9<)x(z%7y(rxkz8zVJr2!akdxQ}x5yRP%gPTz7ClnBCsKk>oAzcRNp&`Ixp`@2^@ z<_?rD!-5?-n#)J-!O>ky*=nrf6w4e%nHsS8wda=oIDNT3k-P9VPlBK83o%l9KklF5 zl!RZ93ET}55UO%;P$wVmfYp%8y1-If@uqKqp#V#Kyvh2)fW2X0H3=d&OJeNjJ70?E z>(5QT^0`;|k4utu?m-sn)pTTAqk`b8&bD9Vvqu*F2cL(TYUZTQ8$4+}q5dH@(A#r< zJPee4a^2LidJqLS@hc;MpYqm)T97n_vxtg0Xv56*Ia*3yyc^Zuaq#)*#p5sE3;z3M zAx8_0G%0iu2Bi3E*Ez;K%z?;8hH&L}Pg~73?}OIX%L{Bp&K3aoIQ_~;?Q!Mahx4W( zei79UnF^~DJgxv+cN9*aH_2a%xr+)oJdCD-d*>p?-fqNl+(azlE8!_S=w^`K2@&Dp zTgF}6gQ0PZx9VN}<*%8Wy=j5uFp?K!Kj=gy1Kn|=wFawSM$SxDulr|=}BNK6xZdEJzI zug2{fzT{)y!@yb!H$cd!Cpumy)!BVF1sQ;Xaja7Xt?fica?_L(^T(B$#*_g&mRhN~ z?{jmtC$e||%{&?iG}*O(+P@!@DyX(0mCOHaN+f&D+EpdUpp;duwj4IA_x}+2ZW9iq zKm45CwIlfdACVttU-A9ZO?fEh5ix~Q&bhdL*n-5FvFmNF@0f7mOy&$D>fMF~k!Nm4 z<$rwk?rkHS{`*Ir=g@WKUi&{QcY1zXIJC?;PGPP8`l4>YY$4Moyk8QD&DorRn`WUb z{1-;P(#0losFZA-fUs<8;MsnjZMcM3!;I;xFUE2;@v#;YQx=ZmOv@h_#hqEXFwSOf z%Rrpn;_ii`9aatwjOGkG44C_Kab(pRxV2LYHazO;B<(OADT zgP+F=3U@Ws`d_R|bPxI!u(&zsUV312kkj3Rj=@j!5)V`+Rz;Q2V?}#;BdlU3I?{8} z0AXN93nX{QQ)wyUQfI!(mlh$_$jlQ0bV--(GWXVDiF`PYp4&=HyzuRgB-sq(=gSXG z7sxOh@qVMdg+G7rO2|P<33jSC7p&cy_u-=o!yPCIL|xt(C7 zI6IN7`|F%a7y`|=qeTg=?SL{kAR&yLg`G0CJNIk)aaS$??^1!24F1}|Basq>rZW!n z;}PlmZOk({Z<(XTciIAJvn>P-{mJlPyNojaC}qX(*7b=_+Bf9WNy-Qx{f#OynPLCt?m3ONr_Fq zW^vcMX|agawje$&5Aa8_0}*afiOg3D86`kaMJpIzY}@zH!0ZbY7RHWuwR3$&DIFdC zGJ*udgdiC8 zBFwGMS(hilZZB6+%o;PT?)8E73k7S!cVxsLk(-w*cq^>yiN$HsNJhDagmJefKJQ24 zC<4dgWps&LhQ3HXf3Fk-=-Ko-329A629>0iF{*TAOVl*N*FvjSozg;qkaI$2S>~X`4>L$G^8#Z0;;Ay@zuyyJ74TUZo&}smj^CraTrh=<`VBcB&~Ifc zXotCK88=TyzW)MX`Y{t=4}oT98l%5R*pya=o3%nH=zvu8FbIT@oQq-sQsY#dXs2dL zii>)5XrD`v^Hg#xrH+J}B!HA#%;*F-iPvuIC9$-KuO!jfQ=;?4#Hs**2Z%lCS%lo! zM@JdPZfE`+=uA0;s$yE9!CeJeJtC6rkcg59Qb^|lTEFhSar0eVv#93~U}5ksi!dJi=9~ahafOUUxYNcvQ7B(%O0qHfT_UirtLUl$aUO zUlk(KWO}ecB$-DEk-A2Fngy-S0?Zrb7${SUt!V@_m$Xyct^?F}2Cdm$P|y$l4eLXV z5AFZO>ST1D2n4Hq8F|{VmMNOGMm-;lQSrZVon-Uy8%=bt2Dxnk3f1&i#XC#omQBcf z+WIsyc3Lr00>~a!)5w2K#R;pGfxkraXN+iJ*>s`Ccb<&qLlDK1EZn0pDlU)bNbM3e z4?~+FvoP5&`#?%emWCdntS}R^ojur5bmVdFNaJAvLxf(+#||&m?K4Py7RerL!Yfr2 za@A}yYaikLaVFUrweB$N9ytFpj7JwqO{9%Ngm0wV5FI&8XG2p#sR!yGyF5|u4*?55Ep-|li;29nRHjNyj?}i zfAGkMQ@ZL&QlO69SuVR|GL;BqSOlX)$Nl zl*vI-1;d9|%t-;aNL+%JnH(2FmtY^6A{OkOZ6VeOmXx1lx=Q7&I&kOT9|Xph_;Y+T zn8Ep?0-KKn(JO{h@4}1IROk#OAqVSDBCD8;LsFfvKx-6KoI(#O z&km8QQqUQp;Y{jq-R~xlIHmL@A=m#}h262mxm%*QZO1i_@jIvz#*q`HNGA!-?IJK*0Ysc&_^Ry$S?QxO=Bwm&?{M2(Nl*Xpwwm>}=m<>UNb2Gz8-6a{c{R=`MFmU*|3+PTe33?a zddIY?ebT3g6L0Bycz@D5{b!uMYAP5%%<1ebs!+8Fl)nW>!!>_gPfXsA(nb%5#s7F6 z^A2aHL(h2GC4uB{kyL}br^$v!oz$`!9xTCjM6-21H2PyJGpREA8VEV6Q_NP{+gcXA zgI1`h{aL$(sdJ;VgDUo(4=bwysz~D=wvJ9Pb;N2dF?=)Fe}=~FB;F2`KZ|#$9L{~% zP-}|Stkr+^GCgyk`oKXz+PZ38~nY?87bJhKb; zv42w#^R_+tH=6?C_e^ z=%%G@FQj?M-`N`L1*ON}Q|ov`p%Qvvj-Qn<>Yh`s#g$tHUNg--%z4CGPZ>=NG0{4- zVzwXxH}+FG1aID5R2E`8@&$MhO<`ua(fcRk@{>XwmHd>n$@C zLx~NnuY*{QJ0}IAv>M_*Ewp}^a?_8C;BpMa;t!bepe+wDAC{UFh{&P@3&Chc&u*JE z_$eA#$Ga8wgDH#MtkiH@txKi9jM3`Msh61(ymfm)^3JiN^U7H|ef!Jw$US?UQ`#q?yRn0Bl>KF&EORz_S>8mUd*j9eZ6p>_#pEVxP584b*U&Gc?%n z7~`=+wgh33h7f*_8$YSsdg9#Oa|{CM31pbm+pOv|L(S^0Ze~=$Ot}Ko5}tu-y6VKH zX`pZsG}0WzP$*B>MbB}j@`^n@I?%YaKKdCdnjOBuO#}Az3Gquo7|}LXPjf9YgH*dVfCO@9+D)-M+W) z@AmU2|LAJZ>$>)OKJJfuwZDp7E1f=mS4^;+!kc)jxdq1^PXUG5FdX{B8DSUWhHH>( zGV@xgqz+?=u+h(e$wn+x$0>6PUsA>y`&lrHk!XL+Oo`BHkK-o*HbYuAh!ykB!@fC_ z?$gsYNy+DBCA;0p-D8dYt{3wWvd9T9L^dBnV$d-bgC{m#aKdv9mp9gD4Li~KeNLY_ z>z07qzY6FpD~)9cUe;BV(-Sut?i+yKQU#Z3SMx^BW%H%d-59Frp<~qq9X90|U~Ch( z=X)3nv121(OE+LfA{KtqES<|&Kk`%K+Hch|oF8J2k?)_DQe?=aAAl{V!|XqNS2AN? zCV3%j84|nDBjj;`g&5h=Z9(HAW%0<>)3xJ55yCKuB*HeYAzQ%yq(~&kSZXRhnO%Ee z>zf)dOtO?83!gE?LW{jSbY`mpA(8ENQn^DZEmjKTr-qs*zu4|Fo*X9nCrNDX@%3dp@=wW~R!NFPjo%EHVvv6N)0-*wn=Ofpuz){9Tv`7)c&9OEOK-1@z^f?U(=Lj95OY7o7?wf|V>E`6DQPhl zL?S8}IQDcraM#;ky57KExzT0aS`ZcAePfujb&m9SH25*vT*Zr8qv zF38~+AA01mIXTiTAz1kgDmXof>G#kA;tO-G(#T46HCFzcQE}jYel>EqKd_*A&g}B~ zEix>i7RT^LM(6oLg*4fr$d2Duv>aBy=-yEE-Dvc>P@(kTc` z3NXo-?7c1B>S@)QaRnI&(a(S5bJw-ZhVb3UlxuN&n~u^VZQ4+TV%@crVe4B? zHeBet6(;rSr!o(9iMC$T*;qAih5<5+DaeZp)Y^nyU7t=r!!dx_@Uc?AXEN~2e-|+Qb9bx6 zXA0#~H?zq|hb3$uLy!b}w|NlA&wlMvzS{*tW7=5*zck zRQC2qmk4jG-4|m2D0xYyDDYNow;cdME&YEx6|8 zJ#}ZG^~>Pk&Km~F6DnSyo?#v5UmiXG@@8B6#<0rBvt0=W2A&R8;^Me{Tqz(=an3or z^d%=`qc^e}VeQBltVAR7A`hw=Z!q`2#KOHi!Rr-z} z_$z9OrA)l>i&cRZ&{Sncf*XiuSN6!kMWq;Q`uCt+$=)tvyTQ3H~gviCyMF#-=UQb_fVSab4y^V;K$bx2$B zU9upC#(8fgOJuSESunYf&s+Gjch~fy%$Nn10)!EG@4*AiiY;wzxxKq?j9If3;Q}H9 zL)oY(#AoOffynCNtv>lv6IKsIMO0Y|Dqv`rm?chctTq`)08*B z5}Go*SKo6CrOD=ptO2Iv-eS$*xpxJxmfbbsUZ4#(&3w4ZT!~QMkqmdw70>{gdo7z= zdiRBZBFCz)xDbaWc*Xrkaou~qa+a?AxP5`jQarzdHveoj`7rJS)$bzAmDh?It=56} z+s@MVAm(fp9n6|%<)Sy%oPOmSvF~gI(thiWD`qk1`uYodX8u38+P+z*v9=L_uf&E= zNqf(@Q?w68=VFUKrS2;quzMgYIbmZZh%!|Ii|+ks2ViOs7QGmNc%h{vsl5`QkyQ6f z$UBZpQWAzci{+Nr4PP@Y4VBl*kgI3SD1(B=2gg~FYZ6mwasHq4AA`3`UAKUTsN_=d z6R&&u^HHVLN^#yy-e^F!v(iQ$@=PDF2TUbq%E9&(dp@ZsN+CvZ#^Yk@#sAn}DYl%L_HQD;TW%jw;=1CKLrIkJ!{?av%SQ|>YK}h zZOQiA{TM%(_ z^ZU{dmoJ`OJucbq@FIXxzHJwr+KH}tG2?#!vR3(pqAiw*lHsHF0fv^Rb~(RJG&{c` z@7G)g*AC>P2Gq=hSJmn7h1OyYkXlgBCS($}-D^i!BaR(ZXQi?-@TY3;qeM53D3oCH zM9Zg;I115U6h9s$95R$r;@E25!nDYJN9cyOe1J2sAK<}eVZK@`GblV0LUWJAf`JQH zpojtCnk7```?)BIFJGDE4EO|%z+P{boj+ZF_q0lD~P?Xhz!?Y4bIsrDkxEh?{q(_s)u z(e1=f6spjfkK-Qn1+rxV%s@{TU}Q@Pe>p6ao)bc2v~b?cDBGiY8}TcH-)=A?sW3!{ zq>4hp#YsR)Ired_`ebKgVGe;he4CErRm&4drZT~@pb30FP`STZ(heSM8sZ~&_waCd zro*`$0-1W3juM(Rt7e>dqQhFO-{fKh_ebkO2wiVN0o5}vAK7VxKi?l{;mQbYw|a9s z2bwa@wh>S5X;n6K39+=TFSkDbBDRVQC-noYqC zNKS_{g-|>Ai=l$)q4Z{q!01q`rC#e=z<}j=9&+ZdLjoMig|T{?!yqTL+GpX)P;}{% zYC44g&&5caiBE1JV=`b*m!HSXvrkO(k6;utm<~0x5X(aheTL($Dn0h7LtdC|TL&l( zt}s$)rp)T7J>dR(XK&TU!D(R5C)NkS;)VVD@Zj! zETOZr6EX~tQh)#hBoH7=0Fi^Cp&>{+K;{AR1`tsg9UX<_1H>MnjsT(y5Ilg)1LPJU zzyN^VLF+jWlA`=jbfVhIay+dnj z3nUyM5dmQah*dza0b&o(D$w6Q0BHwEP{2a{_7)W^(U)(PB_v2-mHw(s?4wra?aEC~ z5NrC?ux!4mzgx6PtZCQeY!a7Z^_p&8ak=c{tHGLj1+27RUpKS^iUl-}pqik#Oj%P_ zojC@BZS;X*QIf40lGJ1<;0X-i!rpyNZ#8VMhkg7_<<+nwpU(}zwnEw^y|t;gp}ez3 zRZsQhws)$QiSkO9$$QGXVX-|d;D?fd)=qVrByar{ZfsQ4$B!*FN`)XM8Ojh^)tZb< zSw%%@O>0wFn82Rz4g2r;DKY{4-#hUj&#-=|*406+YFB4&&4WS!2rX2URb)=jY;IAd zrl)44rb2x|lrSp9JGEGjalN_y9|xX1ABGkFPFFCfFMx)Dj7Fw2OcoBskO&F$gXgDE#W2Q=TOqIT zb_G1ke+l7YKgemo0m5bS-a&@j+YK0H0f`@fO_ z;{R|9{L3@^M>v27{~t)hnySl%Y_I=F1|kaoglrwqovOYDk%moQ_TC~;O`RdqFzt5r zWw_JFlLZiIILIe#9esT(zYvTusv!3?9lO29bP}G;ISj5H6`oF+$u6-)4RF@UBkH8% z_fK;QD5l50JrB(`3gC+6J7MLm`19MP8EcYpRBo6+#2fglBa5@FdU(TPjKthLc1Ggn zIe9lpishw|h*}bAj$=U?sVFr6T5aFA?Z~sX0VA_XRJjg>Y;UKUFxZj@SPpA6#_*P< zr|laH6dvgB-D$hc>;x%&?r~l?Kz@vF7ht01???Znl!$u_5Y0M39zrmZFfhDvsQ@MZ&g9`}hKw%37OT9vQan+Hm;Am0pao59UfI;_Y+!ov~W zommcu(MT?QrJ<@`>~UJC4FoKCUc%{Qw^@ z3ByHWsD!lx}3VDzxmjNi78nht? zgOC#pOgiPkLA%aQV#)?z>c{RexZefl5+nvIIx;CIL~RQxd>}pE8JPSI{7B}gsjQKX zTL?W$TS4%Ok_U%5Zy(aybkID;}#QirFLaHCX6iJx)0B+(0D~` zZOhN0Fv%e2HqYwA!bl4TMyR1jrzFR4{?V_q0}aA>7-ej=x*a&-kA8h*yv?Bla5^<= zgK^$^9ZDOQ5%pb5$j8T%>@bG(!Po)p`|Z4lEXE8jU(25b%PtVIMYXzZMM*(oMu~fI zcN@iss;(xuW;p+R2YZD8Tnb3|#E)k<@9+j4Zs&s<#{z&SHH-KcI}U3nzc-&Hz$lJk zuBhQcBSC))!2D)=k}iGB6|* z0qr2p1S61lw_Y3iTQJo{`8W0UPDUn%`UrQR-}_BzVtyk2n3CA&)%M$FJGa>+m=ptY z4U-EJZ^BOS7#)g}*Sn9wn!JcuSjB!rJ4z5+D~2G>ksmlZ=O{bZ&Io^r^^;rB5A9Z!pxvoK;9 z3!$ax5IRpu2(_02do`U>s$Nl+$HH}A#aL9>$1YnE6wbp4%_mS;3`Kyhm??c)^c4O@ z5P*sWS3WpeBo(tcz?7xLF-2;__UD*!F@L@*H_3B@H_JGR4-6Fm@~XLxQZ?>EXs`ig z#c6V{mN2JXZE$s){s6>@4|jamjoO%$-PDv$ui}@} zpV=FFpB4Jr&%fb3FJT$;dN?hg^kv&}8{_yM@!6$uH%JC$bIy4jP!d#s1>>w4IW_vg zJjAa1a6bHuera2Z{2DJp@8IK&b$9E046YGU9?FY`UZ6gz5AkI#kBemv3)qpt6h+?s z>@T4N24;@;<)LN?jN`l478wY!s6#-#bEU_k#f;B6_D^nQr7Y%CZytBb{_+BUZZVUp zTVA{O@w||cGY6N%&83LmIv<#uXp{K8BA)(nP#l?n>^d`K`&A8@E6?FRICj)2-LoK z?|SEI*_pjNkGLLurRlyhdk=m4&$i%Q0qgvKsMHe<_P%ULnBO&hr@FUJWNRA&$Q~MRUi-I#22yinSF&P{d z!z9(gtl<&oAAZuBvC14vZ$9j)#HeG&OBdfi3w&cRiinS+$4(&r#)9!ewG>|=z`ZB} zq)BQi8IF>XAei9+(V;;e(LfoG4^%rJa^*i@a}akQNe)fLL2=8VCi(zE5l^~U@G2oN zjL|1m`!|y9+K^A72y-pKugkR~Pm=iJAeLYv091hz+d|^tLy#|qJNmI~s+x!=AtV;G zr7%Pb^tDoeDsvWY{C*pq535EnAlQfD7<#QEKAr;zQA)yO>NG+)l-Mhkh&%w$HrXI# znJ4gfj(h0{zI6NjLpc3%rnwD##YQqQcP{jK7d5&;7dd~A-hk|=)gJM7QL%rjoM5g

OcIH)nbC? zy2h%j+^Kk-W}J=F8PLJGIHB7%Pk63o$zn%ox&z(pr z?suqYMAN1L>cw0II-N;Mave!&3`q#w(K%RP4i+(teko#y#Oh`cfxziRc-f6$?$Hwz zIVwmds-JE?Ws`gCCnWp<$z8mILN3V!WinZe>IhOda3BC?7%R}Y0_P^*EUq&H(UUkn zr7pLGDT5n)7*tZ0z`8_8MNGtyg4`vr=?ScZJNk}}9F#OL#$-v~3zv*`vKXpCr6&ig zT76PGx0A8|0C>rMYW+WG56b=8$Ck}F~1bA@am78Lz zAfZj@GBEk#J-pEY86;32_A*IE7H0$mG>3o{F$(lVh%(Gb$sF?_3CS>ar_k_&ZRh~Y zHw8Hse0huo#0(cK-!{naf#f5pNm5Ntg)sGKPC@3FlmIi+M7JdnT)H}-f=p76utCa? zE0W1_By_GMCQt?rn$B-vmXnZJgg@Zo%4ZlC9L{j+MBbRx6hVd#Ro#Yt-SL&GzyVP@ z`J^|eO3?D8l1bedNFb|n)(9^n5xSVc^knD~)HxRJ+5Imym)b&@gA1C#yC zh#78~?2H2SmS|3iu!bejH1IKqfb_{1rQXIIB-NRbF0=ntt3?MK&|B4;d}5gw29zOm zoylL&aUrO@hcO%MOi55$Z~Y@Z*nu;hC<&8Hl7S3jR>2Zx zremD6nt{MbR&CO3c?{`^Y|xn(xfau|CK*TG;DWN0#f5ZQ;fy$f@<1z!rdgJyp=zK+ zqDZL?puC0SX0HfO1(A{=@0?L<)T&mOEG95NqFQognkK`j@_5gUqy4;87wLjlo8(Jw zXTca#)$nqLxia2tZuPh00hh6Z!32C_|A1a17-kq8s$IS$zjI5j!WfJkJnsM2I! ztYOW(URyh- zgZii-{V5`6{EC~HzBYL-?AenL^C^tXL>}khnCYfgLrTemQ;~TXQxw8b2?e;j-sRF_ z^{Lui?FEEg;fhw3Tfff1$)=k8rEl)Rl&1KpDK|=h%x42wXR60C*&uKfMm^-jz~}=(ycB3WWaG-iJVV4 z+8wbeKZ}dmZxqG46UK3~FbeX!L>Oke+{6D+>z&!!!XlR`hvZKsu#G&3A~w?P&`%sx z84*h->%mxL&1{(mD7~$txD>22{`Q_e&|!p!WHEBtg?FYaeV%6@w1WW6u3PA(C(k^I z1h`U=;jk!|KxeU;O%kNIB1PX^L`rONcdfHo)Z-v?=`%vQ2(P)`+$IO*-|Nw5 zzs(bLp;KjaK^IMG^QxM(@Jl@Rd86#IK^9UESKU0vq7F#oK~feZ-XOuE5_r}V-D;x~ z4^CZMBsQ|~N3O>EP1|&q92xG0CG!99#)amgEGd>YE(b{tS9PS2M&`Mz6FK&`a#OgR z!<{13Vpu`ki>S7@HuMw1$)_uMu{`!~&YN+>tlcQ*;;1sM*d)&l|$3GZ;Lw$*+F> z_s&>^kdT1GcfZblT*OF`;T8b~hh@+OxMdtDfmS;aV2+KPNO+M~{Lb*17NR6zUZ_$h z!58O5n(LJZ3$f9Cd`?BogSPyL;(U@;-Gl7VQj5qAejrAWxswHv4bANlPM}}Uo!Gm) zi+7;K`Lte#kdEVx56DO$$0h$9_;JTbycbs`AnUD_nn*-->_!Rd%Z6l?z9sYZU#h|p|Ki}e3b-=GOr(3p0$8qWC2>+D(fsR@jY#DyVUOsEDU3KDZwm_p`R z(b-mT45OW-NV7>rlf(smu*7n}1QH#VnqXjixJP?smpqVz4kQ(kP?CbsgTVa5tn}0{ z{X_rM#cn}|xzrk)rI=MI6oW_>LD@uvWk?Zy-Vz#%a_EX(_>F;J5M`0hgF zZwRJxG9VM7Moz-h-qdGyD243M1HchjdazK@O~_T6k-4~wMmA1QC`9{t=cjZUC(RK< z_@0x9&CZ!-V5!YJ85C442Ue8M?`=#LZBd)mjbECaWy}wfyk?0l8+Mu4%4pteeMmk& z*8^qB26_L_0F9r!Xy;}o7md8peJIObF<(qgmlAH@m*JH_NQs{%(PggWwAsak0wVg+ zNNTZ2hRx=SFvOY(qwekAJ3$y-(8c03nj#?=4QXeC$bi4pResVe@WL9mO}*lFTX6`Uvs*I8PNxJc|JrFF2({0z$% zHpRo>o8u)Al=+H7M8?u#AV8fRRsakkDhQ|65WJ9LlqiK>G|OLj&&Rn20$N@X<^{Si zQZ){%-&C7us1TN9Q;}`OUP6V|Ina}~NML1Q0&U?6VW#cuSdcF3JP?yh)B_1z2+%y# zFTVetmyFKyS=9(;T!Z|VUH}Y8VW($&2A z?wClGA;m~3%}!h_eL@5{=nFZVse#>4RI&sixtEaG*W1OXp1vgk)e=z5DFQBQ*C`(w zVF&}B5qf=zY(~Tuoyzo7k7fkeXq{dB(Gfa=2wl-cH-(Rt>}xLVo$^U*iL|T$<&%jB zpoAm@3-PDG6yc7l7H?XSQvJ)zwMpW=As#nlDn>>Kk!ix^en<~mh7fDD6T-^G zIwA|SxXz}G)KVlAbmY5OXpz*S)o%Y+ zNMTzY@)NyPu1hEcj8S2Ggpycz4{T9Z0_90n>dAq51K$|QIUq|cCC7uApZ#>M|vGQMX8 zn~Gd;OL47-8`;tTQJZB{qRJuQ^8(B34Db0Y=aBg9ZO%x4DT?i0Db99|13|?8jgPK0 zZ&ZCxo1DsJm;=H($|c?+j}&~IFZW}ycT@e%?}^1M8war9`CQ0j7;=3B~?PyHkGpe1Bp+#V&~+w^Q= z^%BU;>?DwO z($w@#hbr0P{42E}UdPCc04Cw8uwbpoGFSD=NnG&D`9{z{ts5F$Acy~!j@SiE4b4|- zMsSRfqzUa5El(moj$588oO#$fDTZTo(u9J;Ik2a1=u2EEB(@C<;-yh`6y_9?N`SgV zcHAW^+Y89P8-|Kk{%V7%DkYtUY?k2Tub&|NH>7@VkKU>ETQ3a6l6u_vS zJ3p_!*lT$q5Px#*z$%7$S;pXuO==r%&5f-Z%`S|1re=@U4TGN|pEVO@i`p@=c{z1n zh@zb|8FEmtAnHR?tl*jJ5Q*Iszo=Kwahb*F1?i|YPavfO-JwaKP4+B>HASVlR8f)C(#Jss zM)-u?+z3O<9+6_vs}%FCSVV%<5+}XVeaIhnBsYmfw29@#oP8vZ<{%B>bD2QJYD0^v zB&TVEP=J}rRI$oM_)a5Pldp`CH)H@gI4J$}lSc>8bx!|vi7L>Itae3WuN^;6*fD3N z?Zx(o9)ov-f?sPJ4mjJ=S(rm}I50XihaSIFeQ>yxxT{elI8=BC z;_TH^cTy{>c&V5~VMYWx`KKGF3Qkf80XsQb6^SBCxspIKO~V^-KaY@1b$5@BV}w#q z`Hqo*I2cLb=mK1F^o31vY98was?_3+Fvw$@X34pFM34)@mH9(hTY+kDeaBhUZ$yGJ&r)?J$&k0t z>s<7Ryd$xvPa=}Y6TTPsfo)Oru#gD-Vuc7)sKyymDn?1bv4%uRR~!r(3h1^1M3rr#+_EIM0QMb$QYwQJPayHIX-f_i(mv! zgp$t=z3BoGChZ9M<>g!$wE<6g@EHBd9~{pY6|C9kFX5}^J<q4TPmD$i(oRJeYG< zu@iKZz^gI0s@Qr*MlJ0N^cfZj`5{jQvix%IJ#OwiVixFShd5|}0oj7f>M3}Q?&7U-J z4z#J$;?9ojph83H);iElpw~J^4Q)RdC#pp zls{)$T{-mMNO>>?iko-vC|bcti7GYx^krdj;JDRm>6C9_!jn64%c`;>RF~ZDVFXu? zAULrCLz1j_`t)dhTS3>QI*?()d!qS`KJ69tIB|(nng;p%w?b~@Ius{C5H8)!K$j;y z{2V&jn{D~2JpKBg+qsgTN;V2TC~tiZ4|dKdkDs{3;P}aX3C`SKj#bf(&TFpfLWU;= zvV$uRF1Xksj~lL3vP?a&5}c?a|LU2iy{rJ6>AU8f0}sRQ9^X>1tIDka1AJ{IaI)fN90|L# z2+9jHoU+8kh!Q70?xJ%}9&p5|@FsQ``^UfSBBLm@vlhDRJGuzcQAH_b`_ibmj&zGZ zz=raVovys}5=kq^o97-A(WDa5=PG2WK_IEpi5-4q+G#>EL6Wl~0BO?m$#M2#)3Q(> zA}=G4m`jNptoW)Yq|y-P4#I!(GD8PQ+7d;@Y2R!Z51S$ z*b!$hdA#ukyGoY}k5T_%DLoTI{SX2No!!9vcc)aFO-RW89yakGbI?I{$eYC7w5_<< zV(Za3*%S)OkUkCgL$FvyO|5avQ4_6y#3}T!Mg0}n(3>$FaISeAn~9(L4AU~ZFRQ#q z94GaeD#Xh0UCJQ>mtIUgs?~cqvQ!IlazloarWRDGUKPpHCI!VzA3`-$YGIsx<#fx! zmZn*ydWZIo%#&}r=cM_V%LvGA@2Rb^ygX%07=u2%`=F=r)*G9&Y8Q2m1owXUd= zwmFC;#q6JYAg6R&gWXp2SMKzgIpfoxJTba=1I`JoZ`T7SPuOr5aUos>nrBCD1-%MD zwggHq=aK6{=coURl`b6}`CMmP_{po{Z$zYooKk05FQU7mZzcR2Cbw?2?AE)?e4QnyWMcgr-glA{6@IYihWvmK zKRng8vkgpGV8f6+=Ajny6>2>8naS7EqN01uqdv7lhdC~@rWxu(KuiHpp)g0TE9wIr z$KeT?e0DH{+>0pOn1>80bVbme2TvdK)PU}$vx}%_c!-h}SrF1EqVy+)z8Z%&=~H#_`4eAkrX@Lx)W4$C;!^genE{ol1D9kQd6ZS2-C>twh4A-)PDpO-r8Y zNOeixk*IWxLK<2)qaz1$=pyjr209+K5e(KSEsMJfgAOI0{|To9yFr^MftNitcJ5#I zGYlHrD9twFa#`7eAzuoZIODxdAmBI$%;GmjRYL4jMcE@3iB~J%^+!*lM40!Ui8E26 z#WX8pl~}aLwHOhsbPNj;j((Yw1C^WQ-{pTZnMP5u*PIW}U~hQav0v zk8>ojo`|wvUgUU6er_g^DwN=+Fa^$>IE+caag17)dC`m%#(Nuyl!OMCD$v}NQ8BZr zn@InIJZ{JU0cVL3EJI2nz<@+95V4B{gM}%78D%R-5}67icFN!sh@34Ak0miP5`_?I zAYE!oKo7!1iO4{S1v!Tf$U(AR`KqaLvrIZq*b&DN&3{0=By9YG#8|4dcSYKwSdycW zaWE2X0S!+qSEHikHS!`)GLJ;A#+NhF(NL|MY+f(=%UU%Js3HC1n|`V~KHlp`B%Ikm zcqkEYtTmNn8quOQ8)79+=KH$jAlB^P|%I3sdUt*F$kfxCWU1(#XB-7_yau5F! zAmFco&FkAJ3o1`a_b|yRicl0H4sxJFP*Pz}Q}lt3wK8d?8ePq0l=YFB>85IKRnCDR z#;fH110Bp8>9U|`Sn3V9rmMWmfPCmW;zBo2GvV7@kVw9f)rpwa{YjrpSwa22v9GVI z9N5tXYNavk`P=o(E`z#d7;PXpczec^)a0Y8OaMZb3cFrY=c)hhd18Y5p$eF zuur}wlf!9Y_2J5%*whI)=)sR6KLxa@bPt+dHA2%+@=OTPVM;j!7%}x2lU-?3lYKQf z{xSzH0+zF>=$yo@YQ~;+Oi7WV_9>bM6g`IRBXHP7P-8MAstf~4?+U^hGr9jIJw_1| zh|n}xp#sJ-R~BfN<$RD<_PWY!jMT}r))T8FmxJsHv6qr&p?R1?T+NbGfA~wGK7DdL zJw&#&PPM6jcx$)Nuwn|S~B_PL#E2oG25ae1wg_Yi*$%8 z+eO6X&&R;+ZcbS*qeZRr6>sLv9QV0OXttUgE~Jd5JM~0m{HuzHgC76N)Q?mn5*r_{ zCV@7Ci2<{&(n(pfsm}WH4~-e`q-LnS@Po5BMrfqmbtH(q%2V5Ol$wn z%+|`_FL=B0)l1jFVoM1xBU8y@;H~%!S#i|pkQD5qd!UunaK!|n(Ib8Hqj%ke8~iZG zN%)u3gT%eoF%ztJ6b{mLuU2>$dPu~R-55$1>R!Psa7V7q@quuqM!Z}s!`iZ z4=WIjc_;LX$2*$N%KWAcZdZ)g5y3=V+L^fp7c-GXY))w;>VcoQ#a2XxJZLN0eP$kb*2V845&`9 zuRSO*&Mc5^E^zc*Yc!;yE}$!h4yY^+Z!mB|0hcVn0;S5friwx*S>|CLZY4Xs!TDg! zwLFVT#>45rgFN^qq1?rUOoX4XWGci$jW)-;1gHrqf*aHYBUpt@v;`ap#aQSeh3+EL zVs2;*0v#L={w60Qswg7}>YIG-R6+|_)aaHHrIwK9hD5{vJS(kg!g$z8BJ^#120~X( zs;DmKAG{=$-cT&s=P3^9w$6;XJ&)n*02-~EG#%>VDNTgCp0)qu2MhiX8h|b6^ zE6|OCx=bV^y*LpArDPufJtVSluhzODpqY;!S zrC+ED{6Gz{-ULTztW2&#2E7A>)qPI-&7@6c&RrYr71JVG(Kq@agVmJbG^PLGQp(_*?|dV4k0+|H2A?h zqh?f$h{xX3J=+s$2JI=gG|z+$DF$;XenVxx1$#HYj8M8hwV0W9kP5At*(B`1kLt2J(Nu3?&jGiE4NR|hmMXOw=zQs2pa z9s-HB0@nCx2-`3~D2YzT2Uo?|T`+csmm1kvO|bWAmFUC|@5>$I+-q7H8<9wrhQcXlQ%*j8khKCvX5 z!~a6Z&oJ{|Xy)0<5hp+dbD!~Z-%>^s$Koo3Sw%I?mIFA8Y9k=DTs6Wk)P(Uk!oIfZ z@6y#GX*Y(}(^-F4ZtpN!ipSrI6-eG>M05ij`Q!i(P<@yJiQM#}C>JeuFLH{=v&@F2 z3{OkSQa`yj)RfCun}j_(Z%DNw8^5<>LezamL)?%9NF;T9(IpsRq>?g6EjPe-Lj1`s2H)I!e9%&-VZ+9jc?az4c5E?EbR6egU! zL7DiZAezJ%;c0NZq&@ZmZ9Q0EqJ-r>aY{Ax>pDD?w}faQWtY$UDd#Z?}d zmj16lBm_p3?lSnyXfi{K6(TNV4`ei=laM&$qUCDP=N+x^gl*+ew4#AK1{D3LaxQ{F zdMhft398ie9(3hx!B2tOFiNoqwNe+^W=p-`_=8_cgM~tiRt8MDw(&y3B=+f4YH2`@ z#B_hLjdat{L3%>@u*`alg_1)pOeidrasp2}W6*MfeY0b++$SNte9$G?nVC?tRAfcL?ZK@?8g@sqJfg82Wz>1(*jeNWMUfQGf0BklGT^dca(h? zHU=0Sm&QKbZ?b~V!ir)tNqDBR6oL!I?>1?g9$*HI8|h;fNA^~c(m0xXSU01l7P=~{gR&z-d#61|86}M{ zJE-hDWf(a4h^)3{W)_VlvIu?E^=30e1Zc@UJMr!?Ph#EI=APwfG z?CX>U@>>6>Rt1}`Fhfsg25)&G2Vc?J%Cv5zzW39DXm&b6Jt2cu(qggrL_mh>gnq2) zTm+qFwOX;mXY>!l*YemhD@|O+`t!1O)bUhM~zS^oZ=K*qONJua7-wtKV+cw5UaXH zD*FGt`9h*)aX||v0`q)+Ez#8Fw`xS6UQ#5ccT>3XKp6rXINBKWO^vJm7LBM4ZbqKpdd(t3qdx89;TdEJ6bELP8 z{g{$H#d;{TIDWV`6kl9E!R>z%(ML0FIj*|E;MR4l;0qvt&-=X3QNYhp00n>m2&5ne zVqgoPK+sVD3j7=bvS5waNF2O@9O!|%C7bFTuR=JZEj%S^fx@he!hAOfvc-!>>B#Pu zjJUF+h)O4bwA*#6;0FMJ)@!}i3Bc9?fB`JP0&1WJEPw!lodIxN2y8t7h+wwsfgJz5 z;qT!3$6{&(EksnN&nk}1#!FLKw`jr!uy1cFboAN%(5L0vv&bVu0Z(XJLTc8DcAOTcB1rmS;5}@Ai9p5p426}+k37`euT?ho=077bt{6?al*w_Z#R@AOz zjLv5qQC?w;O8j-@B=^ab3g<#;2enH=nuZ0dL;&H&fyrZyvWUw>d`I}N4?>t+wU$S zqBw$Nqu)qk0402jPjZxiJBHjAE))ndBuI}8$AP@}P~QJNlqlsD6iAYx zN0BgN+Pq2f00007>WPyf;sFH{{-Pj>VuHeh91j#wP~bGFiKH6D!3!YZfW&$@yUODy zP9{li;Ml=z=#5^(t~5n*yQmQ6+n3zTiu^ZMY)E!2SE97bFr>V|ZAXUuc<-z}ar5}` z1NRtm*^x01>+Oo!rcR#Xym@#4`X2=fNGbdStzfFs(L?=F@G$Rc)_?W5W@cwnA;EiQ zZQkS8@uR_kYi|~ASbXMNyEJhM#J#m*ZRj7l)xMii;#PSQg9}XT@!q(WDN%O3H_v8U z5#BPZQWwas1wW5UFcV=COqDm}{N9{>_#H}fn5F+_!UH78macQ+Y{XFE9LcRBL0pZr zW^wHFR&{1|vDFuEErF-d?IDc=&W#dtcpO;BRm^;eVsV3x@qoKodA0yB@T3PJYoEcB zB9x8U$De0_I#=q7*&ExLiPw-gE{Ri*Irj>8jyYCOT4_ToiA5=|y_E!)qV0?(KG_$W z6l4%@;H_!~8&ma&KmZGT0AxBa!au&|ISC-Z8{wPBIV3<1bkXK~Y@%}R;&CmP-Dm8h|Y$C!@0Q-BtE&wTA0_oinVEaIdft4Jfaf`dZ2;`=l}vLn1O$g zLk5_Uk`d4$4sUIfzIm zGOc7eN=LQvlS5#(!~4bQh?fF@1tg#Y1eA>g=b$1L-O~UQEMOk>K;2f>XA(A5OFe;6 z2p$Jg5b)^38&_Oj-qN^6HZp`A6gmu_>cTp}-Ebg2v`(@d^cJZR%ZDB`h&kL?!#g>! za+ga&2TDK=(RpK;%LHFnB58sSj01IDSwJV*STv}?OCR)z5JQMnJb}og1U@uk?%2~W z+}$uPgiDnECNi~$%;_PI=^3;7$S8b1Co$~s2DQ+$D-jIP4 zG2?*+_(KBnpe9ZhppV>;Cs_MZcMh) zizb7W%0b4?Z+6-xv5Iw6(mqF~*D4}t3HcAk9zY)FpsG3eF%No_fM%HyK~PN403aMl zJ2tVVoR}p&PdZ3|9U850fEE8EW|?KA^6+P3k-A2Z+|F%kw3A-B0}+RXXdW*b)4*Qx zE04gjFx+5o#&E0KanOSt|9}j8$x(vJ-UI<6n~wyRD-q1#CYB3w$qBzR$eD;pJ>am{ zv>dc2S`Fu#)XkkixU-yhby9fK@({3O*)RAN>ruiXi(7|84t@;KAmAWjb*raac^oRL zjp4^|Nl*gJ$N&Kn_*e%JY+?5J%`vfDr7J6=lDP0DZ@d|8Y57D$kmxu=Ix7f=;0Ry1 z4kShFFh}(C!4GfD10!~|(>KlH4Hl3?AmTuiOGSI69CK$!3PA^uGgE@?c_0H|KysO| zhCiT2xJWB3feZ$NnZy6p14Ay&vS4!Bp6t@;uhk+;m<948?f}zJFK$rb1Tqi%-Px>| z$!~&J2#$Y{0LYKT320a#gL6ROODjCIi2VjUW>Ip{XPxiGlC`VD^^6@;^dUIbOl%bE z&4%f$qg&kg*G}TlLn4_KMjka1^!QI&hEXbf9HtQNaM012S-=CxQJaIQ4D|eDYHms?Q2fZ*Q5<8;jk@_|{Ex9VEIF0%pyG@+nma{ubB-=s>99@2y zSrp)=SZdVs|bdYI>q#;a~pITBmi5U#?IM-F$wY~58@ zRNosn{0VY^3A(!*1Zfz$b?A_81d(o~Vd(A}I#s$=xG5U>i_{;*inP5qmMm zaY5)X&T!Lel7cr<^X(C`Yy+W(tV;W=xG+v2J<`sa4NM(Hp0_JnWEQce;WsDdY(!vo z7f&HfVNH+L75C;qZj)K|(p znmVM69fZl^79?dLJKS;G8$ejeEAAHYDF7*w5CN)YCPdKI#WA!PGmb9VJR5%T(bav0 zThK~OR1v6jZX_Ya@d(U=I*)VM5rwh(!iWYzuc}o?KY{Q7co1jk`(@W{J6!%MU3CQ| z2`fIKIPJ?V8mwrH08L;@9`<=?JGEF=BtJfd!5-pp-oH~k*5sj*`Dy^c5V=E_>)kG| zpegxABvgbAIv6V=p)7qK#}+;m`aKhm6bay+kK5lQbK$nQj(k~o0Z_YOp^OBA0Kj^5 z(j_VaT5V286}-A=NH*j^u)xr=E9_H&sNfL_0ERZBpD+F*w^e4_Rj2*ANh`@smkx|N z-H!Z?1ksxc_>YN(iv@{+Xvw8gA0ogjXi(81*}=R%3mhUt{aQ%k?i34`yejstgo` z=c8Hy*yyCjLo4e*74)qYVNOhajWq}nCsfTa9_&d_D7cMlZlx8FG^JR_gk$R;xlVE2Vvpl_UiynkOS7{@G23q=ld4o0G}Jz{igfIV z+HjJC>)ERw3eo7eW?o6lihC}{sRu1OowMU#hu{fD>ixM>OW_35+r@L6!>%{I%(h{W zc>qZUJwYP?BL>7e#~8IFRC99`AO4oR9sh7o6vbUXdpky)9}`K0HIHTUZg|GEtL;ah61Lku_F8D zY3PUKbU-CVWwbEJJ$D+)1?TRG10nqJaQM@~U>z=WQe)GN&W`2Y6r`L~ZRP;l8s<#@ z4J-2%3kTLrWTqSb;(5=TU=Egy%~m9&ld-GFsH=v(>21mhQu7}c2(V{{B5FyZVtiUr z*<*Tvsshiq$Q?5?t%3N6YK00TP}Z#^Co5P3PRX?cY>%#=lVuT^2Q110HB2f*3uBvh znSu(O*J7Vv@Yao11xHfS$ZS7<2&7xc)jxA%dMU1}p3TAL!|T20mz2qoa=?D6;;NB> z@d8CfF{fovHVu*;BS5m^}^4fNNv z>xdi%@hF^7PtlkZuj)rdG0<#LWKS`c2dKg4L9ClNw7IwN1W=sZTRhX7@6lT((3jVQ zC)ZL95d(6z$laj2X!F~itCl{!e*WS~h^u-^hb2OP1%A~c+oaCGwE5gcSJPFw@>x_2 zWK0!KSG_M9o%z#Pgx;&$56Ww)V3UEb4F?Od;xk2pkb@vGZ#EZ|A zDDpK-AYE(gWMJlh$R^t+%Yv|w@(t*S!=-)dk9-l?9ES>nL`gLUiWA6}E=;pd~==Al@)N!W1#R*ALGme7YWH|6~VJsIgqModgxe+6#1wE=Z%LX~-8Qg8Xosxv)t~Z^Fri0WKPV7CBN) z9%!Tos*g-X$%`2UoP{cSusz03x*6b>iK*vl7B*=>o5Kl_byhGPPN`-f?@neZfy{-^fJHF>n#T z?HuK84!g1=4;Xt2uHeXyF5SrWvNLq-;MXCkP<&R@rjZLkzMyE=HK$2-dAwXIo~k-tzD!Rrycs z|2g_fE4#Vdbg>!J%g<)QUsyBB{t^vZ4&NAZQdby!XINu7uGzUo?o$Q7IdXkQfapCP z93zvai;~<1WSv^nv-Z}cD1Qo$@;~}(@@zcvzD-3#Q0@yvSHyEZNbZ~NvyDSZ-lUZX z1xH<>^(49lC(u=Xs2Bo&r#nsB`T-4jDllqebzpd+KPpHrO)y;}60i^u5V6--82b9v zD6Pwiqb$gF11@{HtQIo_BQl}cM|y=__1zZy*B6y`SieZq5CdZ374VVMS$crgasa=q zXtWBhWY)vKwL*chJkZQ2Fh!}|?gaQ>iFkH;?oq)0ImZpge*+1969N_bwB=jx=f$HW z6KhVJ|N8f>T#Ptxg<@GB+2}XQN~VA6>~%^2J;pcIoDqg?k&a9(&85PWO4bEW4b-E@ zmI}v)&@61d(DgQh9oiH`so2J1#e{qMR0Jv}X=jMWn8VsUZSUi|H?8e7yw)?%rA>(| z49HT``0bH@WQ7)EHoi%~OQBzCYy`r{=w^XTA^1vSulrNGrR|+dvJwL}>NCJsn%y3V zr9uNvZ^Wk$-#vUr`}%ngB<-OKa)mD`0{eA%CD+3JIAa?yA1_pOPAyVh&${sAiCR;y z-VQ{j`Mcy{or)!YHviP;h**>y)#%sH)i@I@R zaYh26Hm8|>MVrBrmmvZ>%1Qn4GSn4MrtA>F}S;G@&}*{Vi%0Sn5S!hi(a%@GRab=d&*~ zQk=Yx{6Ab97y$eq*9O2nfPl#Vy#N3pkRI^=|M-7fZd21UeFQWf9Rbl%(XP&pmT`6iLU+u(-I;(%Sm#_SQJV4(GikCMQ07_ROa8 zsd~WUDb5Gdjw*=^oPk7$(6CUIIO9qkqma~aoagOG0WsjyZ-^Z*P2ETU(za=VX^=gz{5zh_IPFF_(R6OaQ`HQIVHbkzbr1#nEp2 z`@0Y*F+V%!`tGKr>_c`wb^<&~esM;6a!O%tPMjacNKXlYQsS^Ta%x5>gp^-gP*_}$ zo1YUWz{x7g??zkUoHHEWmRI0ZG<+&9EIK$?zl(|8P2;@09X%C>AI{I>M6}<+YO>rC zICl-ls#RiQ(};Na1=VmY9F8}uPUGEJTg6FfII0Z?xz+cS;7m1sW;GnfcB&{?(XWNK7Vv2raEnRZACtf(Q|M&V*rZWn7_sWa;$cdMZ>||?5xyq%H6b0oEyi_ zEh@?@T4GFz!`LSKQat-Gr_%GByrQOg1)`+VMJu9Zn1PMmK^y}2sc!&>u5mJp=IHpF zR^vvJfy3Bv%-iky>h}KOWZ(bPHylvcEIpbw+;RFac7Hbq$H?K7IGomoTYERQ@#?8%JbXpINpu?GMIIOOZ(Np}Pv?wlnQJg5C4adB( zvvcD3H=NUkbKr2g8%}G(iEcQ~4F|vB1UMY_h9lzskL$*XL*Q^e9Bx|tKP-b}1=BArz=31_)+4nueaM2+u6_K^7yqc#cc_Sz4{(ti7=wg0o+h(bUw zR`m}DD+!Y6O{T9|9@na5l85u7+|`=&YoK4B8VZ>XbE>8H<{%mJDs*2n+oYbzSkcNO=49PnGq5BOc&6 z$bUR5Qz_>m4;WUWQC9n&bQ(;Z!1L|EeIV*^Hj?`gG{9O96q!x>fhl|F30QYc#Wu&%B z>>QE0tQOLqKKAY-So$3Xn5(bPI*3Oru~}h7COVI_)cZO@mX4~Zik6`k=iNkJUYnbg zI9@sdl}bMl*hK^cb{<4v&y7rAG`v`N0TN<2h##o|!Hnjr+ehI$YWZIY3ZSJJw ze}woC;p?6I50;B@Hb;?DG@lO+*yv$^#n^ha#{gcQ7fA+x8K%`$-BFDK>czs1h#)q8G_FpnBBzdZX%0 zVQDy?{iBRU%d11ZxJ`b=9Ewk>2=##$0s>p9^FgqH-Fa7K+tU`w|5W_jhjFl~7?7Ic zTC|^*RN9){I)~=tNUXGJWs2(%=OdxR^%c4oJ;Q1{2VF;dK)vWNJ*nA1C;&Qd#8)G_E}%P_+C73!|-hO3Di);69He7$gI$_E^6s9TTV} z!UU0_fnZY%5I@w>MxY=PmeV3n#*4eXO`&t$w~(gI=gcCtI-&Ia0tOk-fSc%0M`q_2!AALhxmp?lFe2?au@WeI)(?-zLzeK3Z{ws7rnW!Uws{BnLPT2sD6+ zT0A#N;I*+{ycH0w&2h!aU9zyrc86QuCFHDu*kEgw-{~O3w_u6+7ac9kOT(IS=dJ1? z@FA0wiv|elAT?^`fo1+tmf}zr(>*Qmqv2@6ioU4WK|68_)P+e)Qe3Pf8<+VXWP)WC zm-HDjS08+lW4!m9uXA<7DFz0F;$KU)!A2sL+UY`{OL?f?xkO5pDH(4?x&uFP>rqvRGZ%22Wa5~lhXpM+Cr_0&Ym7Vuv=_< z$b3Qc23=16iV)Sze-z*eUUbeqB;e~MH_eOIZ>I9kneFP?JA3(8M`YJ7ibP>BnmCS1 zFiLN=@&LEy_C!a?vqa@Bf!t&}L$<{%S_2H>^2;mZJFQRHXY!}zlS zM0}6?CP+fM0?O?TBt4%d>7tJz0Q`)0dJHgld_GQMp6JIf{(ilp4#M{M67|>Pk&#wU z>P%Y7ivsW-0xBN64o{F3@%xa>qgbubLy%C6^7F&*z_GAF{5~F`+3Dec01ijGh=f?{G3l3$o6LKjRQT6{ z7tr+)26R}{@P{KZ%JrDeX6L3Hy)g^m=;lS_Z_OF9OJ1bRR_t8=vBKu-RtEW=)U8L3 z#15iwyd><7DC(nsL}o~8I){K{<|6@*R;#FTkVivU517gLVkvDICRr|U0j=OKU$rL_yKC*&0v1aR+xEtk|ycSLkDMVZe* ztqG9>W*}}#uq+B6hLjY*fFbkXD|WLfO|@AmwG=kkwUO%4qKb+Wl!I0E-+3Td9k|W| zpRNOOalqDDE#v}UrjA<-YrrWmygz~h$2h#KHed3_Qr=EL!-BvBc>WFvczrQ=Tp3{d z4h>y1JlS&?^(}x48L0!8#EL!#BLZ=!%tLjd>X=Z*YJki+%m(F2fx&YQmP`|e-vXqA zF2(l}nt)&4Jd{X) z$}Xi83br8%(!uqdRnNoFz3k+h9(v?-#6!6U<@>&H-@&I>B2 zID&`p{KoOp7Xdnv_&OMX2wc!b3ipEdt{MQDmpeq^Loj$%+=72H2u$0cR-3xu-gJsP zP&`2v`)9DeD*T6c@WvqQ7K?hx%@Oni#r+cnv)d+P-Z2(gGTgU=#`wRa-*Hq}bp103 zONiHfykO2JZnE9_0Dr|j31Kg}El{yXh1sXHj%QG6Gu^SLsp)h$bwkZjJ zIL_~J=~iC}C(LsMP&1Za(L2f5KHjzr31N=WwpH_Gulz|1STQ9~<`yL=XxcNI^~oo$ zur0aB!|UQO(YBy*vHEjfI4a4SL{J!i#MZ;^5Hd#pYd3~un9|t7_e&?+poZ;l=a;~J?g^glsx{MDJ|KTW zy+(U$V%M&1TkdPNI%RV)#<6S0{*kNXrTSw{HY2JoSg9ertqc5lmvWuZF4xdTN7>kT z$n+{0rj(~G_N$yV$-Fd#HKfq$qJcY+k5T+-I;Khp)XHPW4&TS^n4CB_kVd-3C^Hj9 ziJvfDZzFlOC;OW)h8U|w2k6sI*zQ%0FAcxiE^MdX^xu5;S5(q%q!0H&#a^l186^tLL^s_~nV-Oal6|LK$cDczf2alPB*t;hdZ6wyy ztW4z(c&G3eT#-EOmNT{JzF(SI-!@Q9OOhhL$4*IUa|Y!ghnv(2pyh_Ef~Jx zZ&70t<-2EXQR!DyB+zcWE&Lh@3RvTKIgSe)W_^usRwL6Hsm=I2v2*;WQro^v+oAd2 zbjZ!TxU438uQ6P(BYa8x(TTLx(zcQ_s2hs})VM)^B9-=HIu}MMIP74x*Dy7t(ignu zGbgBPBM7XHw=Jc1@srDiuH^KnOkdztmTsjdU9L^1gSG=y7zM!hraaB|S^f`djXe>k zyNRCj1yjORRa5~FdpXwuYU}fYKLA>6fVzq4v`_4h;55>58N%wK|J|6#^qC1VTJTRd96y1IKLF}T`1Q?0E3)8fa6b*H7aWO@lv(!^gUb- zDY>TZ0T#giVc*tax&z~5E;wkd?$Ky-gUn0!8i#@LQm*~-R7(X?jWUO=0>&@iAU0WK zhbp0g2Uj=!mduD~pd0r%Y-5QtB}uj^*+!?xIAuJa$j73{-LCqmevZy*v9a}+`>3HB zUrVRe4`)mrpAaU*&2V94A{S@~{(hvAHMqd@VQ{t^I*E zOM6PtK~dT*_Lt)(<9vKd$<0E~d^ekqf zb2=%$Y+GirkC^>&_~X}fqdPLi`Bo)iA=ACH-0e~JuM5rIjWaFV4`u7kr=3jyWX%7S zyZAKcLtN-&BF}u(8jVfqoC6tK`tPMgSGySl#s$cV&@;AYx%Ih!Sec{8RoR*UGM4=J zb1qqSNKfun4tl1W?gKRei|Je1RNckRs%4gG+-;K>2X=1#uglcBtZtt@5Ca_4voz0- zi{?L<&?SE?uW{?#bGoo%|HwH1&S#>prl|ETv#8Ox|UNWzBW)m4li4g43macjja?)01Q1Y{Jm^IQH}llzQQiFdBXBaV+<&1|9=Q^)-dD0UYm;4xnA(?lPWv0sQVvl@sJd;S3EaE@1nAlpecd3QSFMply*(qv;2QUelz?7MDI{BK^&Y1pfs-iAl ziGUS<&2LHGL3ejxKhJmW&oTez4^~n!3W$1>p*Ac&>Z>=b9?P-!(;J4w-&XN_k@7G5 zCNfBg&+P{arS1STP&~>`g9ZQRn)iTP?dgmBvIF(#Bdw^MpR9Yu8(Tk7wO%ExFIEn0 z)9P#=IX+ay`z~0W)d~A|ZvV3dTmhwe0uc_9+cRK(DMdMv#KhI^^YU=8uC|lYPgn@8 zxOb0&!JkqNrAfVbcU)F>hQ#M)s#5(Md#EyZxbnepg$H&yxOWK1F=&PTH*%yzoFg;S zf@4I#P)stm!FWDY=Puyy#6l8n})-BUS&a`fx7-R$-qTANra`5eC8;< zi&mAkIP??wo`jm%>U{UHw6b-OSu7g)+*qCcy@v6TqIwjp`m&1C&q{t6x(?vJ4Gn%w zu9hu)1n0LnjD!UWt8$O*?M!T~^dH_2ZW!n!Nxs=FeU0JX*}XfR&e2}(uN5pyXJ#m6 zh~>&ziWZ>%M|u6|UVP^lTuqRq-u&GPbK8$^?~FN1sCH;i7D<~XpKo!OTP)PF?*OOg{vvTu-6#jEI;AH$e?#P4aM{D~{+NSDr z_*?b+|IWS*MbJrl?XE8DXlB5KT+}AgnEI0b5j;KJKiilI6+5|8xrL4UpXY1f2X z>nFngUR-s3ER%VT<+i*}oLfgmpPpZ|AAD>ysm9|74ZHcip_oj4@fIw*z%ZX@>9?k8 zw#@qewS=Y%>B$GX{~G_TCaIaFGb#K1;a*wq`|;JJNrQ=8;#fr3AxFp{y4vcq_(Ti6 zN9BX{YzOt1;?D18WP+T!vz&zTToP9Km0n7oEt6oskT-PaQYHWX)4x!xP>KH-;?KBn zq!y?x^d0==!}{Ag-=pn~kdMrA^>s^uUtF`8l)Q}8f3JJZZ7e4K=n-NT@wHV57x^*e z^yi1`;>_L8pzwO1Z|3z`O+=lw-{oeQ@hGnAWIkmzkx9NJZ**0Roi%_c)f^LVF*WQj zx^*u~bJX+uvx`rZ=b>309%Rn-omIEb8$3g<4>s}(?q|(tx1>BRIc%t&Ydqum9y?5^ zK7Os^t-W91!7mt&s&`f5zu`c?E??z;CZCq2G9mVIcc)J3(h~ChZLD4Kc@wk8gM{)I zYMzOu(&b4REd<10T1U(6W~OVu6|~pM_+w@o^s&#;NM&ZPwa>tEI3rgj6D2D6;C_fW zd{#b96S{%iDbE#qbh4oTCGk5PFo&#!6PIty4{642nuZZ~iN=^D_O~i>s>JQi@?Ge> zGWAFR1#6-zn5i_0fN^kMw}~=@20GsWa{3k+hhS{a2ca}?Q-u9C4DyP@?j=%RzqlXz zFk<<@E4`JwSkQ+(#F(hLI~6rEr#O{TmHp<$tjr>&HA%MNJ(RGdt8C=jS5R&a&Y0K~ zdrtgZv1OHQy9{`yI>j8~+vLXLh5kLki2d=}1Ja-OSb}i-gdiY^?ez7@YiHTa#ZL7x z_9u-sVOk#U>@DJXPt3mcS^O-+q^C@lhrX1RF}3Q{@9tQX*m1#pZS=(D&YW?3$bmttFxbZh>w%t@67Tx;xnYMu`YKe*G{Hy3;K0-tt0TgHaLcd zZ4SD~*ZTTG68J}@o2M}H<%@@+BKQyfI?ZGG9sFMr2-_W&AahZ zflq5`zs^jtc(QQvI#F%IqR>P^C}12D%G)@ODbS54HguK4_HJjQcOyy!GU@o_(h!Jv zInpZ=HOA1|n{j^VO7rp@>iBL6hRtX8EoFU0CaRS*ttg>V8L?T-)gw;kB`6{HDMJ)z zR+(wMyUPD3zb8SuJ=wTs#7p6V%Z+bHz&mLL8@KMhxNT>_R}rPs{`-dM^1QrmzeeaW zVuw_1qz=(v0+2zmL!qWg*Q9NI7U+u?sc`k!Za&Hx&IeP`vBhFAt0x+@L|GI zT$tV>mT7s-oaq_p)sY>Vou??pA}N<*4x`TL-$!3MN6yn<0`<)Ba{50CeCG4WI1I*JesSGv-|Bw5o0iAUMnr16L;(JuJ@!!_! zzdq)Et884a*TK9u1GD2vop8KT9~1|Ky2rbgoC~Dk+cdBfJiAz3hfJ445R;ih_A=0< zt->~m#O;rYDB3-pYe^WUQa3aTi1p#OP%$N`KomPT z<=2H$>T|Xh{rf-&?DcX@9wZZ%BubH;8cFE$_e)i{6MM(%t}(O!nzHD`gHdM7PnDPU z*S}JTTafe9M6hI12L``4ktShxqHmYol zO!H3*@^EZmCu^-^^zY+$Htr3xCLsCFSF3(4L80EL|e=^?O6FcPvlM z(XmOE4)~Dr)vaCUR*+A5=Pq~6SI6n2fspvR{Ug)DZ0%AMO6dNqj_+HAaz%5(ptluC z*!4D752my7iuiHx@9}Mc^qi@>dpcxymT8+{Hj$k9ac*CX^+2bonTY$0eV^|}?ro;< zt0ODpHkImkJ?go#y#)rGcO@Qdc;>N&`agTLzC=;y^w8Oto4D;T{-^iGK@-6r^?@y& zgQv-$A}ZPOemGsv(PF7yjG6SzhaaMx@~G84(ave@)i+i*-Yow)ZF$CWj1O2F8}^Iy z;6V+u{TE%Vox)T=S9_QAUuTxHjLi~q%KVWWXX` zcI0B(mZP4KN)owHu>02rg+V6Eh#~744|*qvR;zNC0z5x5czl4o*yeMpYSYICgiM*c zeOku!&Ugc*W}EKP#t=E>y-xGby|T;mL}C5|2G;vM#m$ZB6E%3Rbo>riUss0HmlP;} z*n=3Kq>_6e!TDIKbJxtIXI9y=A&P3_ex=6a>G}Obl}-=eijP z3S`4BED{<8MojJAJ|4=IQxXO%UnbF<8}EP&QErb_q26O z1w|Kw6dm^BFYBobv`RiLq#jSbZnI1uEN*MNOx_8rAxjdL|MMPn_n>{1^a?I2sG4xj zN`?SQP~4GR@j`g+s`gbx<>(W$L}4eqeav(@(ofqHv|0y;p>BqW>i(uT5izN(KH_Q%Z-Qu}7*J7I z_$JFean#)^kiEVhKFNYM$kb+whDWLzeU3sPqu_rk#`(oGt-XaTMSzcXJhy!S%hd?AW62Eaq0Y)(i;$D zvqz*>1`QA=ofzydpha)Fr#kV~;U7U_Cgoz9YT+SCxee$^E&jav8YQ|sfuSP)5&A|k zVpjL0B$*WD!lnca<*FF;SXm$%4d)!8dgH4Wnj@LbM{+(x1#0FHmK$cV=cCikH&P?3 zNo0Za0K-u^36O$k#I#|pEJ6-B5(9(^oU|2NEL8P;-vp9Qv^W||1oEU|)dQ5TZlU)X znI*nzA)ACcnInIu${i#U{O)r8Wvbp6a{cirjK6K$E_`pPOGR2lg#DnCytS2VqTLcE zIAk`3IR_@keTjO%$}n0uzP6P*?#JYI+FpRkj+ai9w#dj+E*0@9y=Wm!_RS#pleFQJ z=1b3TkkQvNok&rUBs$dJ;D)|aOWy5&@7{U;_@_F*%UcN8V#Ou>#$?Y5;NJ-!Ol=8?7Pi~P8Hx(EZDX-5@6BO1MH)3KI zd0X0H?Voeyik0h0SxEH-=wIpXg|#GL*w<82*?&uDe4+Y7E0VAKv4FqiTShf+3O~^` zfp8@NQ=Ee@*cyl~7sRj9Szz%(0mBTUP<-sdv3y-}Z+HLHVXtG6-+P33$J(GBa&zWH zNU_YZ&+{Ja$?=gBp1zPbz8TTS@A^};sdf0%Bqn7n#Lfih`bA0Y66t&FihdTbYedaz z)_f#(Cxif}a1ACO0WH+i#HZ#p%zOh=9yL!$n;Q73v-HS)=-I>E21%` ziHY;UiO<%kn%dGSi+bf+i$CqE9Mht4aR(E0AEGN?VUOHWEgbuO*cm0BEW9&MA)Usw zW0K7*wAuv}%L_~z82efpI_;E`K|o~S7A!~(L2!}qf@^M|Jz0`C_4Y6^Nj(M69ZC~U zRB>mt&W@Xbtlx>cFrT>zg%u6`0IU*gR~Q$int`PrR$3}b(pxZ*?zH4ZpxZb& z%*Xf(YuXJcN_zt<*77pz&3|`f^(+w&b0wpj2JRrV`2CiSEEyk2-L(~hJ>QJ$EUx>) z>U37lE{U6HnfoXj2E{&uM;Vgu6cTEvmmBM`^}v;es}|uL(pjKn6kxf2FwWLzxpT*$`Z`?fqbAU^NB6u*yhi9M|L#n2>SahS zd6i_6C{Z4WGLVmQfS5xP!PoFxXXQ>2dXGkn5+~_Mx*+)SrAyvq z^FMx&=B0-|M@wd1i_*5XOd4hMm^X$yp~$ULXWnwPoV248DT11w92{tT*y7hAR+%6~Gkrj`ngn($g4H5x{Z=9y& z9>>sE^JX@i=dL@qWECW5!QtCAnFG$GaMOH+zr=6PODO(X`L@;2H$&P942s{Gz74kSFmsl~Lt%KW&+v81rCor&<44dfK|YCBx2n-NQBx zk{N1383beB=D(U^Rq{*|x{_IN88aOeDUtkN3$jP}U3XIfF(UQtW^eb{L`WZXwag>! zJcnQIwu7{G)PLX7j-+AhP^BQ_zBi%^X8lAti1HW*^w{5{9R|gnk?iOkiVgtuqm$Jv z$&qg?PaSPiMI^~kPio0v)6vfsbX4kCK@p}aIfrd%Mm?igU46JB6CB#EvLTU8-1J}8 zSCateQ24<7iOCv_g-nV9>FjEYYOmYYa@ql1w`yB#Y*z@oue41-rD|C`N zlO##>!&_gz%#~c*M3tUDxkNhFS6s_q!8|O>iQgSdt-?igY}n*pO2!zr&bE@Ihb8tN zlOPw*>-4!?#mKPtjB+EQOuXz0=dNQacIWg}G+Ber-;&RN{53bT zZxWR($w}m3h{M93BfJVpfB91K7aQ5TygIiVX=>+$z(d8$UH81(B6q4*%H!hECn8@8 zWY0xEMr#E~8rb=oq`fFm!%Ev!XhC=XrLi3yAD~4Tn<_k>7Q8QGK#(N+8GYLN`sC)a zbG@HqbFvV-+6j3apO3MI`jL4d8Izui z550rkY1wzTWa+za2ps*8?l7D=P+H>>H<^02|GGYvXzE%%rB3ehA4Nf%mKl8@cd-JP z&uljMZK8E?{GAo2K+ObNdi-A+gQC4m3YQ`my0xD18xlqkBxiY$C@z-f6_|=W+#B*m zE4*fgfA|{ia;m!ZDzRCm=9kU2dD=)w!eD-0;CX2eVcKOh8HwcT-r?S1JTpCf}XZNg|$Cf*tA~b!tp!w#wnu9 z6`RIn@5jUTkWt$In^vVlNc1NG-zwF@joD|EZf$$x-4XqFVckET4i$tgjB&k4|Ay-+ z{XR8vaPw>Sz1XYJtDqlJ#^E>jXV0eRST1)@p$RXF`<|$079)5bN+G`bOltfI44d%c zQ;qqzHU>@p)1?|ek;(D$=27c%jITumb9j;K(^EOJGS}PB+}8I2F)%6GuOr!yH^n3j zETY6Z(v?s@6DT7kfYg}^@4t@Znf=)0fXPKT6Rc^mopl+j{lRStlUEA;ij0$(mQ$0} zEG8CJ9u{8BMZD0LE<&BKnVD-{eAr#mg0+s!sgx3PZKgC>@Y7d{Sjf1u(eiv3zUIs!hGH>xMGf zUEztBqH^9!kclbhlHbZ_S7^yeIs*1m)?tHwryKKhr+!FKA((HN&nv^!~`zkn*w z>QfQJrs5nuvgJ=5?JD85`ePMS9QJ>KwdIs8@I zTYb`hm1caPL+4JDr``InF`aUbSuUd|m1QY#sJNHn*hy8+z&=*lpF41i1G{JLXF~lZ z+#GMjsn9v8>NT%*thsNSe=KJbfHO-@(e9ObobD_f=hk_{EnXnnVtg4Z6t?!TDwrTkXFLzxVpo8*4 zGv@6MQvCx`pA|YV;B)nKUDMTZ!LH34*S5s|4a7W;_4yda__M%Z;fTNHVnWHEmUer= zO_hvI57LhwkNKJsZ@{Qu^^iS3reHof_99`vXmL1tpvn%^mRN4rUHWzOwHXqWYGj&I zrCRyMBX}tH!p%^u=ko>sdH+n>Cb-l+3K3U%N~r`nN~H>L%-GW5qQ!n4fiCG0i!{sF zL!JdPPUkeo6Ut=2$(bl3{SCLQT1>WSapDT66c1PBC=a*XWj_^EQ~Kv-&K=;&wJrJG z+RC`XE;Kkda1yL|L#wPHisoekwH35MNIq9{P2?4htG#cc5F8?+e!Ce%r0uX=rM4&3 z?4Hf-JUUzR&PaQms>7eA7Q1o2)bCsntjSGP07L@_63cR43JG zIyy57N#v$0UN1J|kUMvXpG4Q0^IJ5V4^sMC$8&c1LB(eVbE;Y!6~5H@Sad7a1Qq^e zC|%>c6&$C67T1-ble;WroI`6p*gv08?{cG};NMpl{i>Hn{t4UIi|67>H^yA|NJ65V zbvlp$U)SYVkCC`!fJSjIx41`WmPOuDrH_ZR?bwZyc_N`(r30zj>*$#VRFf8b_&*iO zywA+S->nZt$wosHvINe|)wexU2u`;8(3fXTcDXc3p2J0P)iun&N-~kR!0u(8HlEf{kCuD-_qX`m zq9Vu1B}A2P`PhGO@>fo&_k@&f04|L_=9aE)$a3>XzhY)PCNuWjV~VQZV|~As>sQP` z8<|uW3O7LLCIyp6w;By?WoaIIcMjVD@zJz*!k7;KH+)zdkq&~tiR?^?-##B-cyoBM zr&KhsHdWtI_$Eei<=4`u&9w(hzss`v38{>(6R4KQ>K-AGFJ&^5r& z9nxI_qS75hhk$g0bcw!c0qGVH>5>)@6`gxN-`~IYV>s)qbFJ&_y=*;EA3wbk>p5 zv+r70yp4_HcGFtSt-;i25>+)e*Nsc2spa2JrS_h=Eqn1{%k~<&4ya$_60}7z$}9AG zrnCnpiPSI%;#X>>Wx?|Iu-?8bMWih)=sD5w@eQX?qk)>{9JoSd(4ylUt(z9dJt3XKM@nzkDS0)}m9 zlNH0+aFH=tYWDoh#KuE&On_W^e~>un#I*IA#nBm@S!C$(oYmx(;XjLmZ*e1kyI+}e z3|^6NJQ&6mnqELhKrbwNT%}W`FNAMAzpv&)z^6Cox}Nm{wEz{4<|Onpc1Jv~pO2gn z#wUI-tC-?4_b8u6}>6%nahW%<#z$H2trbvqh4Zj^JHkyG-x+b^4n0<(%~I zQ~c*5kr&^m5Vhq^gKsVj`8vnV>2{gO#d8j!2h*m0iAB}8O=1`3zT_19zBRyORbpHw zI2;U(RSq37>DNQdd1O!tyRllT_PF7HTIMDledn=}sKh~J!IS<+V4~`H%HuKac}r4& zB(3+?49wMs5e(-)&$yu5c@(!Uok4bgHi;Dx(^ksnlU}p;q3bz`kYF$PVMwvP(@GhH zVy(s2DKQ~|Xt~WCPt`T1A&{8o}_QS62fy`6zLsYV*`0)@H32*@#K% zh{iHEhyP7eDN9mWD5>}QV!^axPj!hLN+CgF1kw-G#I4Z;kjRbk;k!gl#7SJ|cD&qp zG(pf7e`vx=F3%R^sv86Bq&@slHfaSa!s8I?**7dr6ES zyfO1N@bjKnmSWE`!iiG!FBqAl+gV_|M}#xbKfI^2i*;f8+f{P_Y>`UbgvC zRjQ(jQ}#@4uZcctZ92MT+`nHVBY~B@Ie*grDm@x|bc16`M_GMR67PoHO4%Elea#llu8D0? zI&n8*#bBfoa!6p|NEeE|@)t*;$Kl;A>7<>yvXeuD)2{cxY$}jB)k@n8uHm41WV>mX z8BVEUy_5Br>;I2jL1^MRc4fd&Nlx+hg;O<=9)55Nb$LgXt^lz^h{5x+#9lv_m(w%N zfjeQWMbXo0Wq9$Ra=V(+b#gkYUBo(DYxX&ORR_3g==w$P5%-ln&ZcZ>#0+vYaqRY%o}83bTal`2H;hl3BfI z;Vl&VVW+icOK1jm4$7=ps>E0BXR#XxXx>6XyHF|T?BNkFgC@F=%j;5H!*_YyX zblM-U*;Mo@F{O#B4~NCq>dW@zN_b&i(T>e$R6}2GPe0qOo-=U04%O4o zk2Xcbg2r4+3-&3+V`U|iI|jT)YwKx3y_$2`<_^<3MhSvPk~YM@d)v6@48oasVw236 zyp=Ezn|pZFo7L^5jGff|T6BWla!h8wqicC~oF{iD|A@@EO37rJ9kgagYst^fI$>ml ztZ*%xN$~*6&eZ1Cwdw0^ zoBs|o?){D3@nalM$Oe~-o%-?qoS2FGFBpnj9X(PiPOHWo&?d2D*H|rP%8!JE5XnFy zWw&FcAjuA57vGwFDq*xL#6HbN_mecS+1pe*NM!!6{mn)vQ7^qH)cAClex#g)3NhP9=gd`sA@b{$rX zH|y`cibuT*pbi#DHOB09U0JHIe+rq#^)p#?BWDa(e0RT4r7uRjn0=5k;ZieLq*IC| z5m>|M@kAk4pTNRargY%BZ#03};&|Lup7B*PIfqvwJzJ2`0Ix$FA~iVNo$qSB`p zx?cqu6(>&97ju1t_<;1|u)nc62C{|gm20vXYNpU>&ym4YiXw*I88F2E!&}Ewz`KfQ zF>I{3CfB46MSsOvpnX{mep;--cbXVfXgeJH$y6?WDYRXwWn$_qe$)mjrp09-B6uu0 zFVRrT#irp_7e{8xRF~ra@llmrZj#A@>}w~UV^bVX+azQE90Jd zW2kvc#4@=s-#||zCU$+muFDr2W66S4VH3GuV$Pd$h11>E6o~47Er|$OXL>t38_N{S zm~DMq$wr9yDoc)tg0YNFcGOamMVeAQ8Dp=)t@{_)!&6w*-1sRik>)SIBq6d@DOtlI zX)!k-Tz-rK8{ybUb;TH{njWX&s>4d?f4&71EA0I8W#wB+0l6BRB^Ci)!?ZJE`Z>>? zDGRsgAG8>XU0`GFnXB26@_pwJaK5c`!FS)T7{OTlx7c5V6UK32!}7F%Qm_$5Li=~m z_RkN8;WVz~GAfB!ZWA-6CUOByFl(2ksE2uauizm>kX|Yv=#2TabC@I|i=~x%NqN&W zKBmL$YHgycG?wb)Evc&@p4q4Gx(B#KRDnuMbzF>)`T}(g?nbH&Rhjv5;n=Q4v&zJf zobS$Q{lz{t8G6^%KhH7O?E{d6e*O@w3;gPgAjWBlkK(>uTaFB11g{A*2*diMK8Bn( zr)<)z{mfjtkK&!O$K+q-(^#E<>h8tOhm|UP4%QQXy0)3OcP_$e3#L1Gt4O4ynJa~r+Kmk^*J zRP|H9j~$pk+Maq4w`VSZS*lz_rseHxd~PT3cz=-0#W7~YNufQCUEDplw-1x(sP;C= zOdFQ8l@E!2eP?gm%Iq-j-#lNcnr|&OcC*y59UO1kB1Wh32}b+L#ZX^o;@I%j)4KHW zdi&rRJ&pu{Pj%E8uieFLmRdCO5fw*miK?i}T7KpI1SXE8Usho`cD*5sEScU!9&23# z*o09@e0tZ66c+>{mSk^4sO*R5UKg90hi%7vuL*5Q)JYme9sUkG4+}q?ETT0kV?xj8 z|4vZPNcuBl;oo7oy2eE^gYDdr<@npFb)J&GIdhF9cVC{QjsF&YW6-;in^4vsYqb+2 z(E~sH#52*S`1jVEVl&MhnMPcd+;o&u;V10)hse1Zo-c&N`13jn( z$XmtszBtqI3ogb+z|3{8x3#>Y>k}Y$6c;hvci*fJL(nvQU=W0&sXhs#}NirkCVQV)P0jKsw=%DVb}oQyWIoQIcn%reGoE|rm5x&2~0xDVzGyaB6T0pnH1?c_#qq>dNpRwnXs@G)y-iN<_ z>C4Bz^48<(qaqXy!rmP#+h>m-?Bt&u_X;UzplZ&x{ulQ!(p6;j-r ziS94>P9h@&OaxNF$H(Hd?Qma%>^s|i3J*`+GP$8a`gRTS3zML!nuKdTR znJtoVEo!E_2h!rjHrz51r&TiV%~VdxII+B^&PIJ=6NX|9ZMApj+H+X|naBe}mh*)nKuB<`-6rD6Y7(L?ZYg`-^vQuA1_MQk?U? zbXBH#&_W~Q-|HH+$%G+t+5Zf~)A_P|S&3%;22R~pDJMo>>c;Tjx_(gJ`-5M>oFjwa zj#w6)YdOai1$K2p+~P8%|VA(g$w=g*$GW zwL~-*!oxgSeYRTFRZGp18ru?FIVhKsdg^N4rLXm>H`$^mf7qgDt}>3kINvQ2G!eId zUbNd$URM_@ll`MH{I-;whdoy1B@esp-<(OF$3`#IhxD*rzjslS1QMg6%bV(@arkiK z{v1nzJI-|&34sGy)5fVoiui@!=dg$CPap3og535B)w544H} z_ESqm#8vy#9s`wq^{TfFa^3F>OJ2O!XVhJehQ6BhP7o<4SW253 zTwQECn9OE`Eh59O0;-gstWWgUaZR!bQ`JqJz&w8Q-sZl!YAf$DfMAO69RKv8NEj>>O!RXmi92vBF^v^w z#N?(b`^Pz%3>fQo@P+nzRy1G zIZ*=d^`CeJa_BJe(|QB!{d|RzfV#}tUBz1>I@P@#vcq5i^Qgo#BZ7G(Y@?&Yq z(`vR5agVrTMSVlieU{ldcL=+CSpa-3|4lZYW~wp~di3<5ZH27iS!3HImWpHgG+530 zW`H_zl1qK-wl(WnyTyKU!22e4t|zI=np)&$PfUNEgm*h+!G8L;b5>uVMu)S|yLmMt z6IimYkJh#2Tz1s1Hd6dCxNB-l& zh-MfLrSZWz(}Pu_C(01z@tec5rZ+=s-JZUnCrg1zmWC)XnsUYEY+=~(*{OPKNimSMPyh({0ThV9&o>|uqbIy&$z3q|8QTPyM%UvT4P52eZJU*D1 z8+U9> z|63>Y!G4Y@O6^UF{Z=h6cJ3ula`W67mH)->#u3Cm)1%^~%>Ffm@!5Sessr{2;%05- zq~czVVl{7~9wN4==6v%;f5DLZW6f9M`Tzr_*o1w7qmYc`EFMRIG47_vj&D2UdS{!d zx6ZdY-eI3L&&Zv;jq_qk>x1KrUdf&*`aimNMkeh=W$VMktzWR1@jv1o`g_p+{5AHJ zRO~Wzk+6SVFeb;e{?ntD1I;f6Rh87NOE>rADFK%A7sw=hqDWQ>Fs}fL<|&u`iGS6{ z+V3{`d!OX4ggeV^MwlLM-WoE<+7ry44OU0L?H=$ibTxd+!^^qyU9CapvPwvKidS2= z14|%@=$+jo7DVQw|J>o(Da?7n%d#0uuaEAF$Fek^?msqG=EOVpo9V)yTCri3>MHm| z1Iqk`7zMB8JDEtY*#y_}Zh1m%?J%qybYY>Aq-~*TV*|pJk;9=SyhA7zL}*4u@w8Yh zK3T4!f?4ITV<9_C(|EKz8NMe_7m5C9_)1w_M)@#j@eykeX2W^Kv| z;x19-C{2}`YNuR;)^0y5i5X1_Od=oJc&U~i#F-H&5xAkUf)jAkY@c3vQhmZNTK=Wc zw-x{K5MepScjk{8ay3d_9r1KV_+` zShSYvz+$Nv@`u`^YZGgnnCZD5kw65=g$vuZX9!BZgR!#y@ww-4H7rn$MHSf4+A)S3PoBk z@}iKo;>;I;#c^F#C|OFe-kYc%u&kvCw=DqqyqZ<1(jC{y*(WBo{EX{8`_;X;LVkHX7c#5>ms;4NrdW)yMuj)ZC;sEJ=egxdNqlCqY)ZLA7n~#dYSGvE@xJ@- z?49Cm%9~ktYf!hxno((9XeW=LW>1U9dKOq*V@G^6Q_G8e6(0h(Owf@~bw!?2!ahSH zR>h=t_ULvtd}OJ9e*bLQFu}$d57}J5LBP`+sKt7b&Y^SS*}}#F#tIS}cPdFVK*X-S zf=rx_JAGu$kggD#tR2&dlkf71nB#y$v6h^;J2O?Tbs)#yns3O#)`)~wJQdjeG51^~ zy&1%Q#J3rt7PM79JLWSt6#WFik9S;35*p>KansD1sH)g+DsE2fC~AEBgFI zazyNsUTs3GWoB}|q)0?~F%MGS2`mRsI7=FvP0m_ogddr~x)a!ztZ_8ynV z!9f}2eKEu)Ho#%M^b9r!GPW~hi@XXV!uQc=d2-9G`EOA0uMW2`Ygjfc_69sCV3-?=h$gu=#DtBE-C>ZI0>cSDlk;3qB388ek` zdQRE}B8Oh+>V}YqNW8*Rq48LXH-fCIS9RlU{G@R#3GoTL;PhT`S|}gO zuV9H)Yl;QdROx_|$75Tg5HcESCMk<8U6{0hszYg8=7Ya=g4=R<%hUhHW}SJg3)?IN z&x9xl3%2KHm-eU%T=F8rbi+t&E59=nTf4^(dS#k@xN!TaC9R!+xVFE!x)mVXUF`DxL{dMA-wUH z@KIs3MvNidk?=!gIMSuaW-qws2*M~f1NG^+_cIs!Bi@0gHlR1JO7HQq2^#FO45u!%QRa(k%p5~P|J zHRVe@l`zD7HK<>`ryC1@DhFw#Luzrk&2Z`lb+lb0_CGqXW;p!FUl{&LL#_b6*k!Le z0Xw0JD!K|a9J#gNr>DwP-}R1IRjknuZlfP3qhT`5_4a3pn zkm#^X6T%UO{W8X|D}MRJncVXXCa+Ec$J+W<0~|sGV?7*CP%L*s$jVLh&smkM|LokU zInq_Q#+dDKP*DORwCyJbXu5P7PIvbDfZ0u|)((Bxt;kK(X}}UFa>7;8@AHg$TB&(O zqhVCOBz>OKKX7u*>LvyzqaMa)63>#5zjfH$WlGAJ>{n%Nsa!uDP3)s14SsQhn7`wuj)c%fQg z!||@skq5H?*z^?z>fX;wW=!_Z$>tekfunDY}-IGB*FR3_8+1}8)rstNnH9(q2(6Al}VMSl15Yt>>=5c)z>E6FkI z-zUto7@IVi&?Bh6^v0Z@yB?Y0>?>oB5%>yEQPlqf0m3H&+~jWt(c`a{`atePUe+Cmr;XLm**U zj{3yMFPTTQxKFUGS8D=;3+kWsiMa+ZX~ay%gy)V4dEwaecJWCIQZ7%%w~UDj{@_>` zx|+=4+faEb)YiPaVq>tZPVU7fZ^+r-@R~2VR$kIb?Z6w>8jIFU>eJ#=_C%VdvJPbi zP@2jxN(58x3ipe$g(*Ayb9v;($z{O%a7yObU}}&VC!f{B$FP@jVx(xGR*4sb2ie7O z{)O|;KKIQ*E`9`nJStbToN*Tts&+GNrH44efoU(KxZ@Ma(3+q%p?!F|ofensI5UEM z!@_mJ33Qy;I?aG}ZjKzH7cLYgcvYfWL(GV6CW5`J=UqW6*h-!c_;OvTRSsv3N7U-& z&d-#Kvk~TNy~sXA7|4Ps8-}Gfker|oLk50=_Ay;W(kGNMa&P0PDKasH*}1Ef87~ou zloHp&Dm?a>`$8@M5ngr04K(8ByY9Lo9A2HVl&1tm(Nb&6Rki0wztJGqoa*os%LoqK zl^RN9z9_#=i8J&Xv(tfHPbuMrDS{ybgwPX*$1)~lX?gk~6Mrdy6$WH21t9^<$^#%Z z0P}CKV!j2Uwy$kt{PJ)9ut%;^E{CxeK{fL?e9;SR!uOZm$_diuY>*o zH*L5)^?R~X;MqiGLMaw20JKm>xDeToR(jJvOAnZ&2eFm{Y~D}pzWMJF*lo%waM=`N zM6OT<357k=UMS}w|Ef~bi#nUUUuGs4>I6619DmESE_Oghh zADd#ZGYmoSGOFn1=NQ|rnEvcl&I=asQ?_x8x>y^|+{mE0%|3;;hfOg|tLz&7v!7Oy z>UlSU&qiaJ&%k9X_K3O=NtT-ANz^RQFNS-d-94GZxW&E7FQKf}`7PX0VVg9J&lwmO z7+n-#cKv*%&@Yjr!i>64tv%2N_+sRg7Fgp?Tq_t&uHW@VGAnN3 z_5Ro}Th4N;NOk>}bqoB{mJ-IBWsRF$5t1WRhiTjP>?DpDPMX$DM#?YP#~iEBt!2KtRB$`w6SJ`V zzQiB(XaCs_*DIOz@=NT{FbUH*$q}CEZ26KSu3QQ8+FF(V(Y@3Ludg=m3joJQ^lI`9 znAhhMQbBLC!Xj!o$g03`?EuqVDipV!pii~g2`#|peo{oPO#d79j9WW_-fqXG@x0;d z&aTRrGF+h-jGKbL(JYJrR&4nfXKNhzErN+3UK7!aoZ+<9bv%2^ z-+@8Xzot8Ev)`N}B;8U!h3b9SU-yjS-qyplJG_Wepah}ahBR1_R2dA#CT2xGC_kDC;8D$tX6gridiCQ_qHtygbf)`pk5h zXCmu(&it=Sj+<6^;@f{g$r}y5FCEdsZV@IaNub^h6JLWeKx7{-MI7g;ew68lxSwr; zy>y~?-hX%}W6a($eIB5;A0}B32z>s5TJ&Osd$Du5qJK13AR+UGX3C#OCC_P;gyOXd zOyRPhja;Qt6}^m9J=}Cmi$3%c$J*b!`S7nT zi)$f}uST;9Rk66vazD5C-bR~;eSzu9;bU87u|5s7cck-AFrkqkx^gzfe-s53@I1|f zTcca{Snba6*OpQ$B5(I!$e*yo;Fm;Dn7vKdy`J1`>Jf*Gm(7HeE%`6FVFd(VIyV(N zhk#Os=YwOGlu%BbzT73mj8vh}A385rGUGDi%#XccR^qExz2oEhK@?;;_7n*KW3T-_ zvMzawMjq=jWB0(2lJ?zRdcud@q)siZM~K%&N?_v{$|k-ByW`w2BkRiEVE32@3;2Ov z)=q%_fTKSapDpy4sJ(M`=#s5dMfnDmw!erU73ll8%3wRODnu0ug;+pJ`N?^Ke(4ug zSw;$@_v|SfUK?3;vWd6{>SwTih}vb~&z3TY9FJ`EgiQAJ3gI?3=W4qxBj;)KwWGOu z#Spbmf3Ic{%cyI?9;pPKsF)(y+6>T<6xnv{0EAq27Iv>qL+Q;n^qlljpfszwknd#y z4c*v0D|23mEwLVWl3M|z=HcL7DbD>qT^}hl2 zrXHYjtu?;#!LFssFh(1~*XLFrtl zT2YU{Bv~d`(nvoZS-zbay!K-%I_KJ#)oVxL%2C ztCP~=#NNeqh1@oUMB;G9%j6xvx@5{iM;LYs2nZ(OCI5~IUJUS2?mxw?dOkiM?T|^S z;EQCC^R88)yQvsMKtK><7&xw9+b68zzq;0G-=FTOqJGr$e_LF<8l#fBFDeSe=wexM zrKiIzy68&WlAr7rR;R1Ak-iuQ+rRxys%54&d8Sn9jW8_HdyE{lOg%AaTPMD_>G>#k zlPO`V0<`3x0}_r`DI%%!6h0vaHCh-_%crKyVDi=%a5|Oy*&Lh$T>pH;;Eqtek z%*=~HT;^03R_ZcnV}Wd~*|r<50$z@i`t@*if7yhL_XrI&FHZ48QAPELc~Q!7X8JQF zYmngpgtdP-p12sn%6RynpGA#&Q{t+IlL&H3GS&KZ-QF+nMdHMT7@dP5Mh)()m9Ur& zrN=jU##^meuLI|il%1HUU2D$3W}{3OJ#h>qh?MdQi+$RPE9%T%vkdGbO_Z1wwf<9n zi4q3n*2?&j_63>R?~I)1XL|2+KnB3qONQ>QK=6Mw_b5Aet{}+?u7EjV+rxS5LkZ6R z_6kWZ;;rFpN|6f~q^_pMkf~vx=;K+`2;CH=xGbCET70p382H&To8^G%M3e84-68#vMzD9%>5W6+h)CiY zmfgel*nlf%_iH%d{rjbh*Qv{CXJoNbKvw|8WBwOFsJ~dtOD%Y#b595F6AsWy8gijM zua?Z+PcxKgHhYBqP>G!JajrxPF<={ngA=Pvcp`gw-5gPuW8GazYWp;)0JY>*UpDd1 zlvB2k;JwfLSytqXP-ru^jnajH#6R*yim}6?!$pW8tMvw_A#ZO_mf*YW z$o8bT(ipK1{x00HRd{h}hVsCJMtb5E${Gzr(k(O-N7GNUbWNvcw3j@GHC}`MtsM*w zOFQQv1R8OC*icD%IykVh&UWW zJzM_#La9oef^6=%G-e+7x^vaB?oG`M$uKdkKFz`D6Ce>h664naV!YVp>eGmHFK-jm#V_ z93p02DhOFeTgHn=>86wl&FFHXUfc--Q#W?X?FZwJlMb$WReTGpVP<*mv0uvjdCV;~ zK4g^?K3CV^z$X_ivXpqU=W1d$@Zb?nNTKCxC#uA13B$SA9FH%Ag-VQIUq!HXSHhBV>90QKw){f4 zfb-TQ*?Eh~d@%OCoU|HjegrqvFS=UGN!6v{g#PU1|EkYp#ww^|jU5x;YRU8^{8FVj_049%cqwgxlcv?N zb?X`@7cERh42%b`xW=!3tX8>IBt3zl1=y~zfdkmTw_l_J!x>v`C{+X64dLy(LaoBa z(nEqju%*I9DW7(7;zWfhWx$x{nXTCAYww_9tJ=BbG|ksAhlS7`GNIX9iNiaxZsjPs z5k5`>OLF1Y-19t5>WKRmVzq66Pz2~-yb1&s!KgxNfC3rL0j6(Veg{a_?DF1LN5x9e zu?hzP4RuL{kqIIu*VlrqG`!v90qLVJqYX*nQ1#thn$r#%UNOJUUBTFlmu{*MKQV}M zB)J5IeAt1a@DT5GmK(XBkr`)fbUMPR7o5 z#tCxOjwc*sg~6sNgC3s)IE0?c3>xbH6@h=F;Jb-%LLVx_;oRu`@J*Noeh`+r5Z3WA zKV25Xyh!?;hQcoz#6)Ezd|&SDz(z%k+lpL}_Q0ipjQ!%)Pc}r5OPmdOU;pD zkYz)y9al!qI;-4f*^{0TKZ+s8ZaCC1i)~PZ|L?84T`fz60qJ)j)UYcji=5>WU}<3R zD%nU30+uR>wpkdV{09N~ti8+(5>;-MOl9_|y&apY(_lW*|=IRio22?31Jh8Pp(N4=HTlk;U zL@F48#-j2CE7@VACm`)dX?BsIxn+nyOOf9R09y#4-kn6zDrpugp_py)p_(STmrU+J zGuBM9cib7X8-L?#q}irJ)@#@EjQ(a&1Og0BHj+0G;pAt5ZQrTI3L|4E+`2MTe@qbP zvdar_#5I|V>MOxW*nr%ajPwnu(OBvgPr z9UAO6#y~Q~q-rw&Wdw-7EJ^Zyid`^}l$g%3nN`$KiF>Sq?7cGMxhgr29q1fT#fV~np@3Y9XmGa_ zNM?=%Y6rwq1@J;ZSSSz=3PI&ddJX~l(qaQ5u*e`aKGJ1=^`|+M9U(h;4jW}$FPU|;mOLw|Dn5O4hD5j|3$`7IVzr(!0-cDrjf4FHi%k(| zkHTgv%{>pndXocyL8=gRKpvqyD#fy+7IR1o_Fw^mvc8x&KPna{Ll~%kYiMI^Xc4p5 zByL2vZeZ$Em2+|Eo(f`C8X~>f)<#Obf|co+kQqMu`6-!-j-R+VwCZm5kx8g<>Wt`* zKltz#0yqK6j-VFGZ2%q&X8;N^fq*Qoa7^rgx&V+x7?vaeu;7m+VTa9)Vj!CXmzn|X z0Z9M=V9*?JodBvBY}5ti^d3v}8}h2&$mgzP*+k~e8ijlgl(jQ;CNt-C#?CDsCjQ-) z6D2|JQu*p=fjJmQ(8E|TW+z1`*zMb1k+}hrn95*VY>p7kAW z=+p|;KM4REc)`m)@Te4f4u>;J>7rOfWvRrz0#azn-43zH&s(sFS()RUZH@EdZIp$M zvdDFlOL!4NT!Y0#EZWNz(VOM&I!g8bB0yjm=|2Fj`y7a207$<*=F<=K;s@~$V5W5j zaTG!9kWZfdK-LzZ_!W?K;1jbQ29$q+4XKf_W5V8kTC^B<3@@1DbsEVH*mYJs)RfWA zwoz8kKOdYZu8=$M6QrbpzUvS$mGp@VM$;H-noJ++hZitEb!d0FV|8rRTM?u!H_bWU8RYHE_SbUQ?C^I9ucz~)h8z}fv!shEBiT7oy zX5%Hhj%Ce;)UX}4ok_|2!P;gJ8p<6)`|?_!DAHoFBB|clXRW&UzTRLrmvi#a`*<`c zy+Wob2kD7xlWZJ>cA*$|RVr4Yue>g~!ezd^cUA`mBcsS%*i*vHsS2p*Sr4o97$cEjjIkiW610w|l zY-~m>o-5Lux$w0fDLo)b^;f^1M~Lz?z~paq--<|XIk@SNWyt@P6trZ-`9&7ANHcS& zDpDa+N$%1VB*MTVxix?$HM}$aTwQ@~GChWo^1@ujSp3wmQ~te|AZmlEfkSSVq&9A8 zfhLm~jk7%Wd+HpiGirSWYk9DKhg=$+S#MZ^}r|K8KuU zbV5&bjR&Z5BV^S$P2tBWehCaqW1aj^OKnBLlm{M}y>))8tc9KFaf8fH9Aq1xpx>u3 zq~ziFI=^}|AH-PWy6Ze_6Z?e2RT8!#E9@{M&+zUcuX%=Mayi@1xN*|qc64ARWT7twFQRCO(v~89sYu>w}Dl8D;A{#rJhZ?k4Jd zF#TqeSX*GKIt#iYflEx}v*514{sdPAYQC^P<28#V^EX1~H(!a7EbUFYwJ|cs+H|m7 zCuDKA(q^lKCy4Ix%2cw!AU_Ve>b<(%>^6fTr2f0foR*~$KmI5aWQeoOxLZ(QRCsC_|(c3GVY zj!UjPMv*T?mHnr-cctmkOBe7T*&!fmx1Ah352bm+XEx*4`!XmsQS;@F59*D{OyU_c zwGo_2OV9Dr-CMn<1G@Y3B-Q^r8kmB!;4#lVsa}$o9P^(P$+6y)*|L$_vXr8oOLc}M zRRaq%&ncRR=UZ@Hv-^WG)s(X>ltn+6M^)NWXq(MdctOwGE0|HLLco&dE574--I2EN z>l9udjq3FuyEhgbWEN2~5gs&tx6N7ms<>>0UCO=7Rm>FeI+^HGEb+1+2EXl zb~Gq1?H+|YS<7q5k4G=i?6AwTi3A1Rs2PP8lioGcpV>88kF6Bc|7aar-BXcwKKITU ztz|(O9_a>Dc!tz_p#niH>cAhSk}9VkUh{Q>q9lU;L=CaFw3kur@?n=f55a=g9KpA# z12kJ7+4decF8_AFh4wml2VHN}suyl3aHHjngMgecB;U>;Yg^##v@LS*-6P2C1?YiP zkNa1|34|J;q`$2gW&ndgX;gQV@lKAFBx_My3Q2?lTJQ(bGR0I1sW1k-YrC;XIutfhH={B6*|A~8=TtFUPB9v6=fNcD#lIcB^Dcc^OsZX;<{~ayG1PoakF?8WilvIU zYRlZ>?qjcwPC~!_HvDeZ_H6Ol=*kAPkIn|m z`jDSYYDH$(4r8f|3UO0w=lkP10=8pC=0BVp16>@7WhIZNQ;T#jV>9UpK8V&>&vFoB zr?{_oT1(%qKfU$d`tTCXq-*iuyE`hSoKL&@;D0!s_@^2dJH)k^&a#gf@BcJ7FyQ|* zI93J!jraBA|#fNB_SP1awh-N24Y@b-cC+Vc7>j` z@^DX5>Zqug_4SSR&Q1|S2_hOwFchklV8$WM8^*zXdU}R2;V`gVa6$qBl<0Q<*df@{ zAjZPR#>$U?$Qp|P?xBnEVIkF8$n2tmU^;#+8zc!Uv|bG^ttIP;O~NX~Drh4{Nlz&6j#LhIq9i542yot1 z>=^rvfP{dM0Ez>GvhwnaNXwFwFtBp6(=q)Id)wOG$LMYv@Cl+$Za>WqJS(;-UfI;B? zAM=)`lY-IX5R%aRC4LNm$3Vq^QR@m*obpc_F_K($3im)tiiU{d%=Z4~@fyZ~n=wuIb8-{$tC~+7c4kNn# zKjRG}#$jYQ4F86q-7r2JhK0jOau@^-1HWNFxc{feVH`LN0*ArjFpM0=io-Z?|A)-| zkMzSFF8}{DIHJ#T+4(5ekz^Wdi>dL}3XBG)luJ*Wv9FZLNtm`tW4NQ0E8sX;q#3Z2 zOl`ty6DftNlrFglSz+f6tevmWpfy1ub_NMk$$2cqc5bT%{qN73_(S%r49Z#6!?d-! z8qK2>Us=4Q?PMV7;^E2sgZt#`e|heS)n}p4%aI?MW(YXnu<=ClNoqYpuaJ=dj9Ms( z_!-p-!sR9bA80pU#F3zv>Z56RWxcmB3cci{~mksZ>8oOWw=r7e@{b zM3aUa%qT^_CUCL}-o9#~Bv$-KW_J-09gR!Ciw9uE8V|xI)w)HWYkP0K$LkcB@m&>A zmchc-nK^bDQ28&k(`WzRPr;qkV0KzNMFn)=;tb9ZM+lkgX@oNw;n%s*C?(192xS7~ z%hCZt0?D{yBO=}F^bqtJVo-r{dyXZ91aKXJPl9)qo`RFZg)*V)94NtUyW@h$Vm~g< zxSfWS&d6Mr?kUM&k%i2-9dAZdDE@jBT~%PL6)lOfVg(npd# zaEPZ?s|FBo`c^7RkupR$lpq)eMp8)aD6`?%BQ=e==pxZ*>8*}AVyXBvv00yUc!X=N z0BTVm_Z&jALwpL})Fsr>a#AEYzcbRy-80YeiVDuj(g)7R-RlGQv^we(O)9U3CKR+>o3fK`dXY$IfXe)a}jamwn|&$+U%HI_hOUf-kgvzc%H4qx$lS zygZ>qFyjPV(ELK9MJ4w9%!SyN6W;m#Yq(Xjit+E=4<6v|^G~mv`|rjBCS-I5z`I*_^ zY5V)*FYh=Len%BKJnt!A^9qOdZ=u(2NEo1Vj4&b=JX8O)=P5$G=~+dSLoWTDkP*{N z!s17!HFBmASO0RQw~7E)$V)RN#<+G6B|1bA8-B9K{2Q=KdY2K)a-+zG8~~Dr_{LJ# zMibP8X+xICV)(8AxIYJ!DH8KR^qyDD#_LHW&uc$^glP%9q1)8|{{Ue?p1*E}sD2ax zj_89N4F?k=gJ{WHJprWo%0Y!GBrbjCGTc9S@Qu6>GLKu4K^GE-C>-2`2dBfqPRdcn zJl-xZ#v9MIM)EkgsSa)>gj?zcIKw^C&H<^C!S!b5f%*L7H@_Lk0|fGf3cw2o2l&7T zbnp);%qtAF(!d8w0JI8dzyX`Q0t#Nh1qaM41p<&k1u7te!W}@Fixhw}9gs5{P~j)t z*Z_k5;SCRX;En^ChdUXCj)9ym2kz|0rdr_t0dlaw1G%iDJ={SKe&(Ql+;e43++hO; zB*s-EArL#)QxGf2@*grdfI1v-fb6)#2_F!M6UtG7D4znu;4uf_Knf~=1qFOSr8+3bss3R`_rW8V1^UO52I4qx%%B{nF-SjJ;H_?)qXX$^ z5ZMHh19wEg8|N6)-4v+Mn9S>jty)Psh83}V1ZE&sct8q@uv~*t9DS-wK@Bjjs-~%x*tPd1mMvB-YNKfid1m1QR zgJG>)beUP)JaCQ()N@JX@o>s~aXUz;0wij&Z3{eGb$uM2hwR$RIYY0!hbd&hw8M zcm-z%n5(VIq1@~^_XFjC(?4vb01o`)1?oc1h^iY zf;Aqnm0TW(dIewtDnOyuFMxtY@-ddXyu*=Dc*_)OZ2}XN!vsEH>0NZNv|2kx0AAVD zc5)&R9?)YaR>(&Yl`s%v13?Emz(P5iCJ=q#01Bv+NIS;j4g$rDKi%*K+SCzmxbfN> zsQXDi(D!Sfcnesl0U_4tx4l?Tq=lr5pYo=MJJI#cdjE6B6wy~ilxTS+REQlFR9A49 zKr)Z4EO>$qE)x-gaD(OlGoAoHD8d6WmE|bM%gSR1yijtkbEaE)$m0@1xW%00LxD@o z6{z!}GfpKhZ{O)4DRTkRoZ|^@Ud~tEa5tVYZYP8_(C62`wgknK1u^+4ufjt=TFvNM z*Iw}jzk^Pwjcz^U=N^~y6yDNn4Xn%Fob@x2Bi_qJpYLx6p+?-7K+nfL)}XoF zC+D&Bfdr`>xp|}iJM6LV(%Fvppc@H1`qO#RIe*no7d+GFzCN8d-{}NH;)zQ5isokBry>nTByM+%~Bigz$3Pl1G(W16EXt^f>Z=y4`{;z0{DMAxI-X!cF$LI zEQfv#v_91HJI5D!RfjwqZ~@tO7u|qQM&bb*0U)2X8w0^47UqD7NQl8Q7yWQ3NCrq; zlNT(&ULJrBQ>G3qKpL+h5Z%xX9*_f<_74-1I=dlJiDEN#7!;GYdZtHpBXM}M^fmi4 zgDY`^=~p|LXFsJV5D{<==`e@_aRbx{AZkMp(3GuRT3cu@GrXvLemH` z;Sw6z$WE*=dFZekSaWhrrH7?;c%N5)s^>gC$5eIrH;6KQSx1Za*gY&T0|Q|X6S8Rp zxf|pE0*V3wENJEv1ZWZ6@KmwkUP_WEA2S#xAR8K*LN3WkELfdh39GqF?CKia-ISj7z28Vf`hXMeX~bCacGr0y{TVtR=aKoa zZw-eRq%=U@vO<|TRtF?@Y6O-D#(6pfKD|Sm)agnQcYW(AmM3|KdU2c<;f_qTohqr7 z^VfbF@t%Fyng92WorzF%Cv(_>b^$7SjE8Xc=V~)(qpl`6-N}`5D5PsAmd_)ixn*!E z2RyEWoGm(cu@j?^<2XP{gNMUjwIf1xvyMT^KQHl{AryIUh(TLdK7IqEa%fLk7p4gz ze4NKO^Rr6OX`c~+IZm3UQi^q2nxs*>Lva&}GYUO<+Bf|frgF%NXLJ(Wi5JfQmvlFZ z5H%M(^OvWqXQV2DsB<(*uD3ZUSC2T?inh5r@ws>a3Zb)fp`hBRl$wqz$8;>}k|!~$ zt5iXB=NFXP5QZuhCM2nVw|`^xnOsLo?h~nPI&&Q=K<=nKAKHH^qkjt4taBQoKF4<) znsl~9dpmlb*J`XtYKO!Msoa`$YI<^dx_e@`Wn$_|%PFdwx+Sz~asl@hUdnX=+CBqR z5^EO~?Wa4K3P2Heu6%Jfb%?G{N<$7LIK~Np9U*e<2tvDxuf>{kyn3V$*PJVws< zV@II`BcsUUvGcfij~c9TilYT2uMKN8ezZyx%cnWmePG9{2euY^N|qP@+p&(x4hCYl2rC*^m56p(TJWHE?*M}3aFD+X59DCER<#lv z_&o(^LXh+h24HI4(|X8>euy$~g(6#ydnBKywdsJl@@5Z#nEOTlfFteOyM2)lHKP{&tGS|>6^}a)ERcZ((^RBXyd?1s z@Bko%`!A={4ovcZtMNY!e0v$}70kPZq=O{B0wkD{4*k##{m>3S@fu|F4*vTq-%}1O zypo||4;OY9{cyoqA&T%&fnfE&YZtgVnl}?nvvp%2q5(Qw^E<#>T6SR%_L~j^7jkpU zk2#PI!YMclx)S|>HT)*S!25fq7B~N!8t|KeS1fN=3=iJ_FmSx5h{DPi!U;-GJQCgD z#!F@ol}x?L>7c_W#sQn9)cd9VaKwA;xX*|>`4GRX`Iw>zz-!kI@g{Ha)((`i$B43s zrW>@p<2b>Y%6|Ku1B5VHkq!wslAnipl-#^mO1@zO%iaKj=->^%Lc`Pya5D>b5j+^n z=_^%&uA6bW^7hO{+zqTl!28z@7u*l>mJUWdkLYlA+ndE%j5do*I&hqM(agt_mly0& znV0OwVOu)b>~9-bpktdxzh}o!tb@Gs4*ih21!DlcQM*i>f%oPOo2$81EI8=^d{2xw zclS6Ctv(1yDZFOCS)9fXXj?AB&fB|+^L5Fe%p(&2`he z_AAR%$bG0`dznW^sv*z!iv>#CbV$hdQF-GC(MaK59&9zWsG47aI6 zfx>?ZM`L5WyVBAy9nN$c$QanL8KY0UJU~;pZ~Y+8Sz$u;e9H#9!=&T2DfF2B3=eLc z4kQi1N&> zT`(Ca+Nu1`DYF_|EupG$!G@j4kAtNyBzlnloK>fd+CIUDJJ)-~fs;HwTKn6AYqb)b z7eV`W1)9L*OG@>nuW&@Y>hRDc&HaaYNz%2l3)9;u&4@x;1+$T1BS-nm zLEzmD8%fK%>oUONGJ`YPdyKt!j?V8aoX8wP9xQM2$#fg}68SI>fxOLtKH@q3FMGb= zWIYr07tMeD+}WwRxn9K2eL}YD#)q914eYb*lmoU`x!*m%|AL!vGjN#l;1vFAAg2!M zJ&&i;zp%a832eBglgb53!y`C0{Q502}ApDn)!jhnu+@g)Su=Of(+)(tEG8!d1H z@X!J*5CJ8B12X{2El~0izyhZKaT^}c8s}gSD&GS35F2PKiia%AQm5iy3*ksE;7<0q zSW2i)Qc5ThwvW?p^S#c*j4)8%Zh8CsjNm=i*M{>v|+yMhJ(Eo9ix;X{ZKB|c18&Rx25?lf*J*sdGF zf&vNVOGmI@$#VY){;SCHT)T4b-Vtnfj-^F+?Mf~z=#5;ygznI_Ls;${x|<0J&VvbZ zV7GiM)#Y=VuBp8n=~5~z*RI8k86IZ*n+MN81QuTnwD7>fYsh*N%EV zcc-x}mT ziZ8u_&MCkisfzNv73@pf7=tX!&uYuAvwwhc$D5DJam>S*1Rcm5WL@pXoBWy_D7)woWJtPL z6Us-;0&u)(SLk+wr$DZZifSQ^F5DKKNw=!48@n#5X;N=m5C~3UUljFTCd0jGymD66 z%$!bGu9(tMrRhrF3#2ETLtQP1eK@)q&@w9O^_+x-XS_$4qjhq5*MewqdS<2@Ia-^CECGl=Tm{l0NqO-mUJF*I%+CXBtR7uUl_h}Wm zI_{?b2|H%2n{P+){Hz9QFnNG9{$E0pTnPY<*-^>oW(8`Bn@+KXLOElQL zfw(mGGIXel^0NY2Iu6g3hpLxD+vZf+O0Fh!)f=18OX{@JVN!0-#gckwo=zhpowI|Z zv}olG>r>}sfeG%%IO#gi>~hRmBQ)BX19j&ea>(h%_bP{)F7?z3N;7fhIpbO>&{vj8 zCMXFdd1fHhmQN#c4F)>Up$clefhVP4CqZVj2=6pgsd;$gGx3YfJ4zy&)EVd}2??10 z$j&sfd>rs#_Tt{XCY3J=rBGPG>V^R%NDy7kDIEkOSpTLcDUw7iS>wq_MJfbCC>cd> zj5*Tz^3@SxRfKAwG9sp#)JKc_$;bigGaf}QGACbh zlYvIklzw!{8*)O-gouJ1V$HEVvZ0DbIFqsgCdf5D5)P2s_rPw<13OXLh%poYq!BHC zh&s;OUZrle5I8PxD*21rRz{;Tr<~(REtv{bc6O^=RkJsrD%GvV$1Ly^Mo+>N)$+X8 z8H6nheVIWR78O#f!X1-qK+KM_EXR^HLdIk(liZjjdMxcRrkAnl*0BKOJj$((Z9o#r z{Rp_Ya9xHZ5GBkxG{sLLd2d1%RUnZLr;dKGfJF%cUreOuwTfD_BKaVP*xs|NN{wk! zkOY%T9AmYq-0yy?`44&^X&dQOu09E|j%q;il6QoRQzc4dwG2eCWX&x+_p8w3ShJdy zkSH=RrQ=o#HNe|Rv^VJZ2rV;Xj~2{tsMR6}a#FTNjmjrSTm=^BPG%_o=1rx4tU-t- z4`S7y_HA{ZA`L>RL{#%7l2jZ`QfG&dDT&4sr-LyouBzfnX>TZUWChyh{oIsdEsUNfm$YFk8n|;-jfpb*{6Gh*EA9 z*6$L`Y?u_*K>Ni4qU4|jIjBnuEIb2moF!vL#o1hLzybq!AOd)60l{)`11`R(BID80 zQ7+2hf{?=_IVeDv3c!K_^aCE`U;(GdF^>X7kbDI&Kz9sKW3zSt17-#&a;mKMpyrUK zA7ez&go48pEHkbEFBDCh&~uKm?1@(dmPk;5H$Bj4tshh&TY{2<$T{1OC^N}N6)}^jpD=Nz0?C(fU!!ZJq>fI=^GG^k_YSD6Dvq%wR@MD%(2${OM1W_#ZVCLRRx#KDY8Ca(Pm{^9ci(2Q`_p?+Ta* z`Zre*kJAwl>PV>iLzM?=x7IK|uOSWkQ;JpFjP>K7zTzvBJ3R=R2WmkfX33oe;XD2? zj@*GU{`-;CAUjS89h-O)@W763nU(mFv&6cL$SD-bi4O}Rk*G+g?lZrXcnOD^ps@Om z9ukZ*yj1Y1akx7>G02ufo!twDd+h`CPVYyj(!ldFg(8vx6 zu{8f_zcpf`S?h+=ITm8+5bQX_{Zk6U^9TcGCzvAh>T(kzB&=b$`O7k72C3)#lWdpQHhfX9g%4V zcxaZ6Ih~WShXP0>n;0qv`x0+Bh&UmnWh$Clvx= zCI{;~h}()j8!8p+t9&UL>;Oqqh)Et zrkEN$>by0Q63BCn*-;rRBgd9XuqXN`VfnOyP>G0exdB2M&pRd$Q4WO4iTv;nsmmK! z2}vz!95k5+m`S?=#G|h<5g4>S;qYNqw)EhJF6l8n&^#g;3YeR4@a4hRhcIKIgZunHvf1MmOzJj$erF? zn$LJjnIp|*>90~UfYfq|7V4DO7>E#ZqP#i9p-Adq4_3XW;2 zDlxCaDyE9)ha6~>zM-uCcoWhKyWVIB-~p4GNRaO$I+CN!H08MCc6 ze5UTG4G|&;L#iyw3!M__9M|y3S>z;BY{{JS6iW=dgOV9PTs?8y2wpLW1053x>7kTh zvA}`RhBONB*o}Oepuu=8+~F$l>6LYojo={5dYK0USSkq72>#3x!Du#Pfw`Q#$8`IV zBXXKQ(=<#273sJg+`1nB1F@u?3{z6^nbU!x0b;B8xH8f!5B_i#+{mZkNR+ulpZ^l6 z%`%A2u*xiTHXSX$9rPjW@VO%jDUmY4<9ImT7zyZnKXD1Fo(sMGNEE(t2o7ntaA^nL z3Dp*14r-bZ!2`A#T$OZjxzX&$-}4#s_!0&p!;l2knW&ViqmFF+n8p-6s^J<#!VZX2kubFm zb@UKM(M8adjjz(7?HrwgP}6k!oRL8jqA(=u`>`8DOMu9GHMZ+=*Wpc14x8OoQuGcN=YPu zgewiPD1tzrNll$`d6wclHv?m)bW#(m5NNt>O{8QV!r~kP$pSe93919~Fy@=R`vhq@YFR3UV5cZG%OfVBEJI4c8$nfLx_FEgFD16S+w{b4r<{nbvZ$ zjF(u_y6MyZRDw#zwM~ogyM!#nDng*1gQxmPj+rfhlHk#qu_nPN*rZu12g(Nn&=`Yd z(K$+~9|@*sTPk}Xht`uU(;!P>Ng0NK3N4|{P9arB92o$SigLjzDvMf8J0UaAbVDVo786YV2SYEEXtUGA}|pen%hxVA!q zip+yC(j$>IDv^I!vj;hfvM4Na;GNE~CaJK>iQuLtxm^y@K4GcVvfXJxRDUgWAe#nbAm1NF{Uyp1G+^HJ1(UAHGW~eJHJORl6 zsx^>H(hYy-oR()|DVebi$ml%%nrO}#FUKsl_ng zr5YlxUB$Qv_yIPd=o{z(B(d6~(GjK>(Ik;+6@dYrlOW4c0z{Y`Eg!;2D}5*b%doB0 z2@VC(7`CM&J4vpyL0`*YvEv(z#Ay>lw(Bed6hMBj%9`1|qn)z7Xq?JB1zVC5l3W;) z9OT#D!t?t_kg7_^zth=rP)Z+VX> zAx8|H6ccGHcH|E-q+H+WIVXy3LLp!LYk@+O49VKqnesgRgpoWnurM(S92_4XIuICQ zB``J6@5l*>I?|LP2`IUqUHym;FP`o>D9_`V16iXrnv}4rj=V;ftt}P*`>EMq+z@UQ zFwt;l{D_v;fTOSiiKm{45QT0);Vf(Mk`;@ywkjr(NF~u=lLCy~(YuXk>n1>1iJahO z6$ud^;tk}8*4M-HAu*?lV3d_$n=CC1C-oTSI1c#w=!;dCq0po$+^h(>4Wy~VQQqK3S-pRZ-_Xd^cxH|WcN5e6g=ta zju!A6CERq0kVdvHqi~1}GE;32JF?{I0t=?u*kAH6Rm7VL$)S+{Q{<2Wiz!;l7l5(4 zErtk}L0r~OAl@LB;|W7EBP7W=D9?b(Y&xeIS>I>@lsFpRYKjswicXk_WQsue0DX>{ zRgPT|-px3rNF|brPwpU@S-d6@jBj>ZTv+dhnwd!|L=3~JIFctT6qg;%{t=2b)TnO; znuT!Iq35q+Ta~d&BsV$7Q&M`Du&ggj8S$1cLZyklQ;)&e@C;ub(XPY7(YbITIZLOl z>7lX_>=n&*sctT=yw%h31Q^{}-j%Ory`5k4LyoJrj+rfU`ml6z?mMNb&|&0_dFpk< z$R_l|7gzr8F+re~F6JD$`A2S=hPwObQEpa52h=hUwktyaqAo2s-jG_I6iA;QJh>g_ z*pn-??lWH+$1tnO_&^g6a6BdDPaGlL!jA2zUSfl`A*!Ai{$M6EaL# z&fPn7{m|vh_by+-hyA>DQ)e*aLW2m)y;C=GVZ)Rv9cEPbuBAPA9?Ru(_c3F>bN#w` z>&X+H$%5x*mTUL!+|Y7CLB4Be)8jy;>fAwn_^}(tbN||*v$|3tI-3R6ku6J(NgZ*_nt{9xuo1 zQzZscK7gj?R66ryc$Qc~)Ew+`OJO#XeFm}$>z^&jyB(}1Ri<2D|JX+#Nl&RMRGekH#pQ-g{)3co1}1eJ zn@rt6PN<^NlulL?c?lFc z*Url$E(%&&?x=lr)$SNzPlIxiyV6ZWl{GDHnsJuXXXSJ{)l<|KR};b!*H;p1qBVNa zQzgY*^G$`f$?ARsxiu7edNTxJ%;9wzm%&1Lli+hIcVmw?FA?o$<4DRDv&?%ZCLGLo z#@A|QgF|FdMd-PO&OH4XT2ji%4oJ1krVZ;}n?$wgcwb5bx}i&OYW5wLqO&C6pfpZL z(0M{tXrId5N=8_)ltG60k?HjRv;CC15BpHZeY;cJPI^KjjO0X1w=vkkUQ>{`ut*?x z37z#$0u=}$1u6<;&#^Ls70Ou9EPpG|n06GiAB{wNc$rpI$R?Gsq%MMV$>4G_Q;?0! z10LH7*Nt$eKL91iPZ>mqJ-T7M%2h-#z#@#u?qU~Zk?J@IvCm_ER41BD8@lYQF%~cL*ryZceg*><)MQ1x&aft{GD$$HtkS6I- zB;#6=4^YiSC$>o}U?9n$i2yZ}J++)IljbF-1O+ZN0;<}yg|5z6CVVI2iOTGkMUS?_ zrc#1y1_3Ien`A~HNJ7YQRGB^d*kzqVTMAJ_0?sEUrFsp;(F7T162ZKPs9#f>;j(fb z{Mq-%Q*&PSi#mbxP}uZ%u;0&+Y$|iRL#fg zs7g_TL9Ra1qo`P3BOE&UO`!_pW-D7{F`R6RTi;F6SUPLC6CsnT$l1;t)#5E^vPFiV zf$N=6;*l)>3XFM-f)wV46k>yosxAe+9BiKG!@H!ImBO(cqwJ%ZUk$e^qHuJI#j^ib&^tGUksc`*geLF*T+VMNMTU z#v~G2=1b&jQ6fK@5--;HKs_^0g+BtKd&Wn-Q0v&5AR@&1$&HaNdEt~Q`bYSsE`^6v zSQ;Byr!O0hFZk-2%(#@7kSuX8e|cr4yK)z#EGQ~)=95?wh+D4W?scT1P>uuRNG+m} zP7$s#beWnOZ_sY2R>t3H7V}uQ_t&{I-PRyOZYf`;TUaw2B#J14^ zqqf4GjzR`Y5c|CGkFlnMk+IaeRTf(>Z*Z&}y&P*#icC)E+Skm#zSTPQ!ezL?D@_sq zJhQ*}H7qQ}=Il7J9CB*4<_y9n=L6zP1A#jzf|ph=_2av`x?z)ikb~Fty z1a{F;2U;UWQ(LGB{Bu5ypy6Z_ znes&?U1E!u;W7jITgM1GLQRZ2dJ^Oj%~xQ&!yxgO8Kbi`vYmNKkdX*qgr$jBY#Q1j zj)u%up9O_mM8&t1*6@UcP{~cP1XLsG%}F&Bjg^X42}M@m-AxdQVKl|>Jw&&N#drXq z0nCFbVW6VvTftpP`hNT%#KWjMSzeGBFyd>%K!AwJIsTBAkc)Ii6qJ! z0Uk>`kV6hA4>=gXQOu5VzE1zuoMxv&ZSJdq&r(22}fhDg&<=t$Fj)NBn;ibbQX zxI~%UhU)Q$Z3&yIJe^XEh#K8V(NPIiHDetnjC24a-{1>5ZPgg+-{|oF3^Hoo6Wy4& zKoP6##^>PS)b$@a{T?c%N6;*UrB#GN5RYBCRXV@}=!{)CcE}?sQBFXI9~KomHp#=h z&4(EvfaDYcEyY63peZdCWL+MOrBPyGM5)Kv# zRf&^4N{zi7I~tVjASEpdTRi4lo4g@WT$_35hkhKIbl8egip9s3VvD$2R|1nbG0g4l zO}J4RObsOr(O7o$mLtC4TRjLW=E{4mhexDOzGUN^5CnQyPfOPS;jYM~zVOuwRgzX> zm1V$#0T=*0_yrIGkfPgp2^l zU$*F3E<}3u6EwA?S+Magv}6(I{}lnLt~NNHxr z0+obHeW6gjmTkIdyY!HW5@43jsJ~%LX;2b)K-;PX8yeCDg9fMh<>6uITAK9K;IM~b zirBHRNLYkagh7O_7zKJHNDU5*mmCR|iKU*sOh!mVK@dl&giBj0sJijTOkko;?i^Fb zl2VZ#X<6PuEXX>g9$+a_L};k!U>u=#iG*MhVe}vu{b_by3B8CIg2u*4oCC-ZL_QQi ztj5P13Q;8LL_I<3d$Jv!niSXU*9qZH!AyswU1d`k#a?^{m_Z41#7O68jW4cKUlv8w z981fzg+2UL)fk2hDGMd73IEuHQCLuK3hPY0*KfH0mh%bVyx|2)8H#Gu<^t7~X(G)+ z9Vj>fhr2~a1$Ab&exh(#q+u9MAZ?mEkV6a1N4#OAyQU(e)}e$r=@E`zrKI8xmMDHE zBCf7#w3LL9K<}Egn%WBXYA+p>L+tcKfK}{*ni5}L)uaK*$F(KBMvO=%2J=XbsQq2G{S{}B zj+ZzO1qL1F@RnJKQKG#U3Eh)WotH%}+ttSZ$Jy9JKB-&*aG2fd-_wfQqw)>uMq(#U zAIoMZgm8w^hMp3=51}BGq?VJxZ0gO8lM{ z^YugW*xU{l-Gqrs9Q80r^hpN8AAW}aByU0=>Qe0X08}C-9Tr&(zmcMZOl+0ykA0a0 zXyRQP0w<3uhkZb%YZ_oE6-=$n2O{p0pvh@Wiak&Q}TL9yS|m-iEYhn zhl-*UT*yu(*UTN8(y|&3|DwkdAqmDoP2Cy_bVv+vxJ;~CREL;HZ{6B>3M;Wi%(Xq9 zK3yJd{1vyMTw$E75b|#WZjV&r%4g-t)3WV25hx4QX&Ns_w+=*8*yBO1TUvUK?0Ijh z97w@t>s)F`fhoi)FU)=gQnLjA7)X#vH}3MLsZ^|bM31n~wZd;pL`36N2|W);>?kfX z7lpX+<)69-Sr*|qDW%W>)pKOj>`+J_#hop4h^;nqK?u=2kOK>(12>PZ$M~f=%IL%( z$i!4d(vl91(Z+P8$L~#yuLxU1TLv^4%#HOXT9}V`W(-q7B7w$8P;^V74DmrQRZU!J z&>F@qS92>t&3#N5&$x6p7D@5;q7_-+hi0dY1a4)OPrEGb{@7zcH^hk`iE-WmHy3B!Y);eNl(qsOwcCP2JAl#*n0Md+a)NYfiRotU_+3iTdYp%{7+y+ zl~GG3O>kesDibh4h+MJ%(;&)hL-kR6OwexTFSZWyAQs6)E0OqGu_5o_MJ0sXqzjgO zQ%iJ1F-3ODk%S#RNqfmt{Lm+5{Hwt1Cm%b7i z3fNzO$!vqPNoQnPUtdU@BlWgZV0Bq-s1hBkRRwus1=8gVDp6QuQ6eJoe>^<4<4QmC@)Ri8FOmDz^rHvuQIU}ugFiXic7u60(` zol-v(Ub6*Yc3-oZ&7Fh%OQIyIU?q@euBI;8#_teit4Ti;u!|?E=k%pG_fI zoXA?kyMv4;{?d=J+GU8bEE>v9Gx7@283!JN;i_~6L4C;3=3)Rn?)94!5p!z%#*HkNA?~Oi*Bf2AdG` zx#orcvfNIW+Zs**%tI)li9-AM-(P*cp>rrnBH@tpI68@y^G3d?zCR`+qc)T9Qh5MNR)&m>#u>}3c^Gf^q+yJ-)uMyaaC$37LA zlid@$g89%He3wt1H+SX!ag6A(W5I|cNtQHu5@kx2 zD_OQIS&-wwcIOJZdw1>~x_{`<(JYq}Voi7M)Lkr@k0VTh>dLu8_YP*$eEH5Xg=v%j z=hJsLJF3HJ_2X2kK{>u7I*_2ppBvS}RF|)tyMOJ-wTn7byBnb!$d`TWoz)Z#M?b@8%)fT>PB^PfA-8hI=5G= zj8_jocXmAFoO}ts-i^C2NZ|A7&)1F-a_XW;|Gg&KTDPl^atlD~Y$EC=b)IUT|ytK@Er<)9;a}mri zTk_C4C)=)4`y!YznI8lFA1vw2HFItIG;{2g}q-Gb}38;#0H1n%ZG2O*&I^ zi>;2n!%fUcC4Kax+upH?IiV(m4zHT18m?2`DrIyi0QdXpQizP(%Bw<$is(TgRn-em zqC)EFqBRYAZq(u?{WVNT!!k{*cIZ3{F*2E}HMd7Wst}?=7sU&-ftIa_K}UVfbHdXo zdT*dN-6H5EQGq?TzUr71>mp>|%9O0jl1uGEE}6vYU9gUbR|xgFPxTiwl#7gW>hg^FI=;=AFZNOv8^ryDXQc;+H5L8DJ)Mxpb~Ve9x60kV+@%kp1gTV##T8JjseTMJbg}G)>_44f+w3lt zS8J@FiXhZgty$TN2yDMd(jD{OS8B@E>VS+4LnTZ9w6CHRgN#o908_*)?c^bpis;uD zJ&!g)$NliXLbsEV;qS`r+4u6tZ;W=srZ--!f5xKyUVNFJY|Tn}&Xe*FBeSzghZ;sY zDWBc6!-(-@{5<|PGcO4OEAl+OgP9V$}NJZ$5q zobUu%JVB0=R>ZahCeTA)F$mpOxRKTINiJxJ-VYUmIrGCQF)(c@sGfeHKC=~<>?SvPecuC!npUEPmEZ3~+ z_3?!e%hPaxG$853DeD3DHhJv^Klt0M|PJl91X%>l*{v?i3D(jr+KK072K=D#YV%v&z+0EQ&r-N;@ zqH!omIF5>qguL)tQ76OQtv@9dg*yhodhWH^K=94u3_jw~AW z_3OzpTzqcsS?2jWp)Tq=P6uvjluXy_&1O$74ke$sf9Q0)WV+j#)4mOv5Pvu2ld8u2 z3;P=(#nW|3R#JIlmwGNYtR!vj@p*ch&T^lFNGQjJYUH5_-_iIb#(x#T0 zIGb_Pj{0KP8f8T8bZg+sL0)j0x=0{6i3!bZ{Q1#0_;B-y)>q;J^+SKD*zO(m_KiGm zx7TTFEtqBdwYu!+`cC+Z%RaCa?=AMLjzt-RcG=>k_6Hil zTQmp(YDhijc{SEO%MoY&Yg-QApSMWiO9hbH%%g~+X=oPXZ`?5 z9F39cw!ZV>olvxH!@m}qSLYj3B~Fb(ibO?RI!pPCU;nhejUJn{c%S;E-`7@KDoA`Y zPCR?14#K!AS}sCD`$OkAw<$sh-b9jL@M85un;vi_8}W0 z)^?iI?b(bChbJEyPTO~^`1)OWetXWoXZ(_Q7iUZO@lZ1=1Zjyl4XB%;`_MDFN|bWQ7A0US%cM&1JC_+$Q}hHQd3|wrB(akesAq!Vh1rt^Wr? zcBwPF?7)(4a<*@p930ypk5%HUFeI;=s9>jo#^UMUCn&kstohKr=G) zd{y#Qloc74aTQLi*6QL4M`-%HQe_8Jr(_<-#wxhUe90)a)Rj^~rKLEVi~Y9T*Lq)% zh*M%@R#B%0*Ef706hE1ySQRjue{lQ#UaEmKlk7v^af}kNP=>6r@Gj@`y|){6r1OQ> z)k1pH=5@xlYcDHr;olr_O!CkjG10|7eH>Lwf-+CUa1QRa9?iPS1BevtjdQMG6KwP9ysQVO*+HnO z4U|wxy1MFwkGy;MvySRPPg~+=F1V>--t4SNDLxA|;xo;B0Rp%-d)O(4nRC$)-l7F< zgV2nH8|=_LRi=G%z-$nWtqPzs+e2=ThAIlROFOgC)j*f30e@ae>hW!G=>AJ!QX67o=V1Qa$=vGQ2#2#+)!-f!PQR zQ+O&xv3c%cJiH*6q?>QJ^J#5|hmjqO=ez2gsuf)n2oL-e)R<)04UIm4d(ntn%$WDp zJeg9b?73GMOD2aDv|?ws_iBu_@OwDg{)~Mp)m|`V`smOb%2@%&jERO>0F$nqOZ)<& z0#8)G_ZgY;hPlJF=KWoE4nzeaq67d}SR~#x@Mtsg^PTkKd$+1LPi-*HI{-%m@cr3$jzh&40>AsF8+Ty35jpIc$f#?>oaR9SukZ z=P9O+B3zQ=q+6jNaqiEHngpZmFQI>s%fySPIsxr6J>7>XH9%V7e+DGl-M)~L*+-Uo zW=I>Oy(v4kv)~dN&jmNnW{kRr`es?IoY{!pBBlQ8SNh~YrLAsm?s-c;9c=~moSd4t zpxU#!Z~8xgTu@?TqmLY49hv|EP2r9r3$f4@T=z>nq}CXtA3!%`N{aK1WW1>UDp>7& zxi9Q>dxo=Mi&$3)lo{RqBa&NH_`3TzNMA-Ck8>LfD#NAnu9dN6f)O&4Fo9+Cg2Ri> zjBUt_@Ayy|Gh7La6A?()j1N={!V@~w;dP&uE+8z;G2&~<)a@S@6l0&*G>TJHeI#zU z@xa&M!e%CXgJ>juv044SZU#C+ZLZPH6l8{~;~l|wf%y7zV7t4_`!FwbDa#Kw%BFQGMDxWk~U1lmw=fB60 zXQvIt*_)q@4S0VqDzB54(RM75Ou<)+b(BL6{gSyy+lr^RNw@>9Lu zvBeF6-nIHYXNDGQ$gP@S;oW1hi4~dLmGkk3iDHV?OF2Otkw;uQ#&z~8Uh#jxDeuoE zKqGL8EQjbiO-Dy{QG>6Wt<*}KoI6-7S>p#tarK0nZzme@FKb+g%ygu9O*}c6OM3W^ z9gwUm$Y4h?PpDKnd*sZdcb*ynHb=nIvM0^WH+COWOodn=QC+1U0LD%E^hoJ(vkeLp(kgJ zYDQB0B5u}-1ANGFD&UB8R&^7M+Z&`a0_@6w3EB=zFrUZX$&L%#(GkFV6q&kV9z`Kr zC~e<;yO|FAn0C5Z1B)eCY{OA+cOqjp)x$k*hFxwuC(bXFH0KC`rkDDF4v)k+w(5*H1fdg8?OU7RD<)yPAl@HB{vBo2x~z)-N%KBU()TWY#s8tx}Wn`VF1 zN)pAQ-P6p1=oNwU-55D&Sf)(Qv|r9~ZH{ka@$b>781+gAHE;Srp2k=?IDRaV)50z4 zUr7zyWioHrXU2_PiGdo7o}h|Z@b-&~+I`0T@?I%9tK?dwa%mV)wPz#yHj#vWWN_Dv zYA^lk0c1#&PJ0Lzep4Cc#8=RV+|R0(;&8~&_9j`v7D@;q`{rMc(_H7o$IW2-s@IO@ zB_FsZ1BF{5n?v4;&DH_dj&{t`R%hOc38yF?;bd=fm1Q<4db@oS$@TzKz4Jlm%S8FQ z1~0~PC2(#|2#~rzv)aUTsEmW3y_K~wXA_Sbay|?Um}fri^0Z%NRODJ_A>>ZUVMn!m zIX~qY`j$45F1!-cs5|n~zYw-PjFd?f;0DX&aBki$TN2nb`*pGVUka?{ww#)?8P@|k zpZO4;1@}v$P)EjlO|nLG;;>7^V8cD9D^!#r!Zt_0*R|8GksDx-r}vvCY6<$nHv#SN zh6?nO*vXfkSJKYO?*VEN_9`2S?~S~*`g`ZnDU6EMgUOG^n!52rabYTPhUy2EZkgXl z0udL!6&#j0h0cbzSA~)8PoEJvEwgdzNlECG!g6HNhHZlPLCqD!f@tC(UyCG#tJ()q z>K=sV4$9KZnOJKEF2}7EA*!~`J8yZAWSFpLYIw+ zu=F3~sG9OMZc;~g<;+L^7NSv2)lr_}(NF86*MfQ3O9Wy_DQ96-VO24CBOB)vAtQp< z8tjpk2w!(n@17CHqw1xmz9QKJ(kN8O?nlO&@s}NV9Ni+k=PG4<3qOQ8JD=>!FrQ4Z zL#MIArt5E--_r^!PC^sbX*=)L>Uk-*O+SBM zzbdk4@`Zi*(UE4D98~UCyR$n_Po^+c#A6Q9+KCDKJvfx6=M(hqb4=J$>#rv(1bdqy zQvcLTQO?RE`NInDIPyi;vmO`kmw)z*zMUp#C$!SumPHw^*NU=Z%#WxvU;XVErhYR4 z+tv2OmaZ2_7JhPXohC}{J%_k7+#b2nY0(58i9w4}O`RnPq-H+DBKGgR5-;wEqRfNA z2^r&B)^72aY92U&K7(Doy}`~bAZpFl*r~S6!2P5X%{|g@o%_6;E~-VUJkYis9w7wF z^uX`N7;A3d=;@f#WhpKOvag5}v)TcO(D-t9AG?1PF>WEBy>Q5D6ACT5UN60TN7{k20h z#o#z3kQ{C{|F!_u4g_CLh5jL2V*i+OHq|^3(&dbv$m3Ds1=DwZ)yU*kdnRrvQaPD} z)@hOZym+J?a=cRg%{;GRAY9{u+ADaj?p-j;Z))XW!KbsCyju=|pDCWiV4m;Ix5Bt{ zJsd6y zcf@Xb{4J0C+fw`?fGF2RDk8yJ3+!&{V z$uy!gu;8n$|KW0pE(x_3M@$+0$+|24yCQP9eCMw(+9!jxIq_N4f%bv)c*;A%;+1&>92)@q<*=h01@-X(?6rnFg7c zjB&b_8*OZa8|h5eM-CgJj!no7xs*{T&lT+J7AX+Xcb5E|o5MS6V;*bq?B`Q0`hIKs z_kaR(1I4kLAS1c4(|`LbpnoE(@r#ooxcRn%$Y#u36S+we$k+Q3HB-HxzP22S-q)96U()DI*4njbJwCq0X@9acV=$n7(Jl7*;sP-) zvf&{|v9842tqdd)2w8|BkfK|-Q=$!6z>+x$07T=lr*$jRwj_llEU03a)q`NvUcz#^XUnCD)M%}t`~AB!*B-gzpJGpbnbv?Y5@q2+2qMXqVaz8V%?&&C@eg+G35J}_nSEn~nV}&lDS<8n*$kfH&(deRLt?5O%ICTIPuds>~DRP9dBbw{t9!n3Z4okQlBDIW;A;|({(e@6>ODbcB-~+HUd)ZoP5~()TIds@h!A^5AWo}-b zKBg4^;k-+`R*|XxpF&yK-j47gQ<_|s`C6Ta|u%Vy=tRCxiCL-96cObrR}OI zTX#j=pwywM@|X?86Sl`zKKUe19Bo1a2C!V+yAwRyi6Jx1#H9c^0A;gG$&+@lH9Is( zGO|Xna3NSr{1aO=wBl^|E_RM>lQI0zwStM}Hgxp475P{n+Lk(b|GM~o^K+S13At{) zuepk{6k6{~RxQA&dDfqclS}gNd~}4sry#&xCbXoAhzbFKUx<+VWjV22o#4x>mJTlT zQvnX5jpazIrd#|eBl?CtoN@y?1nekt^oi4dl^HwzQziQn~Gjs6siu5Jn4(Ooa~E+!v*2>sbi6(L#IWq!yWCH(O8`N%m3g+GUkHx0ev z9|^apdbI$)zpmyUBNX68YH{=KOs(@GZdi6Q&Xzn;%D68rIf%oP%r<%0G|7+uIm$!!d)BC< zi#j;Cxq1w1!~==#tw%hb3;lPIuk5HyC`2=l7t8;KY=Qg;sy_aPbI!TfZ@gEz1HI9c zO(id?UPYV!-MAK*Zk&fxATycFbJ@#3xM`$U?RKL;U2NSt_Wp=Kz(|IEZDK>sR@%s9 zqV=lJqZsbl*!KGLvW(LHhiB*QD;EnFAOH*DOru6R&^cq_=9EB9a87Ks@Hu=_B_^(V(RmQ zjDq^4(^BP5tz#VfqBY&V7530m0 zj(KiJ*nP8^zrXcjab@U6QEUn0;6u0!xxV9A_T2)1RMF&* zMCq;s2l~OgYqZH?#mu|hkSZ^{V&$ZK;lC-UcaGRH;Eav%7gxa){6AzJ;k^2;lzF~# zcE%7<0zYRb5Sej!Zna={ooH(h!+SHgTqAH~F15KS#Q}hvj>6YgBuM%#z0fl6d`^P5 ztLHQ{>`0We>l0T>BMr@PtUny8x+slj#A+Z)>t#&ezNl^agWpbt{%>wVw*!+-C-R*s z)dd2su@5`yl8eP=em}yp(1qYxr10~lHx*$zq2&}?h69_-Mnq^_KB1}cI-@eg4i*TEYqCs&`y zCN=?#Z56C%kn6!;%>#{d(5R&(r$!Z6q&@XlDqb=Qj^T250T*{ha`#Xa8&PVSQuu4c zu2m!IVv>Hm4JI=NQd_8GS~|>f1UQUHl==B1Fpn21x+AQzCAgixQ)DMnel}-<dB$QtxK>yK`uez7-hAOBfl<)PGuYM_4Gp`_~ zsMsmST&hGQC|KZE;$u}j@Kk=)t~^gxP`DzuFz*6=7Na|RaM;$av@ox@_)?A~>#TrO z0EJa-Ka?N4R{|d^Hf5@?HY!%#6$o{z*oU-;`^({XPIxNLXnSXThZ-{CDqi9$wT8+q zqAH1!^2-OO?T4CgGPT?cwd5`3TxYd>QwOsjdMzadsu_VR0Bb0E#Y;;0YxK9q|ra6hJXU} zKa2^^|1u^f7{){oD^bx~3qy`PsddM2B5CRAZau-zo;e?INoxcd$~vpOfB&9GQ?RnK z(k%BW0)ZI8r+$3=EoLFR#U|R&PzMBqF^0*PFB|RcZ5W5d*4Fmp$1xNNm7AU0)z!@| z%cX}h4-XG#6lDFkxf2$Pa&&YK3<@wvwIKnM(!dz-NeFs+x>XhBS)^c;K+?<0^K}M( zDn>etqw>tdQ&m+Rm9T-IfLvUay4-CFxZI8r= zB5C2>OQ!1Pbt_BKV_*=3i3yAWMn(t;L;9mJvIhn*!GIwcR0M;5)OF_#4K55WwPBzS zbz?m^+_Iv(*FJ#BvtNC1eMVJFy`%yqt0>(I1jFpqF~|vq8NnbS7&AmmOI}M=-Jsv| ziV5jwt$vgiT{qP>xO9cFKB|faG0=xzKo&+mxw#u66sB96xx)A-7?uRe4XF#SlGRcl z?5V>TDYkHgfw3}%UJ;j<#)u-08P0kEo@;k2I(otwd*q6k-%nm1!=V(VIos1j`&l#5 zF%Z5_OT&03A=b|JI$0RG#j%bqAfO1tq?jK>V~7%4J#maQf?-dL^*kl*Y%%%@MsC4q zCm44H;NsHdNJk6Hf-n#Y zhHb%kFNmA~ZY@g;dxBA4OzkZ}AbX5kg7HQ$@CZgJ!EhxQkObqCU~m!)RPw(F3C1eH z$Rrrs1OuC3unP=Sf)PugP#DHM!5}9Xt^}i+U?dZag@S=lR8=weAr%zF@FoWs|3pxb zA0wY&I1~(%g84H3KN*wcKU4rG$Ji($8bZ=*L-w(lzlteL+Ff;%x!fkQ{K&nhC_*+p z@srOxxGANCltan@cBfCN5OlK%m#Mv04E@AkcDBpX-bhU|opPNwEvwn;k4E=d6v`-E zxN3+O$idYxog|upS|{LRUzFw~$KOwLSoprkS7%$(Z+)~2{=R2(iyl$KqCxAq=^+Xl z=eu#$fParAg^c}f#U|oAEeQv|Fpk5 z7mAY$1oEe{7!2NP5jUAsX)OwkTaXJIqY%Ja)-=%H^$0m)Ak#|3@AqWrI)dP@X~=^r zhNtuI->LjW?0*sp5wDAQP*Ir+p8pW_y9tgJ0t!DHrlyYk$I-MCo4sYh8jUB)UHuf> zK&vtiU(szh;l#ea9YiNR+{?roRvxZPw zLQ%i)EGr|0Mmn}qm2ynxBjs3%vU0O8I2TOhH@Hi}>Hj7j#MlI#9)>?DiQXtgbVf&0 z{22dH8%ckJ*HDQ6@2)1lI^s1moCHF*R1QzpboRdy;i@g=sUpg!oXOT+&qh#G&nM2h ztY#7b=&sqG^fDj1rl~d*elF*XCFZoPT6(a;asHW$srdK67No?o&{yONf5)O#NO3fT z>9Fe}kg6U{P<#L}Is_Ec(sVRw{XDrMT3HFMuG~gIQnfKeFoU%a4Penr@xcBX5*=NO zoe#h!`n#ZpO(f>oVgR^`WuNP(^VA$w!k>6ekB>&F;SlvQaFcuO;vNH18my_G;PAk* zqWwPs)kmamov-u({baW)xIE&~%A-V8Lr6mG1=N-Wl)pq6AKgAR&^Z0={*WSCPd^jq>q$f2dpaq7(98D` zYHA;ee&thpWO5))ebCYS(Te31-3)MAf#~SPzb7W5i+{t>8mLd;x&;vn3C1@7z4r2j zXbQ(W=3#7XSadWXh3Yb9(T#Wv=zXyH(-8lFtXtfUeup|k_IM^M82`~8G=IG9pe*U~ zD1DVDd!DyN+jCw2F35Gq9`IHXhrY9H6NATl$G4FnHms;tt%(^F zkk!-G9}UXDNJr|?Vek}TVM^kVk7YOXuQA7?^Gaj88AH9JtZ`*IavzH;d}8+v+Vl=v zOQ0Wa!Q4K3^mW0CL{oVIJffxj3x%j$^wh>!BGaWhf^>3s1RRcIEaFF@K)u8fao}J5 z^PHqik-pO6BT`Olps8GPiaUDl)C@r84&U7~a;{LXmRLHD3j!}TLrxhFK=Vxu;G(RJ z6$AU&W_=eFY!NH37V%|;W7TOfUlg}kC7zjtimvuVxibs8%*z`$V45Et;65V6$ z0>N+e^uMLrKXTRzs#o>65QdGtwx}Oh4peyuO+!v?HJxz396oz}@)W}91GFZk@W zUu>Rq^>jM#P+9g!2G z0D4QAg_eH@smC+ z+1);k*?i9Go2oh9Lk}#o6Ue7OVgKi-435HeHNWY#I6l|~G#)mviVx`qqIr&${)Tph zA97V{-kwFocCiKzN6UA`F_Lm~Ec)&8%KRhYt5LRwq!g^Ss_td5Of6t-i=@aYUXX`I z)8qW&lhC_3hz6n`Y9cC5s)AY!Nb8T={UWKnp3bVP>{~PSdw-{nc$XJ4B+$m@ejDt% zTD-(l?|6pDlyd{oJ>qG4>}pvcd1bCfJ@7YP-1q^b@-90^ewld#pPQZXJDmVmJ{Byt zHXfPy?wq|`#78$Wc<()A0>sAwmIo$)OH}FhE&K8jMG_V+%bVTP6473nPa~}n9U%)< zLH$OF9L%78T)x9%FWH=?q&!yH*99H1>AjV|U{FRisSkRliCF8anW2FRA?gpdVRH`A z5nyg6EWjt3B-Ko%8xn7r@DSw|MKmNa5ntwyZ59tbizY)f^C@w3KDB-(dIQ0F-X#7F zVgrRw_Vi}Fb8byEU83vJF3rJ{1E^tJUozB>Q*SLjRWV+T5r46UaF5_{VqFVygV!ls zxQ7p91cDza28pnYreiL z`vF-mfYyGlW>QZR^%8pa_vhjM-}bxZxwXo=;I^-;3r_=IDb*_+K4GNWI1~R{K^Yd& z<4v&_SfK$ED|o^w3Jo%M#VKN&KJ*|fio&Hq6w-PRbx<+C<&E#7+YS=w$JPEBe zR~(Nfm+<>?=+TNtNmq{|G9Fqp$BPRm1pdQ?HUA1!E{c(?fBM>m9@%5s zRIkrx87Z)5?Hp)5uo^>kZ-VpFGJKn6nmK0Yz~8A~@2lm3&%CeZpm@x`Z47K!=ZXRBOI^)a>+3Eo{^$eYmT zvA$P@-mla{wapS)n#kXe$3TBtJsY7yF)7qi4~YY{h}zz z$j&8jYr=?s0`@J*X@A1b2aYm!wJuo-6H|R|a}1etiDi8gDKTzJ-)J)F7D%LJsWf4( zyApWPlrqhkAcKdP2^e_bK$G2P#<%^^-_`9MbZ>d12vd zB2W+~6aRGB%&3P87~f}2yOwmH1Z#O##8yoX#fPLwrX&=n3M@tUxcbDfk^cZA_8>xg zppp`Y0%v2%FIvFcXrrTSN4k62e=zcMWr-b%(j5>BMNeKZhtM4jxyK0bEX#prf-}a~ zfPSwCWFB;U1uhMBc)?+|e_LEl1O(ra?H>Sdc7QwCMJqBNiktn9 zRBC5q*}y6@n3J^?R&lFL-Uc?MIwLq!^yW$Np6z{Djap^iLy4>zyg>fyxJj??ghDZ z<#`r;C6AC^jhhrcaA1x6-&JXv%o9$nK(2lp@h@hzGThhK#VJQlJ6IJv*(D$I6)z8v z1)5KL*8>S9Yc8FAB5w4qF|S%j&cq9SR3@K#NH9z(-Tf4Hn_Le?KNO?Rs*r5j<5J#Z zffA$}h?a(i-BVy^amjZPGYajsek z*w-PThp}}G7R#Mc)xb}E{+3!yu#Vph^|u=JLYq^b7n%YW8SG=Gr(wODY`8v!J{*%5 zGFaMB7k5jPIN`+<6i4djIk0^!F6-mCyEAF~LJqq#JYUd1m%`CGa*E+nGGuTppeH{= zR6I-=vMoXP$GKs>I+}arCV?+}%v#XMN;)0#15oHCZp~#$1E*-^UKMbxzWyTlRq_MW zl9-z9?!_J`bQc8t4JzTVQlAPn*kZ8!eM-Jf(W$b^T!v1rw>$&hH8>+xI_Eq}O$#e7 zRSKQ`fFf0#%e<@`43ss*)yG3X!{@c2Z$R&U%iqx&*C60eh8M{E+R6vLF(U-XraqD*Ik^m9EyAcEARw;ENg^p-sg=_yC>Q$YA{7T8G23ol7-mhGX;%pL1C);UX zNeQzbyV;$zjyn{Nrm8lN!Ui|WM`pA)aBUXAnSsd3LO?zLg zPyM2Ax94^Uc);dF`v8j>V59pIiVt-+{aww`p!11<_OtdIugA{l!5berq9c_C)mk0m}`mRBXlbDidypvXiL%6%x+etJ9!R@VejW3SlD`ac8eg^ zlxpV?>&Ly9^expBzrms!BFCumo#M*9FOCrm2v5EWPvTBt$@Xo&n%6naKI6?3rIj~T zz=0r*ssXcgZSqFh>f?iQv5x19UzoQj{FSxJTc;xb6<7DGkP9(*#l(D|*GWPc_s&z( zZMpk?rTB0_Qc*rt>)Z0i2G6mRsAhnk4p`rh6;`_wYLHSIc^uv1Qkc5pUfV@9u!nFg zZRWg20>`Mw!C|$G4fL;W`hSwJm=3fU<2CgXHqE^;9-}J040~ncqTN@R5Kn@dE@d%o zVX5#as+lZplCjq_j_o3R6IA1{+B|kFTz-ZIu^4nRvzH3C%J$v&HQPw>5&kz)l1QKT zU*JC^kg&A(eZEdzYW2m`2=8Rl4Mo@3C&)=+MaLUoo8lV$N7?4F;v3g;BE}Mimcs0f z@`7Jv$B#8P9f7iEnNNws|22gTy1%G$FN)_8sxEt)LDck3n(bWb<3809~XQu(jec)a?B%4xdsdjp3cyaP_N<}3}|3} zmC>=U@!i&bb28X|Z8T4+P;HCnc&il}kM5f>)|dwSS3jKAhKv__geHAmq17K$14sfi}U&)nYVin7$z~g|) z8<8&XeupS8dE3f|9c7%m>Ed6>!zhMIo^OrIW^HX_u8;(c1EyIuXg4vm>t1_^rEPrZ z4}#pWe2*GsU7{xH0YO+)_GvkST6NsdGOYtGr#+Vq3hG5~*5O!f{`6VW;|Is^QGo`# zA&)f}oh36JYeB0+^7(cvKikc2EhN1B-e&Cz?3IgBGN8!w*+V=c-!zX|@>?(QldOvE z1c?N^QN*6%sL|=)ve-qRzjXQrIS|HKPu~(*m=saQ$-T4(DxZp10r!wwkoPi2oi26w z+Z#qZ_Dm(z62YONC!s&uF68z>*26Dxt8lUlgK9o2mcL^SYAUAK+Jt$s7Y4@cj){ox zh^X7P$P1e>nr6G6Cch)+`c`Tvhr{`w4c*z~B@&qbt#mI-_DmRO3ydhd9Xz`(_NJ-% zj^~CoeX$GkSD7mlauD)P3-VN=hrkNJzqX`}Jw&9G~+~0=e)}^8MhK7rc;c|S8M@BaY8p#e^nusmsr2I(jGaYe^dL}%fF?2GYjF{bv3yD=r#}$^kzP# z2E~>#xuo5CKbove>!1~sVs_|uU@3<@w1lNF-@>hymBeb?Wb1L@1z%5@cQlh zLL-e{kdHlAcgv-Oc3KazpPVW!$JbmS)$E@3fOY+|xWv-=ZE5r9eepT#v-!sXGs9Hz zP4HlzoD+l>C<1x4OWO3us_UEnM`rGlSti8$R`S$8P`bMkqzlV&LC;IrL4|DHXYJKH z{ap}Wtufv)V>{>d_7q47RJ3d3Gj3KPG%h{$LO>tqYw63Q=4#x*>eT04G`|yKsjE+H zy_l1#9erwZ(Bl24*(XP3xlfgHr(A{xG&pXs+GyWjz1PaVx3#H?dF*lJ8YP`S-~RB= z<_&EK(3ZSQ9}811iljPz`E@w*aV#d4%e%VQ2Mvr&{YA#s7k_h*thWB0RVL#0&thuh zJai=F0NAzsS;$Vw@6rH@8+_@anamt`G}A0rEuV_UHK?-)sQi%4H2y|@ec5$6%BbF; z-g@=Stj#i*b1WpsT{XgCxYn&CUpP+|QnC6#qr%!WF z<->N$9O3Aq)jO}vw_^TV`bM_$JGvkGYMIDij{ETb91glDDRU~ijAYeM&+F6;_I5Cb zS%{ong?v?dq|!93Uy0+nNH`}nI8eOTEN-|ZG~OhQYBXewiu7fFH$BmLsgN6OlTnc| z_9e0QzIdp}Wyo~UJ??v;B-!f9IwW5Wu{wm?WwDO2`5na|S?%K)9jSb>dNxwUl z1%=Sf>QC?=kG`(>APUM)5)BDX#L#M}>~wi4Wy(vQqK&SZp`?HfE_`G{SK9}l=#)um z8Z0?2*5HwVW7cBssZ&@QU|^D!=7D0cCyz|>dn_*47vWn<-VM$r zcbRen%EU54nb{65dH+>?Gi_hq33ao>-82i*pI9_(CZ~Dgyu>noZGwq4c*o0ZR2N!u zDe|?6&Ev%W&1_11H)eXl9xyL6(n%3=`EJlypw*N8_LlK?L!E_eYKi`Lr4ePk6jrHc zOUY}5JZ+S05qF_f9R<85-?mK%wi|^OM?6Sisr>t^FvsygYGF!UX9CA0q+g>%olaRV zD-zDz(o|^hqpR_}GM=*XsE%nt!u@&+B&_ykuXrQW*IBxJX^*?XI${@v~!s89>bCzuXWNcAwC&Lp8Cb20Ldhg*4-lO z+cIFfn;v^&8Udv!&!XUk-xDt4Bom8KTtm>7EI$Og!se#Z zy(p1_Q^tn_f>v}Mr9q?>pmlwrE_K}ikF zl{2il*k+WlC<#m~TU!G@OR8_sVmr2#?VqE4YQh~c22dHw{-QKu!5DSoT}GL0pm}t# ze2yh4b)dWOm|+Z^oB60&pqJf_m0d?c`GjcC#2EAO_4WS%>S(ON7cBM zT+Sz@t1hJ?+qoCKshLkwoDt`;&t=@=`K%pkpfMBdn!2Hr2!>ji3GbR2Ifq3bQ#{q1 zbIs@EzV2ay>={VmB&H$95_{zM(@i>^LN|IMV`C?U?gDfx+(C9-*97`84x#}O`G@}p zpH>C`i+jD$yLJQ4kdf*dlw^m_&0_yK#o)P!^A0u7*@O|*l`5UkM$D>Pw}}|M4?HpY zrmDm4D04NIM^A&tBDPQ?cbn)?L&Ta)iSZA(ui{#dQ&HP!b8nf71k@0^H61|Pm78eJ z6?@JtqN5c7j}19SczyXqI%2(Fw-z!V?oF-%EmE$70C_p85k>N6t(Ns>tnsMi3HUp5 zhb5w?KSVcpkKOFLxm_Lfrwj}RiC8Jq4>VpAO|pzq0KaUIaQt@jf3KeYtu%m3ddC<{ z{7ddzYZZ{&jOC}+`Azz42&o3?L!uV(>+Fs)uS|4Wm{ESF4RoC7ilak2hkz|mD1H4~ z)I`{89b98rOXs;hPk;8fVh=ofSTo{_h*{|tMO>a9r@~coRbYa%O#v(3%jfZLy@J%n zmI+Hr-L5%Zx=ar#m0IM5sIV#Kb=4t73*UEaxjo`c3}zZ@axO|miIb=6 zD%e+2)fPC`821CJP3ajroX+{q*z^g}-ny)iKsph}XE9 z-mU5ft<=@d{rU8$Qf`V0Yx*$iEUY8X67buIJ+pg^c{i!paIw}Zk8i7s8?eoqXDf&$6P5w*pUSgkoqBXlQ zL2dsc#MNCvuD#%?&+AOp(ihCkH;DxETp!rIB|AE^i$;ExPE{$!g!vDS?^=)e8mO~p zdiHCF)pR~F(B;;%0S#3o=6vg*+Dn#BhsgcLrb^X<5a-DJKFk07pQzkq&MPKF=l|p;MH4q{~%JP7uk*bxzd%QDGt49)~0tfN(GL(};~Q zSf#1_OBNltYKZNi0WU*;tt*RYOKOV}At;O2hVsy=lv>w(gVQpCBcu}@A3c4OP5yMm zBqbNr0)LG(Q~IZ%n$@E2vv|8+qfuAlIP{v~$po{$vfqkRqh{n}uXz?#Q!BU|UR8l( zijxrRxx#EBF%uN;K;2|%FzQaY$bf zjUEh<2QFsh+I(6=ypCj`b25T%@_ZU^l@ZD%gJSyFdRa@!-4}H1H0<4fhzKZUQ;q3| z6!KD--8p=(tH3HPEfbW_i;3eWh*}>C=w-p?XVvvNMEy;qZf%mumUU*@b%V*ISIrg1 zY-EmpNkgaF-{RhGbfm>Ow)T_|iaqjEfRmfJQ)IB2UPX5ZpT9q+=N!C+{9P|ScWmnb zXpZ_1Jsug_=6wXLzHOjfPbS+%s|d6kf_9G)e;o4VLCOIp0rWd8qfCr!g)#?4&+`fxYSSpHJJYt_r3I_%-9iAz(hp!W7u}I^-;d|TH$2C#^Ci9o#2T`!3rWD>dqM(ni>`19cW{FyHHkhy_iOyj(^-{ zAe8gIHZc{FHhZ8~5tQ*G{?m>Kv>2j+6*sG!yQoY<`@ltF_@j(mii>@{7e}S!j}J;f zje=q>-VrfVWUeqqH&y3D!(AW^9jd4ySC_haWfZ)(FDJI06X)?XgORQ-JaiyjOUf!L zd2uRF=hgfh9PUqnHMA2Q=3GYRQzj;7h6qz_qCX{JG{D|iH=0AR%zRnw!>^inV_J@FObJR1z8N)BJ&})6GSy}84+F89E?{Z%5TucI>b1c%dCsXa^`rw_ z>p3QiWVSqq;@>_H@sv;5B17nuYI9T;%Dw2@jWZ;eIf~Luyt5E|N^bJLghI=PythGtf#| z4zEwpAN{UBsOqchH;sFlNfRGy&@~X>sn@Rcn)_(0^#RYySInxPSZEp;3y9nGQ?Dp$ zT^2%WqJsH1doNAl@GvGL4eW=k=B9Sxi48!x!9D`_!if{68eQuY-2swTXD0 z9N5=pQ(|)mpDB|UYFbEI&hho1rOgAlS_R#580-?}SK^2G?9C!@TYCVa(+m3su|p3@ zhV`7XJfsDK)CrLrHQS6*IQRnQ?98ONFgsPne=1t<;uA~T+G-O#*LgmoX$x6x%G8_o zX`0+Nk`;A_c@a*4Ekc{44l4AnXE@}(bJ`?hY4B;B~jZ8&nd-m*Y266 z5jvAA9w(7L<0UXI#}_QgS&3(|@Yb)KHJB~;yp#dX%-D&vyZp%$XaDK^=a`xJzD;LG zIt$cI7njp73a_+JK;%E-o>DikO?O|B?G`JNxwT|}GEeZm7)qJiw`znR{@P3z7IOL` z!`A9-e?<(RJ(Qw>uEnM*8IrMZSN%({nQqinnrNFvAsda|IwC(1Cr z^#8uv9?t{kUzD&P68RAH0 zYVc)-agttF#28nnreu#Q@@g=sZ@7qcCp=5-t>EH2IC0y!%)n@|np4238V zEy#A~s&%UBB7&p3{zk~9v?Ru+gTG1@2_?t><&mqi-m9TA{JRosvQfA_Ffr)G&L?UM%9pDm;@&q3o66yl;WI3%@a?5rs_6CC*Vd)v*S<3oV0Gkqs#$s;mkOY-w*!v> z?*N1%1IzsRzXSyTa!U5;cEs9<#whZCm$hQB+4Gf={x$?S(%x1r9vZEE2nZ7i$tdn3=_k%e2ryXzh$Trt{r;$PiNBzl%t>+&J0c2nD zy1j_K@eaZc^49QgPIXx!KebfjeD?5P(fT;IP`z@`3xkmC4VIFtalz<|+0gKgUs;~e z;TKuw`8`w9t`HeE+_fy_iJaqCzRFc(26iPdd93dZE&z_exnGxJKrH*wn>!cvNyp$q zL?AS9;hIafL5cX8riyv#u|9*-pr&n&Jf{AwslMpYN=i5#APeH=WE2?tjwS*6 zIHsx}j0l7Q#UprGi}(45O!ar^k7WUQ zeiCGsv4N=~sdU4mPhuxEq!0<)pq}7w*?2+dFSD)CSOve+*s#I6r71 z%-Du622oa>ai}r9Zh3ytR<0989d{m=y6{o9taXXp_IvOU@NY8&85Vc%%h6SO{W1MT zHq}52e-Oysh)2nLcsIcoFf`t;!1URv<%p~^hbyHB``8#4j>Ps=!&}M7@FwF@5Cq&b z9_}r(|KR8XUc<9bi870E${lu1)TnQMGAjMn+RFWcPYSZmYmp-Oj7W2Xoh57$hUwu~ z6VemE62?L$4x-9>D;s}dhU4m)n^DWC!c267%^ohRwm~*5QBM}ZavL0HUBp8xgckb| z@ksKdrc>M>iH>t`IeyJ72_wKBWgWZTRPjCPgB?NV50%3oheya<3<~-Z?$&-de4Z;F zPGSCMN6tmGr3|CwxM#(lWsv=N^|Fv|N>;A+?v7r(pyrxuxyGPcuJE1Eu~OLX0nJw2 zFQ)NSv_|)3s-JXVUo9HkEwkox%X$&)^R}-0e6UZ@ZMden&&j7W4t*sIcLcad=Bvj@ zNII1+zpn4y{X)H!xs~>~Nv-eIbnXv@2vY^zbaG+gIl#%nIm z9EaWc+)%)0gh-Z9rsn6vY!RoluRn(sNcMxofRyuT_q{|3owO=>9PEChp=d0fh{57= zs2gMZM9$J;_eTr<{znk6h{R)Kw;L6{mSB;e=$Yue?u4i4qEc*_-%@zU*&U_o0X17T z`1@W(u0`ug2c`DJnVJQZGwm?NOIyg8G5&CXy*MoQReNSAn>ILICGf+FuFQBZo8D{D z9}nb`SFz}nCbF}laC?6mXma=sXm!ba?>Rl&{MHGJT=m8$_D}-tFXE8s!|8ENn#`U) zG(!40IQJxrtNU+mAOS4EN^uYdwUP%U1(@hIZ%3~f+G$hdB)noUr&n~_ue8dx^&Bor zco*PSU{fiEyK1`Pwz?s|*R@7$?azN=?<{8yDwJvFyJxR2BFJ9%Z2SA5r*t~PmZkJz zk=8h<^-9B}_QXv!Rr<>RZ+7GOiMnpfOm}%!u-btuZ_C|QRfdxSL9Kgxe#ax9RYEU- zEf{g?&|rTV@c!(zvDnIwLXa}X$ zt?A219=TeX{H(k2WL~M5b3|X874)H1j$&9mM>d zDdaerZF48oZFoV|a_7NnvEFHwwgVVGDm0DYdfdC2_=xBU);)&bKUV8(Ln}@<4uHD3 z7wq`m6Hu@0YGlVq=qPn;o?DDM9ZV!!7Y5iQz99+XyabaQ+I(^kDEcI$$FSe8iN6>w znYccu-9f{gPQLgbQ(>b?pY(#!up(c&ZKUTOCyo!8g{1x&kBxUS-5lA$foFgu3D;AV zDgq~uX2t!SV0DbdABT8^e=jB$*i77p;pjw(&F zzj!*aVmQCexd(EJIZ>RRrCrO#PAl~xH zx2|xSI5W#JQ|paHC;5txqp7CJBlQq{N&|7Ki5+33uOsD~Qkckp22(bvT*9!H>zr&z zlIwg;8C7zFfx`fEvH_f)-~bccp9U4{U}+=NzXkaxI;p-U49$%|M)|N8@iu!5d^^wz zQ$qMvhV}r#1Seiz;1@?|rdaIlH0D&V)}+qsU-`Na(Z1hD6YBU%yxKVw)Zc%!c%Whw zcCDGD!{;%%lntw46MikkvQLfmzgf2D77kQzn5K%2*uP&#T<(k%D0)x6OawbV^bZWC??CCgLGfuxCLA& zzej6NlG6YxmR@LdoXreUn&)lE)vSv033AI#T=XO#TPf9wbv}}m#+&jAq#fNBN*rei z9Q%?_t7CWfr2TM@nRa@cgvq?O{4HsDYl8 z*CeFpmnOHCR%f%KH^m*16myAF5U=pp(PJRpS?N#z>qn^G8Uy3=@W9jo`SCkw&pE8! zg|eSUWR6WE9o@;aW6MYc44)9W)sv%cGuO z24vyyzORI81my_!ZKbJxJ`~sO!j?xhCMu%8WzVVxf!>&Td}Y!6Jd0nJ6aI*4-Esey zv+_g1{f>X3%UmYUCsw`F-;P(GYE3DbZ-Gh#zY-bn3em8$GrgNx>19h};J>n~InY!Z zHPut)ZwOS|r|R3o5F-ksEp8|hw}Hsu!XhrZwd^ZrDAVTy2c z==peT>A0QH^c-5y5oDinZMSnU{6RbETBqm`6p(4R7&EXa0F0j5=8-s{4ZU1!0qOi6 z!A}r1l#NQQfCqsiK1uOtH;l$dHrs!RoK$F=gjN?< zHtTtJ+xYNReof8uVi3Gcc6(+CQ!u;>Mt6F!ZfPFEuZhr&ME|TkOVKy0rdOa>ORe@q zY+y?Wwbg-SFcZ~IhSN`f;TltUNHlwuhc&r5QlVniv6p4MoG~0Kj~@vJ7rf47+K@Hf z4ld;gu{Y?QG;f}fS*L{lO)oRsP0O`AOH;8mPK8wBH~yY2=h~|viPS+UHO?>rcH>Qw zXFvB_{RFSN&#%lj7%h^-D}v#FfK)rzIH7;zoC+<$#~PNkWIT4GDE5$)(;+zpy9tl| z(ztR9OvIYV3-%|KnBSSPA5UjR3khJ3K-&N#oYkmh^(cST9g&VqjuwKrY53idI(V8^ zijP&MaO`Fs>uyVzq$(*1qo}&n&}wb(qn4fpAC^~I(%1f^0S}trt~U5ln$!oIip|E& z`i}WpD(ZK6`O9Wy)3M6Xnd9lPZ5dp@(^-bxXjCU6_o!@t<3b^e?A<_8z20=&g=p1` z=qx}axMoPNrsV2}bqo%Rj4Gzn*%;j{W@tr%srH1eOpIqFt!Wg|tlnPS@LsN`5rG%A z(P_kj!i1&C($Onspfe*kB}*yE{$RW6>oslr&zXvAMv&f-%XJ!EqqqqO@>CH3!N^c+ z5<;(ZzEV5>m}A7s3Z|+JFls) z4bgoD;3bVa*-mP5NLp$wj!HDI42muF|H2CiuW7_NBwtL>aVCLo;o-TnxNWPHMj~nm z76`+D*i;rV(~)NI>$x^76T9;oV7&h6G<9Dt!=LAkpr?7&l6|xZxV?3m6)!+-UQK0V z(v3DUC~MRAvB(z%bEE%wg$#XKgNgyR9B_|-LMhjXtD^C;}u!Ye>om0>y8-v+n}!Qz-MeWsCQvB0ghE_wgX@%`u}$lk;*1F%4{Kji$?SbBprOh~XG8el*{NQg{9t&I z7oVm$d8N!)x7Xzx;Ni-z(;TmI-)pmpRkeft1Zlg1@el&i-@1Q+2zF}Y+C5)BHH#<- zRrMV3NWpnAV@5C?COzW(@NA0zt8H|Pq$lVa7JG%{NC-pB?o0bzCEh208)Bw<|F@vC>a zt2=st2)rrnfu8aY%Wc1#Vdkazq@ZRl`-@98*-A{f54Diwf?~!QPW71EYOGFyM&XQ_ zgUTyHGIbN{4cCwwO4C_C&tYzrCGdwGdy`00*A<4wB-;rg2mRETD#I7@+2Dfc$k6F4 zpG|a}iD-W{ZJlFAc~%vfQFC95=P1&fU+SkaC;F$9wHa>9FQ69R4Y^;ZeViub%q>?& z7zf%FjBi^br&JNo)`L&DytfZ$G6p8St-Dz|19FN{KSL2HHO)H_-C zpwAC83fDREGC9dsD;QgjeOQx=eP}#yddrbVRkX{Dc635Na(P|!ZxYE(oWe{N;YC6) zfoTwcGd<26z7Url%1$(O2UF+BFM?Y>ojGq+oyEhR#n?+>i7dWc)KRUb!U1@SShFix zVzs)%t+$<$KChCG%Cas+(E0n@FFQFMyjUEiHbuwU6;C$|G?ElSjf?oOQ;7n_A+>7xt&5a_2+BXV{DtjD2V-hfQWB5I8a~=iR%M--G}i?-mIzQbUA3kK zpIcnxr@vAwDg9=r1tv+Tz}-B3ZSeEp!)fN<$v>kQe(GRvO>JSA!yT&}JGfK@B&EJ5 zbL1Qqv}&gBwm4ZU?=0Y%Yq?Wp$XcORZo>9;F@yKK?#&7HCRu_mOLI@^IVS~WW{&k8 zxVUWbZLq1>@lkPKzy+Ka?nK+`il{Dov`==HCgeA?C`xP=RmJBWaZF&hy~CcsH;VF| zWt7F;0(Vvdj?)Cw?0uVXEZ%t19k!gBC}_Hp$U*cTv(}O2X-}I(u&c2)f@I{+pcI_K}iOzjqxt@2P=_hc_)1G^*O=x6x zqsxR=2=?ZttaCb5Yga%y5dvGfBF?d2&3cf3=KX{PrlQ0(ds$bo2;?2&$2_sHMneP0~Hv$KoD) zfAQAdTM@$caKPv8g|bjG2(j*NP_AteeE}{`{+bX*^HR%RZl!yg*Sq zvf=qBcvlnYaViX>Yxc>vOJtU5dOYZ6ZhmCyLGuZlQ zO_v^=NI&68|BzNL7q;7fc5zC|rk+hEDV)fWVl`brXIhk4E5srB_NFhc{5$E1F6^j( zCKcPjN;}+u$D|{O0`Yn^5xrVN<(>ZCSMQr)r>)1fV!1ba!K03nca}1~G=Ab07O7UV zIotuh&pATYU($E)GLPQF3*^&5$85{ldaoTP(mAqu$1|_KHLLv2RrzPgD;wk`6z}Ig zzik!$wz}x~-GjIMl#u1r6EvA~yyCHJ^yM4e*JmFt#Pjr?=Gdu?B)!;ay@&mqcUA`@ z#{;#i^$#|;o~&LGuFpO%_8i|iy-s|7U*xvQz5ep|-@PYn3Y~-Kt906`2xZ^7rFhsl zPNKrym!7NI6kBetqJ&dBJo?^6T5aCXSq?-)_#+nX9j7%xp3Mh|7w6*0p;8yl=e|;x z;_gM^x`x`ppi?kn!|{R_1S5Ua5GVzayOa-O{BxB`KA?$beP<7xlO-t3NEA#Y&r61U z?e3XjeW_ap$oqU*CaQQI_T^CJJ|u;e(n>!j2>Q-jUXG+3sK ziEnxl^;+Gsv1$2`e~F4%)ZAq8O{@RvpZMvixq=6KZeHiJGBrWp0ZhT7EUAC(ngRn{ z^@1N*p0FnnM;pu4HmEex%l~;$s4kU0lr-Kn$oKNK%dlX>>x=!?nAenH&v6p0Z=*5Z zPG;_1ivO3;&f2OL_VnAZ;KS3p+KF+JmOHoJ_js3L4+qZi&=PfO3otqwV6PZOL1E(* z1s`a^9MCt!yP8Rv@wy6D%dRb+MngXXg$*D|l17w_2ZQkvf%W@!w#Ka6iqGQ7o&SKBbus&WM{v*Mxnk0suJ7o?8_O_Nn%FXeS&L8us`Jd`-KU$ zN5yu0T%bn8vW0_u2_DEHq(K>MnxD$Hr(G$zr99b${LvEB#C?^J$z=(w(%q;g`>zXU ztRKmNWDIFOjn)W&ypG9RXYbKkgY zSkP}~B8pFzV+kOA*IeVwcdjP0j4J-sM~#U~SpTxjp88!^0JOA5_6Ki`!fz-4O@UK;=b z9!w>rnRO9Sy&;fIi6aSu4=3xjC_9{`jo}|r%D%~n<23thOZ<# zE9XM!Dh4)NTqRe`Oq%hMUy@6iA84UKSM;vO%mF_m#|8$Mlg-1)HNhYg9Zhr=8KNt^ zxvBZDnbTY3y~fu?6S6^{kwQ0k>@)q)bfkgjex|2z`F zrN6??Rzv)&*#UUfpIsMhTrYaEqFpStufGK&?2UA^`FKg?p2lKY&h5;7=fiKrc9Ro{ zk)}XA6OZ|#k4pT2-i`irX)KmU((85No0q0f`I{xHMDSdM{~)fKl&lmXM{;JpuNQOw z#B8NZ0uqECYt!kI6293=3iuPwW&seP@Og-53$Z)=8y-Vu9L7qYO7qQVCzixmZny`5 z;vLB55C-!Qr+-}h7WA8q2=fNH%eC*`xD(TOlKYFdIrm!k#L+~)FoJPALp!W;tUD!j z#F0Kuj|1JYR*a-0s)nrTl}pA}atI9zm$i_SzhLt83+t#b7Ispvqr-`;fC5*TC6Mi? zAWbDMY$lf=baTb|LundsUm8^{qlKEnh%?tGSj^N0XEJrU{v=M`;eXcmdEyBK!NkZv z)J=nmDALQGOxf@?_K1iZojnQnDj{XU_`*}4c#ikE`pGHF4UH=ZfWrdG*g5|jos122 zWA7i;HeO}D`P0Jo-kF<XgMN$UNIrLk*2Lw?mX1a_36 zGw{yU)Xi3r?S6qz_5L^33M-1ztLlA!#%c9lF+-KIlAC-W!FwP8TY6B5kaA|x174mH z9&OJOQ_Lr}V5o0O6rTm@kx(HhK32nOqN*gFaJH0%DN}1Sv!2f7YG)>X=IambARpGO zFFL|lgv+M6M`nMD$Ezgp&&5btfZ}v}$}?8hk(EN_H%2HTB6l5dm=&TSa5TXrgnCbZlT|PaJ8(+hcxG9oOvqg;c;!yik(oS5PIEK$M1L4 z&m)HbgipVtcrz-RU_VNmjfm^dh^szJuAmpt)}*uI9h!JN3-==AT9p&FjLNZi5KKrU ze_2r^uN69n2bUx-1*cR4Csh4`)O`ICd+v6<-?r?Z1D0D1*J&p~NS) za+X*x?=y)j2#fbKEizr?jG2C%ef@) zu?Ya$~78@!C>ot;GQTs+XlP}Y^3 z&l0clj-O;^RK^S$uVn<{FtXC4DPXfk_z0tP8qDNHUrWSan}pl5yRz-cDIW{7D3M;S zlJn|39+D=Vvx?X7`4c`kqRY4Q)ErbY&GRJr^Kx7tsv4;CYD}6-9h`&FE+QLPcg7i5 zh%cb_Se)lmii48XP&mRugTxDlZ2;37id zP-R-lkK2oUW?t2C1el|%c#h8pIRRBQRB&S+MbgLVwAS>+awW+Or=?9v!V$ zU9M1K@-C}dVI89WE3fKI+jSln<{X2$pYzBauOHZ9q2L)hA5lw}i)4_*hD0!c&@tF; z>Cu49P=b7V(xuiG&>hPUam;68hj?~vMR?r&!_bpdxe&FNIse@D!I&L1wJ2xfYAfWcNb~tQfEjNoGBWKT841?c{?!vPJDC9ttz@aqi z8`P$>WzJew&RE|XxW^#RYIKdY7W=p17BaFZ4iC4(Y1Z*cFKw+$9zE{)ia`dY#8Zq2 zEl#hD3N0HiPk$vg^FdNJ{xpssuw>OL;FWM|H`=c70h&e=mSOT%GYbm00;(`DZnP>C z)W!?6MY})8C(-+dHiU1yD9C-pdp*SDqRlN+8JUL$qN(BLsvf;Rb{uR1btlog?$JNN z2>vt@9j3GHTnmH_0d-=>cZdbxI0FaFoSOo%Ic<{l;pkumRNg(b*oiXSShRz=G;+Xo z=wMJ)+mDSww&}FN9Zz1w@`UKW*D=zO;s&aUt7sqvRaOYP#JzUQ z$&_TE5%0aDP@j+G))C8wyFNAd@_qG35IXt`Dh9s-W@=Sj^O@3Ev@rTlVHeVhdy-lZ zyn<16W70{0^xCs#T1Ad+;mdc2PIuMPhQ?*&!EeV>(e}=D2Da_Zz>Hx=m;+W0gv!qE zz0SDY#%y!N>BOS4Izjr!a8@iqAPT@1U9hB%*ME8VWYiH|3M_az9pT-D8@;8TC|{Kb>`f$#w~ETl_`AJw)6UHB`?g;@p6N;$ z%lAM)GAavkcgq^6j)%!I|1#iurnY4yFajDvQLtr71=Kg(0jlor<5`^IGT0R0=%vI7 z4WqAFYr-gpCPOcU#Roa9Ib~RmFwo1{M$3N{RI}=EdzvV-U21S$f;dNYO>_W@FU*p7 zem=Q=!Y}?(R1)rCY%p4uqL4q2ui?rTgan%96y_T3_TGmECd=H20#2ZZUnkli;U*496Ca#$dbXvV<-Hdhx#Gmz2E zC?n$8M+l+}oC} zlhT|(s{*iCCizMlg=Xwv2qG=m8T&_HZBwHoG^;FV`<7{WKZ+#Eko>rwwyDJXl%Dk7 zf^K!dK$U-%)t{Wt%QRNY#o;HGVwKs-8tm6CE7aRQgjD<_pgV$#4nfu%mF4*{Qp|!C{sn zVEZ&Ey9-dEJ)}gewjML1BdzgdXE*#kb=E`0w)Z`sEKx;6QRR3r5e5D2RHr%{2kckM zHX$&Kq+xj?4LrK{*U`9U&3KxwAfDNDmqmxY`&8#V&Lkxd4m~o73&*jXDDSHXwpfn9 z-~#bkY@M5$jBDqGy(HFfVS4dURFD-GJqk$zV2B2VS;7j{NC8z4<%`M}ks<&H12PC& z^z~9=1GkKR=KVm2`S^xKrze?J+y2P)z~0B_unIQP?}vkQ+ZqVtEMTL1S&)OMO86un=%V~ z<&6|+XUl$<3}DDN`gD7TL#f6m`+XrxJB%F3F&-hyDjGfnzl&a)m$T?!0b5fm#v`iN zxBtlz_im(g+8>~~15p?=P^tG&(E7_WvE14ZMvQ=4Q}t+OuTU!{um=C>?$LfSAEkhm zmuN#^dE9Iz7Sa|OA@-S!1sh=TLurahpUx$-i1>jm9(vNqD14>&$@U8E4!4tK!a~X| z6p&1dw7s29R+RI|$p3_}UPr%1(FjOICoI8OX2upq!4RxR=eI@g{Kq63y3!`IW5~mN zK)bq;#+D^z9({1IrD@+TK1Pm#MQ|l#ArWLUA{|-SIdNw*=VOJ>9}gcw9e3aaph1nQ z+Y_m3`Oyx=oUBGvmOkIHF1yZzq0y7~W77AdX!O4z%&Zxn22eFhMnKCe0=7M3drS~o zz?&Ds7BW=zH1p+=|GLFw)|eIH;}hrfwW6nzggJ8+_ADH5nddL;&UIp{2ZPDpLdg|^ zkORT+e>qqzqxdYf|5Ve|swHw*cA6a+>GB;=K4C2nph8P90DCCnK&&l0tl1B4D}^ZH z1uGoLmxh8F+z%uTKWYDILV>9pbi`{B&bD0p9VKE(+>zrEoed+ym;OrSl{4ElL3&k4 zNY_vMwS$_QagZ=zpy`-J(2QyFuSbe9BsWB$36ma$1*^;Z?(R1_$A86xQTTN5f1}M2 z34Z(bsX(7l6avQY!Wa+O!WH9bAjLOpK4JX`c}xlm?ymm*P;@4_m$L|zn|z&EHiVc_ z4N;j=vHZU@yt?aru&-Ry{p<7D5}7yuYFeeg|D;<8B%*q}G;b}|D+F%O#8%JkNkrgv z5I%Dm6@Lvx^ue5oeb!Nj!$|hdcN|d+c=cO>Oicv2%g$e-5&gf}9y91ahx`hp6s`NV zYd5O-AzlRVboRaZaXb#4ioaCp!aAQYWmd50%{!4(&s{$L9(!0%LU_c^w?g@#m!}{3 zKYjSNKavjFZBxzSVSs_j(xPC&Z5OssgpVTee#ZQO8*L47y6P@HCaQ<{85!IMZ+(+-quZS zTv>^VCs5G=Ujm}$^_YJH(&R3?(AmIuQ z(85}v0X|Dw^8g0oG6L13noDp16+cvO>vbDJEz$eSkz0D@aGFe$T>H2Pt|}Q^<81xQ zhxFCTt2^j7!}hbZhE^3k-2OUk;@nOrC^uk)ZK#xt49W=ZP3+LD@qS{@u_OqCSOH1z?p34h$9_*% zp`IsJz}XLO(?wCV(hEZq66zl)*mVrFELW1ms+Vbw29W0>6dsS1Qsv^$JZ>B(E)?hY z-&{)k#H3=Whlf}m+Xy|}mMR`BuVva$VNICG2sM*&E7SKxn*_LxpmWRqD9v$$B{bd5 zfu)uO`@t;KvdNghvyvfsy%dpI6!b2i4m@IyBy{NEQ$z%z36X6Wrp>qOxmDuW=HDm? zuq-M}om~tz@6AQ-CVv?h@JYYT}Ikieh@b45t_^)|LZ9QUqDiBh(y6pjy%qQ1VC?k5i z7whnaB<_foj0^XGF9?@z-0+~3@CW%Z(`wjCfU`e&S?rKpWg8LdJIJ69kc~qpYzO1( zSQm3tB;Oq%Mp`(akV!JmZkTIsdy9(hZGm!_x;a2r<8ARjjN_Q0T6>eDh@6-Q?4Yab z34O+IRF$00s@nR9v;h92l*rUW!#?v^#cl%z(wiEui32(xeo)Z?%5_NNXS!-AAo+kk zD!xyV;_S*V+4i@xUBQy2Y4mUKW-Kp=6MksBJdnjCRtwfGGY&(WP>-5+Nx^hCGT^jV z;WSVQdA`Ob;8mla7lJUo&a<@fa2_k2S7B=QRl_D2FYPX2bNH;K5fGV9dAfCywP~kW z&qz&9kemtw{5lRub!}ibna^l&pEND11r<))YN&9{e=3ux&|j?M+kHoUdayrr9IGd& zgidtwWH1mdbCI=oH|75{J{|nV#plmmynOjmD@P`d#J0cnZceWDBaLW@Ngk)jzc|f! z#`+SX4jOfYsD*xN{GEjDM2-AAu9&dE`4rNqaJPWh{-WUJ7Si@o)56#K-sel<{G$K){jfB1)R3<* z@UO&M=2G0v`i+25_UrnhcgSj4(V3ggxASiUN?A2KJ=LNS z?yH?4ng3;Y@_FpCm}v&I*L|WGvpL6t?7GLR4e)uv5I5NevkP6*Ge*Aoc&|>wLEX!q zUeE%|?d?nVZ(Vaq{Juhjnd4kY6a)(@M1F*bE!!1xxyfe+0yPHxA)% zO*7|(*D$=B(DG_cFUCIx{G%SwkFZ!)^*!c%{dvN0vo-s5Lj*_Hw@HUpSS(+{3Hrx( z6NuBW<(k|I6XqAUS*y z)EI42s*Cf>l#C26RsKtNC>~Es6fh5 z!7%leYv&se56?bpmk>F~&DxfulVd%AqD{~AZBUSrkx^S)y9y2gB^!g1j|L_wxfd>Z zmavS4g%t(?fjcfaNRl&%j)Q=bO2}B!+S*Fa3&JQ40+8WDgAI^9)9dSBWe_bgdIpUM z@>^+nv&sr|bda<>B#4rJbaa@NUjRwqJEI|MUM-}E zkCgAZg+-ANep$ot-O)7CT!;Ib`CEImJ4Yggdo3*wB<>Cnq)%)<0?`BgJrr8OT1dk_ z$ix53V2&Us@&Pj=qyLfMk%)U@kt@=wM?(0W)UHq{7>V2?<$FS0KqrJ6$=jFt?wOP= zBMp0#gHR-gUz1e;4{7$r2Wvs}ko-J^oE*v0QxgM_bp7&RvqvWcY49U4`>vX44{~xO zQD4V9?C)WQB<%;=`;iiVK}aMeF?k{`FVe-gHCn#*^=}XLpk)Le_|hj*`#>OONOvDe z&X;9<>2CHxQuIhsz5x<=HL8G*LEN5I(+MEIs_I83!`ppp5{tS_5@qxf{gFDp79rTk zKb4-69`2ZtIG8$#B&xEGkaj+?AOxxP8>vFISU^ZPAF1P)b)VL;gKTZ7$EiU`$)21N zXrJh4Uq<~uZhe{2bk=awDDU0i4M<8KN#M`dG+$kn z*pd$;A$*-q52TB4t6_BDyT;8fi1h4{bUjkLM>_XN@E)n)Bb|FBgpXA4|Ch-};`d1Q z9?9n;nS3N~kA(1%a6a-&j->RF>^)M!M`HO%`5p=9BVBwXv5zG4+1crlG(OVBN8a5%S`Y_Bz}#s#JV%^jm`)sVQOChx#eeu?7m7o5F9QLR>__zi5Z3*7aR!)> zw}FRe|Gv*PeV-%TPI|zeyA5r?MJv`qwNqFo3hhx!wPk5cjiA$z)}kUD`x=r(;MI@U z{qTJO=hf*QisD~+fIMauwO|Bh0+k9&MWB#4mqz%DuRP)?X^8PU{P@Mw$K}hjHfbY* zfbn#;)r+DK6Bj0AQjSK>F8h5A@~aDFO`bIHIw!n=;Cev*+KFSxj}b~qk zB@BLuPgb&s!u?_thf@0h=1&v}Hp#-wH;O^!b~y*xL>)dxiYL$IDV7K;Ffp#mbR>z5 z0RDWq#(nI&mAArHYl8*C)Z!F4?Bh7hxcW*Nj51`sLpxC{8>|Of*5O=kkSNthhDw%N z5J@3N(=xmYY>n$yot|}0q787GtgV)9+;A@~4@c0}Ytc_^q}O&8P1e>lwzi*F_bqa9 zH?saXPp|IZIp{`Xa(eB#z z&o@S%t^d79x&L?dSXcGQt?EKo{-!&qvHs-Il1uYa)so~(#&bRY!16%?T>gF-9X9-2 z64&tM*cX?-GaI+Sec*>qhPB52wWeS$LWi7CYDMXt@7Q_>x8Hxi+`o8y=5)a08Rzt( zPw~DlIHc3Oz4OzXWSxnqnf4zQnJd2&w}cIicYi+r#CY2vrg*C5q3iauYo&DIZ=OV} z#;^V%;St_{e&QL=!4ZTR*BR(SGTa$Yp6mN{h|m8`rON#~uc1@kyk4-RdOIK^kZh}9 z_5J?5v}nE=Qa$@Whgtuf1NQ8gKBq<~Nc2Gk!CI@*=9RK{*$?^^Fb^6UYY8@edt5 z?;9JiN9oEjfgX%t1l?O(#CmWh^3h6S5!=}N&=s%3aco-S8r;j^=M)&V?;oG@2M)?( zKm5^XAm4I_4)%2cc7u!l4Kct?2u2*??GQ1DwwOquP{(i z38-KK;qXTf2xv68aH(>WyFfT50+$g$OdqjBM{Xt=k1pl0c73xKOZtaItmW}yXj4ddTo}y;H&dDduVx^8 zn7PEs#M`AaTsrk7!`#%w-G$J6X`&tNRy8rK=5&O)`=C`NB0{e=3v1dODYt$n5O8%S zrP)%JOvFXeg;qqVYHjC*07|nd!mF;2oomh#W>=ANW}}IOVX%~{(p{!ZXU1}BKR>m% zP3}^yDeY_Dz{Rk_Ler+uk}S&Jr`Og0CNZhk9M?_LimYDNlb-}ds|U>$E3YATt-L#@ zxOjK3cqTNqvJF_jtYtos_77?LglS4p3s9=v%dX$?ZBLCwURgYWD>8c*2mz~ zx@&JO-K3^`yIa8ajXZVhtB}!zp2_#(q%HnBbp zEvO1-AZW%-6`)s-noa9WY zw^w~`Um%^;w6cb^v?vv6aJPlwWd_b(AH6S63@K?R8uDa>mTjFgoX2Ul&mUof@07y@ zk05p{ZC6XRqwBrMYr{1LOBj{7M{N zV^fpl8!0C|d6~{gjD0QK#+|$~IX@4^!`6gXPFtKE~nQc_@X$9q~Yi z^Qj-UMrF53DFHVBN_)vEc-Y&&!c2VFIDh=Z$;D(jE8aLrg1;lKO2}nfk#uIHGb12WGO{wj$&&+XM(dAZ{Fe#_ zml6escpU|7twtyQaC7PK4H9D_i05rIM{X9Vg#MIk?=XPmfPL16C=;WC;1hRpM^rX8 zS@icV0k=aq5Dw*YA^mV~c_e{kxNuLVFa#41^oDExfDY%Nb2a!I9H(mo_YNyVF?It~ zKSys`sDHoz@eRzkc;Rp+=0S;*7dK?+4(Wh@Cg)^1Gi|G)d8oED%Li{2m=5{zb>Xlf zjHhvb^?%_qP_mXL_I3_h_j7hv5qi{2X@!2f^mCq~NBpBH1K4<&@mKH`ckrfl>tkJU zNN?pJK`-cX#RQ5n(QD!2NAf0%a@Q^L=0{>khUdl-)6^3}=A!M7#U;gzq@yAJ+F>dZ)d2|wP5@d9X)KC5Md_2*8w$?RuBW1J0e*i}}*j78t zmX1*La|6|f5c3V^Fi=?sa6{QkXM7z6E=vefj>%udr5(?#d`+- zQ-7XD5+K=R--1#66jCj>c;Lg7L}h{SKn|2CQXEHbBoS_Sc6)BvEJ1~NkqB?_7MZBV8ET`T;ox$1RSx7pZj5(s zb$KCb11@&=Dt#D@bwixH_cdY{k7)xn(-IFu=qaxUH@OCPxz?P{hoA0(jal6p+n+phk5Lg;7$SDdM zcg=?=??4W1*MZSkdEv%O`lyv9hbHeB4zI^=TA6tIkb8KDMY9KWtcR6QZe=S8R7?+64aYkYHoA0rRCOm zkcfZ1R)UjvkF`n?WD0PgDPJDPGp}`G5aWn$6E;DFYc(cp>Jndzr=pbyk}5b*epoRL zH z&;#>Ocg@nK3`ldTvThQyG*J^UA4gIbse-MRA3YI=SLZAHtE(@$cnwI6^Amp+xQdto zqUwo^m&K*kYYC>XMTQUt~^H$1sM(-kjOp%aBb;OzCPf+I)DS-g997T z1L1HE=RgjL><&1f0zI$+SqHq^L?gF{C19IJ?zU&^YLi9!f4(AX7p1N`BS24c%FpRQcyXGha+LTM? zn(DbRuN0O&fetvZ8H%KTDLjAfn#SH5`OrvOf*rvLzAm4Eo>=> zJ`JZ8CxR=8RejZlyAq8XCvO*vYr6J}-cmOj>NUbxe1=QTOEa?}ENri^@XwfhX-Qkb2)MvAmf`b9>ntT)B2W0eSuOx}T>g z&8IY}JC9TADDdlcc@cmt(}h37Lo%W-GfkQKI8+-80&p+_ZXfzY(V zbb@q-{*#&hH40~MG1}Q~9Hk3f8hm7GyX-a&#~HV|yQfW|O#PwI+^g~SW}Y%h4X%}p zl08M&R7?drkQkJds8i$ITWys#LseZ~U0v~{dq4ApzNzRkvAo%{c!o?GG90TGLsf%E zZLB)VR_meGUtHD6j00p~l5H-PpggpBv3 z`?z>+PUG5Vb};Fl=Z4$@2d=XJTQuaD!?K36z$P&^P9PlU)3jBgq|U?fK=K{z(_)o2 z>A*iY(Bndb1Kk}C+KYQ;Cp4LyL;CQsU@1Gj9DWQ(6W=y(nwW3=HuC3S%;q+4PYQRu zLFNBI@i^5joGY=OW!eIP4mIp8JGw)@iR>Ix(@PRcer`~yDZzG4{&llN<`&z8 z-G;|^tY?wR3BDtdv8aYigg$;jMSfmaaKNau0&zCGGRlt`bLP<*J!?-2ZtVopHS_zr z4aaR2Q**d>4(U5aJ+8jw8_7=pdP5ivJ&ptCu)e(UQGd03St=|x9NeVgntdrza7Us~ zI)u~Dd_$NHyz!)r-!-QHN+27nmrJ;kXEYD})8TqV9K3dhF3c`|=N1S&tZpt4n5};q zRF@Pvz2jzYmkfVeE^pBY5a0fNLpKlIJA3y2{d-4FU%z<&^yy2e@L#-s?%u(J=r3Nx ziyjlk`!=r}xp3jq&6}6*TtRXu-KFf&&)&Ol3H^QZcXOUQcPuq3j3@FYJa_0m#v7?r z;k$P>E#7?hFQL_|3$beD+SThXmW>295y5FXRUQ%Cya>^CjCbXDW&dsoyjSIqX% zE|d#0?&OMNWzVMnEmmP{)_M(_wurfbPQK<4#x%^Wa>}n7>rSq3 z$N`EaCxOFgvA`PB2OWmOf$=CICsI=%C)?_WN4R=a3r4IW<4iTdKFSUu8~Y@RsnReL zk;16Zafc)S82ib|s-=pG$j#S6l*_I6bTrGWD5=zRz^3N%Cn$GH8cHV>;mMBD8XI$` z93kOhlp}lQ2}j7F!eJ?#6(eQTDw{6)rpt$V=dvPeY3;Q2;dDCzPm*rGa%sz+G43za37a-s_!VAU$8yNf;|=bSUsCHGvC(KSmh zi1eAKU7!%Utx0s4J=nCSB)iNiSuqL+C0UUyZ!L=$I}j?U-ckyyczknGye6fJXG@_7 zavACWYj-|}9E>X}3A0EOGPK=k%XzfI3SW#2wo6M^TVS)2uBx0{+qJ2r(i-bgDR}0= z%r1B~N#VK^eqryo487k1( zW0RibCRpSG9BAf`gpXQ^=GKx(^7YRjcwEb@SR$lvatCX)y9ov9q)LS$gd-to$hFpb~%o(VBSy*TxRgT-5r zdkj;KXtAVMBy3Cr*+!Is9x_-5lAM21V;@KPr6@>apeQGYl|V&|DH#bFYz&4G$t}@_ zvb(5&`gg-5g2WyKnd)8UQ!MBmbRZI0ke#}BtAAi?NH}rJZ@w74i!9J0sA`oGDfg$= z7;1H)VoLRXb(+y2C`a#b%44$DqbB|3BRxqRLKQl!0hX(&=wi&~SYuHCRhBa;SGkjn zB*&h16>mnp`9@JhgxN?^OD>2?2RSaak&uzdLvftTMQ(GP?K}-yN7GzF^nn9lZG=TB znny;e(im)MbD2PiOk2#9B675LhG|>uSZ-GlrEtbST7i*MyjB%nx#*M&`No3ukq+_M z>{Pk?#yM=Xn6muRJ)=`iA=LxD?s&#MKrGFH7E%tW46icy?beVoBc#?A#8y9H)Qqt7 zKu%uDqRp)maI8DJE;djnt*lG&B*M}0B*<{ULXGk&%0Q{wl2QJZRMPe`Jp5j1!WX$7 zkN)e$)QBh^C_PbTyK5sJ$=Gh0`43bX>|DcaC@_45kfi8>7O8~)NhjP9$V6@&tapS; zA;fiBD@R2Z#-P_Soej}%)YZn`xo1poGT(Qah%&X9)E_G$V~|Ei#t`r19qF*x9pQn4 z{o&?GKbDPT)-^bjFeJ$>dKBM=>Y@YXq%BV7NuA_kBiIzgbXQr74o63$giKb?OWcU# zOqDVCv_-TES?5^wQp)@6hQe3*h7R&fQ=@Q(dgB=&4f!mv8X^U1CaLYZinlTs8;mZU zaS~4EwJI=a6CuA{jW!8Zt_6qZSZ@jJ2~)Gv)-+Iw3zV*ZC%3oX9?~N$uC!f{Ixrq3 zO{DAEPTqhrG2TJ&)|jf-NT7MYhg9a%;~nZSN0J&L6YWj^fRmjR%aXikdj-9#Y@C57 zqwdY>MI?->WUaL_@nVS$y0ly)i5#;+|K^QiwmKVt=FK+$fJmD%14=k>Adsbw1jGze zHpW~PLNunlaWR`w=7`o>Oz|`;WHc4gQft7;;m1BC=32c3h?}-_(zDvk70o*R4`3VY ztuKsVb2n|)-<*4R_cD{)RD+im{yS+cMCxA+Mw(|+S2W7RRyaZkx2re@VLEK-j{O;! zdopT&;;AGV(X11WjTpVU8XiNqB_yW++(@7Wid)iwx-PPno0{iHajb&T& z-R;xv@oy(79Wj$G)i)#I$bvRAY>K)Kc)@{O;ktyoDB$>x*$A50h^-_Vwh1|q;d``t z>m*%KIGGy>6hRs-YZzIRBRXNg7h|sl<1y6ut+P5AA@PkvqPO!nx#^;=S|S#b@D~}B zHT!xEPm#TmARdwmm!U#I7$J$CP#5N6jmj_(%dk0&;S3itB^<1*6(hl}8w=jhihoKQ zA!?N*YOokQxg~NDQNoEwSrxjli#B4DxX`KpWBI5Bxr+r!Jkm>=;*l3NnI6X=i?nE> zyEv6J@{}&&t09t}$Jn$Zq_+YIk>0|+#2OtKsU<43wZ#G@3nL)t;xb^8inVC6c0oba zz@xU%rXrL+HQ9^)kPs)62m=Eqk;;`SNsHfrilV|cvx17UxGNDumsr}6H)*LLdLg^% zkpzK=#~Vc2LBNw)81bkJjnl7bLkH<|quqcXJK77r0-dPfI||XU5OFaRv<-@SL9#F_ zaV$sL&?cMPlR%WPrK+Fv8n?{zF=YHO9^);lEP(@wCLs-(%foTPJ`(IQm=a0qA{c_1 zoTN%bv;xNiY$^e?DMXQrK2$xq2)>jEmh4cG4cQ#T0FgIwF%k?IRoWtm>^!nqA>HYa z6C0PusxL2Ms^aUiVsWezA_`b(i~MuSsH{RTM4RD(h~bewN>Q0*gGDm(%5mYpc6`dy zU=|hm2e;^lV44b#oQ(HtsSgan@~96Hq@Kxmpzl*Gyp+ekgh9UhzR5w!J47%#+`gMo zkyD8n$=JrS`HIOooa~@Xj*y)H5W_yqEEm4&N{4cfewrw@*$5o6l}Uj_ORKd`)1ozk zN7W<{Xp5eV_zC#nvX_BH=ERuYnF9TdEgmrd7CGcM;M$+jsrFCNE!ypp_nw47`w_nc|OdPk!72@5V{lUBB5`o8(!Inhu9F|W6DoC z9eI(6OgpZ*yiOpy%?AlS#&Mhq8Ht)4C-f{Ti+T_w%ucn!uGgR$uPLKRX*jgF3=~o@ zjFdTIL=2o%kB1PG0m~%+mJ&|cu|;4cQnKL6{3DDuA_(d^(xQ2q?}3-g7>(QlP!c?o zZqt>f%Ss7Mms4R7@qwq?iOyh&P|GMnN-G|q5SvK(s3;t_Pb3e;f>TGGx!t&352I)z`_wSJkTph;Fc;a2 zvd}FkNf5hW$hlw-{ivLt`3dv0jF{=Jn2`$N@(3X5#=hJ$PlXZ)6Go<37nxKTo?F;6 z1yS)K%tuwi{#gwFV}Xl)izpCNqW_~+QQVC{F*}!(yK?Fh#&Hq;K#!_8wP0e=q}dqP z61o~xjrrizX7$tt^f#638iM+Z79lhMYC)(X%33?kE3MTEF{m$*3=PUaCUp%8az?u$ zjluE=2{bFFg;Zb!rGdpEXxqiUa7YI_lgZf#n@bB#g+~=ER4tq--;*ipF{On)nm2h1 z;X@I`JE0ZA3r6wAtFTP`Xp(99iBPFYY7sc2^P(5j+O56MH|xU~ZJMIJ%_AD78Cw$5 zd(Wd(LVR!tKb51Hp?!(k%kIi6txJ^@@P#K8KVp- znu;K$?)-_K$QppLMrfoe+sc?l^Io)=3&22#_9?;N9ojI25-EKV<9iZN8e7r4&&|oB zczhBRVlTd8!aO^Vq+!D9Q47HZ61Fl#@#7!4TBZh-DT|BW%o{8cnlAAL-lbY7-itTf zsMwbRC>yGtGcr!viV?G^3Rw)6qn#Wr#aG=R3CdM5=rRbh5h|KR8w)OrqFlr6a499? zTrHy)g$R>MB9`dEQnIiShoVdp;x79labzzgESSkHT zllxu&f$f+HD-aT$9KCQFr4mBH>Wb>QDI9Xy3Hp%!RkAu65)Oq!rBFAFTPK|CM`rm5 zJc<;T@dt9S(IAUarIW-p>ntwOyy)ydl}3_L`gJf>~oa= zb)poZJ7%1MA>FemX8xDO_~edOl`?zdVXM8IU1O8Z3R2RL+FOtzOpSH2TC5-?+lvol zvWWmzTnpylOY1n7I#(+x!VFeI-k8c7!W1yZAS}6_S6Lo)`>(-rnZsczPiez{<1sJO z7C9M@>Ig#_L2}qL^XcFR#KuWq_hU&D=X#*RQ;VK z1R=kek@|_Hz?#zs9Ja1bk#Mt%;#yk~WFU7q2fx5AtHoNzUd{iAH+F1n{X{GOjZTqb z+bp{{h{l<^27HPbJCM~%U7H)f5Glk7Y96)Vn0r>PxRyB;;auArzoD(|LWEF-Q5bXl zm+){V!aKqcv0=cl#)vGkE};<3Ku-fn$2!szCy{Q987#V>D@$!=A9g_qGcc<-9H4wt z?*76P#FHQPLbmC^oQ%m$%WHBmx6x{iV6nLsVxaX>wyTxpg9XJ1_1%JfG}jupZ>!(} zZ|uylPIIhghU{)1n;|HDv=O-zQOaJEYLp%^+)Cpl>S7oOA!ma9!WYZhn$78OOqRGK zkN_NS|23e;bxA8RP8C@SwWLXy!XSl0V2Y-iuPvZC(~?KIl0Hj8>G87vfPLr!A0l4u z5{cuLXd^$T)H*pbc!r=sF1D3GHYLN?X?FoVvz>JH>4oWVgq+!Iu_K(0Q zQU#NBH0Ha}F+JO~FD(?3q4YMp&Gw|IwRkH|J-3qN6pvb3q$9Nv)2+?>4zsm*kw%pD zFx{o}x$DO(=M(qKSalOoyg2y2ZC-6TWw(8h3mvb$kSdk4BN~aAizvB| z(2FK4WER0a!;26YV%O2ZNt!`tzPh;QBY7+fTNkG^4_)lyrtqiOZ_ZPpTxMtVYRrVW z@d(Vu9X5^O+3}~a(p@2C|Ad*dXZk+7)LhvRvIRaa!rC}$BHQ#~wMehwBTY&o*cp?Y zyxw$FH=@~&9x^c?ch9SApZkmJu18DTIBFTpi8!{vqPaw>A30JN(In&|Hkp%zw zd)M%tN0|$6l8orEjLMf%RUrjzLR9IruQG^qL zmJKJGbtgIrmu3CPAuKm*wIx}J!=282_7FA;K zgkzIZ`XHvHM*Yn59f5Xsd0{;Bq_gFQMm~8cN;Lf?o1x^<1|XTm9p%$(@CXPNI@op8 zPjYMdsF+)8rIjg5?@;%aONbTJnqVnvM5UAkf#gFv<@gg0IXbyTVxx#63K*-bA^9Xh z2Zm{tK$eZV8+OV4Nhyo6wn|{ErEVD`eDQyD*N!+`GE!5Lsnp$;~l46}ZnzstU6W@ZYG8P(=O)9J| z#x$-3qf{C-JW+cD#rH2kJ+&kzPu02qSuUBM+S8YNn1PvMWmv{GbHEef72n7U{sT`s znpP(jjTjpZGK9b->G8*(z7*VAEwi;_qLwmrU`QZI%2-+s7B$#j;>v}p#uCy6@?cVu zblXeY<(z1=N26$DjRcMuH=IYVx{`oY{nrw?jCrb%aw#?V&pQW|Qw~@OzEcjT4{iO< zg~6@Y z8IWD#0w&I+X&@uwiCYx&4R@HVAe|YSSl%N)6D^E%6=@9mP%;=QWol(LVTeiW^OAvh zYAFM1O<(pymw05#H&^Kg<7P-Smv}C7als!;paT)<^rKckn}??`gPG8c4P7HNnibiz zEA~vJa0Q8+(jWINx}sRIS6`FY z>KwwjrQvZ`tyz^B$>t-Hxhr9Gs~CRVgp$T+N>9wG%0i%XI|*h{kIplp2+xx$(H(L$ zL^+t%UUtI=-A5q0qKQBMY=yJ3Ax$V>tkQL0k}Sj_Bq2bY(L_S?82U-jlUM8{M(Tw& zW!Yz6UxW!r{3R-Qi0UT|@& zM+nL;_J=s4S{$Tm^RFq^E6Lrb}`nU|WqM3#`n-?FmlmhW|h znncQuv#g?!Go4gF{DE9Kw-S*9B2ARusvBm5n-HntFq@)-2%0{^*OZhGI1B+xRDcK; z#yRsSX9H6iqXpaH5^7)NblYTq=T=?`7qbbajB+$N(2^A9sx^^LTw0U3Ozo~EqurZ5 zyJb|U&4^RqD;$C1gWbAy(z4~%gF6z==RgW5UZM?-4kow<&qh=L zieJgt2bwMa3G*W!5m4oPSR?m6GLHxTWc8jSU-$nE(lhE7h>O4$@Vn zG;$_St0zlBQ_u7aY?k|lpMH<};^^7sWHu@mm<0QimVKCCl`*oW1FQl%UK67$or z6*8I{1<3-b52}26I!H3AXj3k)O0Xuy2DM2l#C4hjDYoVy#Zp*%Q;%&}BGkJ0ri&_O z(~1pz=Sdf7iqSNzyLS6enD9qxB%P%|9jq86fd*iTX5G1Xs5E~xWqI(V^rT;y9V8dk zCBZ6HXkL;a%K@36#=Q({@*`kX>hEeYlQ3TRCFs$WP|C1oE7V{mJ#l)((hZU=mo*1q z9OjGvwWXr9bc!P!A0t$AiCc1-h5|n~K6}bstJl1&t+rKFmBx(W4^VpJHFXcg+ud~F zB?Ttigw2#P&j}HEjo9uNGYpCEl@D5!`;oyptaiVCSy(32Qlu#FQ*D+mZuT><8otC& zmBo{b7mm~v?RwNWsrH_w7Tfe%N5c}L6AZD&>7Bd-bX56GKbfPJG=mU)&Q>`{9ildB zxkoJ649WE#rhs)I~d%-k{8(<$aySz@l%NT+nkrgd+%m)(9YhZOrjnF6FJd2ZP}2f`qG@0TS46a zx||YOY*Tm{KGsa`TEH|2d}rbKYHh>j8@70 zWjT0X{iTr<%dBTKC)gpVU0vhNFMc?8dtUlX7u25{vDoN^&pnK_mtR6+wLQyGj<664 z&_y$*s!UuyY>k7d#yR90-yt9z*Sf~jVgIsgs=0q=_R3A^TslOHh)EEa`Ry9nB+hO) zlfW?5x{!$9NLu}Ql2cIA|IHMRcnV56N0?pD?F68>sU1N<9l#XH4DnA*034IR4ZPsV z114QLoP$@`)KpZ~UoZ^#%^VD!3~gc1reKCZT##p7lEICMv#c7OFi*m*;K~*ML{@;9 z%NQ9V38ADMh(M?X1s+K9=~_$?2s|e*JAfoY* zCeoPuoJ7ij;*&g0Yv5Ec9f!8jntKHnTCgFts2X-3mjt5SU<%{-3$vyFRW4qmuVj@- zxkf(#5C}D3<(b-#v>a&p2wqI0r`SoQY@*#Y1d@3o?%Cr#&csJ-L{H2^t~lAcl$!w+ zT)%{gGw#my@JC3JnO^b7*3jC}up2}k4b&h9wk+W884Ef~n3*^Xz z1OiI{g5g1Y$s)dqA+DtSxQTo?976TS_voNz2u4S_Oz3f!v-lK{6dPFyloYNFYa9$# z$Q0@*6;fi+er1xz{D;2j3EQ|teAu2s4UwzZ7&tKx@C6(+x2*d!X4KI{-#kY+H?enSz*v0`ZVj0#iAm$yN{$O)2Ptz6M+}DZ0K5s^o|Zng|R3|UkF-4xZ{6xh*RwUS0b*ciD)AOF_23TN#-cp zY|H~5LWIb*ps9FQi(yE`ND@KfNX^aX_XG}40E+@8sgkNr21Sq`x!#Z1s8r%dIME}s z8I^zzjF?;%FEWWcj1|fiRGO9sf#?mJ`Va6_pWQ6Z;^>2|AlgjG3C+9)86bSS-ppbMA=MPU2yvjAW8KjSA>f&0URnhkfY}W)!Vs8vSGZ|M ztG4PYNl?Wij;Y|{A(BL4z(}v6X>Piy{wM~$e32+|5?DwPb!w_)@}g&v>?WBiClL;Z zc0`&miJyRoV$H*z#FSD`ckNh z3cGTRL}p6Xp-GA+k!8%}Ik{~(YzIZaSwh(V=;meyM%e9(-Ph81O}f^kT<&Ft1YD$z z=h~nNp)e#hd1F|Bkh)EbmUds@7#%vGljTmvR6uQ39&CF^(vSeI%I$>1>O_8y?WyP& z?sS!6lxd+LsRY7Y9kN+J9L9a}TYJLN()Q}hAVluYRAVTXJA?zDNX@a?5ofHRHK4j_CLu9wPQg`A=!4O&4dvY3kRT8J;m9;LlujH3n79L<7(|~k z#XMZdJK%tkDq{>Gmia!0s!^c_u?_P+TUu~xRFx|&wG@|14l5CBTCu6hpaY{aY9JyP z2m9fC)(CHk&)`T-(n6IMCYIYiMgVF5M*u3`H$+sQ#@RD*qLyNl1J>0 zN*NUZ&S(ADWJdn4=J}4sc!Xro2j|)mq&B1>x|g2_Y{;k^L@jYdMKD?I+B<{;9=mM? zFNM#%#Lt9H31=aOK)7@v(5Kf0_BQ-YJpq3{f zR&1<1>PT3mNx;LWmSceF2#&a|JAA{7)`a41OanvF)gdScPjs3vDmegSI_g8K9WH{Y z(aOlySRRr!8Y3qw3*vE)omr+uHwXC5#__p^J_Jom4aV*&k(@PzfP7^%56k~5OGl`( zVhzNCkVGUqZ%z#I=YkA%wscewZ(5p%2)`a=b<4{5&C@)S7VDQVZp%9=DyeL2BE`?{ zGQ>{fg@#trWC%!b)CzDQ4zISyaG6$(VMeCBB1fb(a$SqH;!$duB(KtwLzHwich7age+D=fCwH6h$`yI(mf8&szzEU5M;Ekf2PO26w!t$ zihQt2VZ}v-vp~3w}vV zIk;a>=>*9#G2(1c)DT4PV21@w^hCQVfvj_RUkJS@&0RbMXd@PRmjps)_CR|H04g4p zA}>Xs#s%#6enZ3s{KEujz>mz%ABNXU6g|oOH{auXR%;z zjc-Pb({KF^T5EX!m#*aH*j|N){E;8m45Hp)t0Go(3Yvwx&{)bSjw`bo$pvC6s}d@6 zKmDlFUW=JfhC8rNLa=iE8m~oozzLjy2PkUkD3%e}zz)1XBcs=5>XkV*Xw)pw)zulh z?NvH-#vMwA0DIFz2sR=yuA=27`-Y}Je1k+!dQYf@+u%mh^2B0^SBKJ~Le`K>84z92 z*9c<-34}likU)6I4W`Hd0AK(L{KErOU;**P>P!_Z^~d0ZwW2lTrl=I7+F^8l1>;;2 zUB5*ES5R=G6RUC+YfRUkY;81+jCHW$%Y>>!2<>9rF^-=vpGe}>AVxXxw6u`Lsh2t%``adv$sd~*~fY9Nj2SP8AF~jF|*p1Tp9}l@D-r~r9_(bG94n&13bY$;W z2%dM-#&?K>bT)~m+_9<1(z3x&bw7DlI0QW4z;QUShva6Ym%6E=db%I<(Xjigqksck zEai<9mwwSE?TUt1R+^EFs&tJ40y=kQONz!Rge1IRnqe%BL|)7?^O$w)!VrFjdL4dN~G}hd~=%_7uK*h&TVsb58tu8I%%Ra>8 zlmz-Ji!13;cJL}XT%^l2M2!0b4t$5KRBj&k(otqa)I(M2wEC-iK+A_&Oevnf3*m$6 zn^4XFr)ngQO7jtrXz8l1?5sT)e{7lMOhh?QsrwxcI`DLi+ahG7g=fRk1|?RE|B!$s z<9~Q1Qb;TXhbz^bMB-1q(J(#+IDSs(N^c+_3uV(mZI9dK2CWcGUeY+ z;$X%JYR7PuvdOf|O?e3?CN(QxT%UBrIb1qN-2_ls;6l)c1+j*?o4n$)I#{&3@q>*c zO$_q`#Jhg>2on5fFCIdF2owJMR}S4lhyDB=EQs)6!-DAPr8qQ!#o%0Vny4xT}W zD;f+wevGFtq0evMf*OQ}v*$;5{o;LN`4lRM5G6povkDde zYgVmT(RGyp0E35r406^KY0qCde>bi6b6fNu#dz@GJ~c>C;8~Ca7sj*b4_#4^EYV(! zi%uWBwSx~Teu?%Ux|H$arK9ODCBdIK`jtx>7hcPfe*gLVrV}AkwDZat_R-p&VzVvn zz4KRbYl4+hsb1as8#qgd=)Q(^z`)-?zws6hE=+sxUfK@VF0@OzVMy&4eeX1^`5?uS zjHBzjJrAA1oBiGqMK`cBL3igCt7LD}t?Z#7)6UEM4;~-hSuLD@=9%Z4+k)!HBfcm~ z&N{}RLTiBl9OA92cY@pSx8aJD!GQ-d8Zalp5RwqB+fUdryq-Ok`XP%bb_axe*Cki%H|GI3$G^2Ld%_! zsH}3Ov@}f1oix)-PbI=ydZ)q*r^+xi4()sjosvHMM?|^`g3+etG(77a$>2FOrI%>K z3>_I|)QK>aP8`WZ!)OEYB7MH$tD)uy>W7?&cCv|}1pib_%hJ9Xu(6;3qwJrn;K4z| zoa{0PGrnYW=RhOdB#f@o;`|5081FpRp{|Gn3q%ob3M#H9KW(lk75!pQ$LKJN^(c5C zUCFz%^!mJd2K6?5KClYpNojd~~p;y}FvUNk8eWtu=7Xx{1607(In5o-ir2 zkk~nmMfOf*_k2KJxV}m6A!#Loi=n#&%gMH1$-TJ7QAOs|o;)vVw53M%K?gH;&rwp` zN&V3$vF~i6Y#``h9BCoP)>`Q%7!xfhrc{#+=QfIUbBKfxLO{W-K^f-IVP=o>NjZI5 z!;xzr0km#8Ayb2ukZGr(ZgOfntHuDtmPB7{E#^@BbSJ>}^6R6F zm@Lhn&aAuDtQ>1^bM2?wq8p0#Hla@ImnGj|5(m9>OqtFJcyru;=Lrw09*2YKp& zIrsrJfh5yKtNyXKg$S6pm4PRAqCBE6{6*+c^O zf0}tqr4$sCZyYLWws{ND%0V;4aPCcf-BnZ^PxvNa+}#Iv26uON8wQ8q?rsUeWzZSi z-CYAD5ZobnAh-t!fdGNzN0^=cpFMlGd({_x)m^9SR9Ai9^I}IE$bUkw3X5~FpS3Ru zM54%!i9e1xv?aOqjTJVI;vU*WQ9vg>lT^MhYGD)d++U5QKv#VFI~ zfZr8Ma4&ik8LAmQ>4kcTGz#hypm?2(N3ybtRorO13pZ)k{Vk*yva>o?V$b@UNvd^W$e~{x)q`S(_DEjjedUlqfyD`~hRa+n$?+MM}^p zFOM}U-DryqEuw*31(_6elx#WfJ0{<_v5Ftf+bT3pRU&;Z7o(-+xxmXD-bb+edvwl3 zDbfbn5BX4LS;+h&21ZFrD6TYKMNQfeYZE;_m$VGG4WDJyOpNzw`3T;!nio6->acPC z{=>+Ly;Yzr^G%1<7ImJ`xiMIKw?5UC6Pwi#h4&7LSIw(`T4Uk3n3eOfiGowTO%L$V zpd?-qS3-eLn6;-&DL(a90f>{X42H2`X8oBdKpPY#8QS$^spr%-X{P2B7jzWlVJUn9 zUR4&?B=I{1Ey=7Oja-Z*Fn(7kE$sc8)$Ixi$3&ymutymUdtvd8g4$@Z#*Rw%T(z3d zT)k=AATia1syM`n{ZJ`E}0U>g7K(3TAH0xZh$+<8eThz6I@jNhtr zC*MsW!*fgp@xk;&v-!VcG>EdZe`Lw;)vE$G1r0E2WZ}EV>yIM$!qkE_qLmb1QlH)h zR&&syt-lx=65Uvyx+SmdO<1^b33bJlI{@)zY!?TztkmS$I2>7bY)hr7f)by@kyi}7 z{40ZAeX(VH5v5zRR}%tW*Zw?!%zEkV>XO&0pOIzv(!q4k&+IBP#TLaezM_oPcoLs* zm?N+McJj?W0C}aDiUQ^b$>-VBwaB_*WXjTWY??EY9Vj?%pWG-yL*<3Os^J>iXQhXc zH*#0XIrq%^5e-<%n(t?NEdSv>r+VB&o;`5^;R{6KTex%ZUdC(^Ilaj~?!nUaSVM8; zJM(mpg+|8m^Taw6)U)Emgs(INx}W6N$Gvx-w1Q)OH*!ruv*r@(t(9Ae;eT~}iBa1p ztA)E>!-rAOP%^=KmoD}WPI{vrwn`QoN0xH&$P?@)M2WR1UefuA-vkUIvLOjDSD9X? zDTsS9E0*kdg4a%bFEx@4a8j`6kaM!9VescfzNm4LzAw1ES{*7V^b*91S}G}@*p6P1 zQ{`eJK4JO{Ir9F((L>=v6GHpye+8F9LPg2o!QgupNIZ-&WQVvnRAwSg>ulhpLF}8W`elaV z&>`(6f&ycqch?J|I$?2dN3&q$f6-&ysl+<*!vru|%&xx1b#;QvJ(slh8GJF$KH38NO|++um?P^EBZ& zPRw^-{qh4Qy1+J$0Dt;KEyn@9K=?O|83?4xpLO*1P6{n+raHDmYvDar3^q5Hqd#ln z?Q(F`nTlC^(19;kx-E)G6yNSBgN6b}UiysG4L=*YKvS|B{nal$Qi)cG+TQud#v;FE zqR@Xrf-PDJ2fkSLet_esDlvJ6M8~R{ z^D2Lq9~)W}lDz^dUpeM?e^g%(M})5WrIB3Oji@M&JRsTYX1t1eO;k6)>tR*S?_8-U zfCq~a^_3J;ZTKg}Fp?R&1U!Vu-fFd({z0xpSdlwWiE2%+v`gwDfU9G*&~{D6d{wQ? z-tAQp2^fWfW{a|jj2WnpG+(6>w#4^>BT&Uv?Rc+9%&D43rbLq_Tb0hwLaNq5rsxu2 z<;sF=JIsW`h#C`!vQnY&;;kaxrJ!EB_R7YN-Xg(h66wfJb&JTxAxYGnlI({#zy ztV+l;>(D8o&VrFd4rsrxAO#|dyw`LM*Tj;!0RJ8oiXLR{0)MF8Yq9mr+*D3{{|}>xfkmb*_anCDA?Q^NT6dJ(xWY13z7tW#%(Fi2GI3eEm|mwBu|;1`T98O0VF5(1A72@pqIk=Yr2Q;e+a#8uTP-7Et|Q#L?`XyM{HRizLq#f>mRQm*^8 zE2|HI`vLq_l#X3%&Gk=VMq=SlUG|+*JYfM~=CeU{<$B{fYK36;f;9+ZI z6i3k@qW0rK_2-%o=QD~CWn7P`dId8h(*IDAs0cpt|LI8ne{cRDWYPnHOtK&+%7Ju( zB^7r?FNJ$PSARGQX+=fAx0J3txA#-$e^dbW&5t4n|+lh;d zPlaZplHg4<@|>KWAn-{5kfE=C;PUeNV0Wj`*)x!i6`hqx08)FSY(}Z=N20 zZEm`|dv-GO`1p8(=z$1f686S%AR!e67tey7=OaGt?d?xIN=gfFPlO?f@FWqiB)gOZ z0+VdT#PbghtgWp^7?Qs)uY(EjM5Sfav~(z_$+-A<5W=L8n1~u0S*{wDhOKRWWE=u% z5n1S+NADF8St2pAK=S{h`>v9b&BaS0$G&DwIuVKtS~!cVr92c@m$N#%VA zh?0j@pgfQj!9pGcMuA0S5MU;wZ4v^C)YI{7odnwANr> z!}eO>`GIQ$Q)&N3p%jmmNWk%uKnDSDA~4MIzyrqND1_K4z^;N|Ex}+a2}W8OJ|6!- z4Fso2Bp`zjK}CdsKrTE4ad~r8E+r*{Fd-32q?pkErX~@>B*KtHz>)|b5@Aas&`1O| zi7+P-m?VOfL@<&FkrLrdA`D4{NcleyB?6!1LHLshb`qgYB8*A|R*CQ@5!56CnM4Sd zNdFIHk|BYV%G-WC<^Lj+a4wQ=36SGN7O4@0Cm(jGnJM5fTdZkxIGZWKS-F!8svF58 z@Y$f%>aJgo6^~BncJ1Uef}!TH?}T+Xu2)>HF_A%*PgbBzKTC`n?n{l*Ky8iIMSk@7 zRZmBJbf$XcoApjb-qo|cZTry{$ne;ZpGEjFPiVhcOojX;q5n`AK4G@mOhjB#5sC?T zH=EVvMZ961d1||;Jb$fWG*t*1gq(sjfEC_*(I^Dp;<*hZRji+}s;%^!_Vd3f_OB(|SIk0huzDzS3;M_jc?TW+KSPn4#Yj;oM~g52RJ zAgjEvtC=}W|2Jv|o*v}U+Dz6CV5}|GGEVAB>wf`MaxE=qjrJfoi86<0USt$}`V(tw zt^EhpLH^&}Ga){2I_k0fYdy=DErL0G0sGjmyr- zNcgT$=o)!E?16e35aY}@I&B%)mv-+c@hV}f;QcgRPAgXz1Gg}p8!=Zl+||jXryr3kRAN7AAx!{Eory=udm^Nqp&adPy3Yx>cOD099d9X zPAQc{HY72u{jjbC?cOXm?=fVPgD_5FeI$V`xPq;WhwVyX9skz6Jn{MA2Dy%xi|5DN)ZQQn$8Lk6+65|-th_SL)PFAmE0p1U(-Yy&PalzBMM4GLEA?)TxtNtVs9kGorfHwT#QGA(z&@(EBqU56IowDeSxF*YQ=pY@IG>DW?rhRoDHARf zNV`wVA^2Z+hkqt2+aW8aq{V5^lQoz*sHvuvXH3sO^+D+6HjxWaF7N!tE8%pLLtdGA z={`A?;YXjDJkj6k@YfCo^E40cuVDm!EAwTK_3F~yI5ZKx4kg$FmszhJMy`NJ=wHU?&4jbpeMWyU zKqqz--6VL-;Ds82`bU`BY#IcS3CB5yx6QWjpoz(W6TkDQChh%T07MpAS=7C~*UQ#^ zD{$Y-O9#~YO`T^AbI2{(qTy+Cp6AFB)uOhCnK`a$x32g!O^Du@Y>*MK5iiugr7>~O zZCKm;-Nfu#0}JK|Xa4aGRAAANCgY}=KfhOHe6B(&eBYBFc~?b$d~mIDZfE@EwyNq6 zlDpNOk#5#VEUnN#o42PaVsMr0K;6_YAtG}I?}xjYBZagb^TT>V8{<6G9x-{w?6ia4 zR@tDeJIRQSXS|S@=d3yU2qj){hrg22!wu*~I9V27e~Z!5^5%XvlPP52psXCM+`Qwe zOb_JCfwzz<3QE3wBMAG;A@_piCwqU%-S;=S>gJ>#Ch#OMYaq&CI;bxF7CnRS$)u8F zq(&4uwGs-eD*xS#8TfKX#YiX0>sYE~bTX;?p2^3MsbgN`?(Y{o>)^^)TUXg%lAtsv ziMATApOLWt@V!PF%?=eh6y&d$efFMN)fTuCii))_VGdp4ZoieyG8q6WNj_g{Sv^hxpohgSEP(mwVyna?G^zz?X; z^BwM3vSV;E-+ZUl()9Z9=l8%@pGs_c$m5l7VuQACLICIEB%V0a5D{(Nq`b)w&z1?t zU&)|mhN1;bUn%STH|gDbud#wodO8Dt*>C6-$V-i-Us%b?zS;9%B(Ck^mF9!Q*E6=B z%`j_@`tU*$Rcy3)CukplinY1Gqi5&)KcCrZNG7<;ur?Cnk6d0sft1JGo+OFPkp_eL zqn0yFm{}HjA3rTv{An!2&3!6sek$Jo{`Zgb+clm5tHVENf2X&=-nUj5A7>vh#hto! z9Ira*mrr+iI&eaj_}(d_|6I-Tj6c>lnyi{x_|;Wn6`qT=-256_qtNCJ?E!sf=mmMe zxxQkvdP7b=21&h|wL3rCsV>CaH`m!O%P(N0G9l$fC_cHFYy$(>y)iO|b{ES9tt!jL{Mz~J| zv}OZ63J~_9ggYEEvgD9I#`^$AeVN%PejLbOC+O{U>-nDf@&*O^kK2ETilrk*SJ+wS z3t8uw>ix(xzBLpqfbzffm*X&{V@|hkS`3oW>jetl){wqt z68^cxr|Na(G6iO1`t@WP{_2%T%LQwx3Yv?7n9=poAB~wYUH45X^-#F+&un3EWk(q? zZFdZbi&{5b42c&E^7Y+UQFI!u@zX?MK%WN`F-2xL@SdllRe_iatI`ZV}|> zt(f{@#?i+IAPsf4Kbf&hS+qZI~Xp=^r%<#2G%V9 z<>;Rp6Yr~#bD{_TF|arpw)=$0*j9bFk;^pe$UMmGxvAu{t_5BJYdU|H^-!nc_@p5(Q5>cSo#`mmu%l<>(7<==1itwu z)qeKq>QQIwmTPE1$0E|D#8zZVOaN!G+ecMTXP0$xov?9o%xRcPE@CHFix8E&g$V-@J+tYEWuD@dXO3IV*hvKBF(OMC}NwN9ii}$8#*1W9PdzHO)ai0$ zMsoN4PNo-lD)adfA0-I9A*i=zMm9{_{WkT&@rbV}dLkXoxN;Q58M+bu)i76;>4%)^enCN;4$~h`Blytvl9@`aVwj z+&EJx#p@NC0Myo7TxxE3!{52(_`}iw&V*pXr76-E1UP{ z+ybR6er-|0h|ny(b+e!x$Cuv7JPiOzcfpieSon&YcAfSkcJQ#c;W1+pkgX(tT~~s| z!Xzl+KFa(-6?N>8hL5UR*cMfT3pHF6RcM%5j8PC{i9q;(M%>6(e1?m{FbhfCa407V z*&*_0LOSYZBx$s@WnK;wRNtxJY8fnXgHHcLw05>z6Z0EbCfB%UT<3eWQGw!{5io%C zNz2;AN1kqRj`9j_5<;JqynYc7Czs=H-pKYvo1Tvul*LbLrXCs8ng% zTvmyKKt4mFx+PBhpC3zfl+1oaaZ|AetOeN(RFax^L{b_th-B7}BXj@s6LgyJ-apaXhEy$Q16ILhX;j62rW}gWO+zT5fM0_4V4vs4 zgb*}3xm?NfaXa&55^W4={#XZTv*NrFzu(<@MC2-erGbmag8y7lzc%W8adr@+A!nFO zYX4RXHu8)6m>%rHthqt97$9z5>lv2Qvcn7zEeLY1c<=e!G@3-8;sP-6AtYIm=_^el zlv7V>!`uxA7J#r#FfG+&Jla7zrGk1VlQym0vCX-rRKUb9eW?@z z@@k2yoGcfktk`zs)O^K^ZB}RlT+`8CQ))(4kgVPo)Twu?lA8h1l^at^pD|LtsQ(9Z zr};(xV~tx;*_*j0g71$_uW~ZxTv>rSAQ?4qq{jHukpW#S;8bA>Xs6zH6_O|THpXAw zJmJ&qRS(yNqTivexO;>rcZXL1VOy{J&c`{54u%-EWRTTohv@gKGKP(mA6SC3Q3SPb zPs~v~z~A5c@?pwath;J6x1OO+_K*2Xi#k?ROtz!DIp(`&QBwO(*j9GcC-zVkMC%P- z!A>#6Lju*Ko}{`R+?TRTdOK6w!!7YKGj1Fy9?-m}CL!{%(8))&;3uuyTq=#Gf!lU3 z(psarHCL^5hocR>F0g4D+*EgF!pNG#K`zy&HX#U-O@i>IGA+gVLxoN_rE%~tvJ}9EC1)7GCDaH$8SxU_oS~x~=`SdB6b$VJmXa9w zsOYSc8C~SOdDs}!%6)U`+L-Fh+?XnVG$wC<={rVggxxH}G}CM3?&++qL)f75ZzaaZ zdXs0=aDT}oSJuT9{+Pf+k`k0_PC5a7Zg`_3lyAVHUqhjHPJ#&=g{Er&tP*g zZgRSyJ6xrU;&Nf(v83HE&^kqdJ3o1?$2*#%^GcY4SAvkX#;o^<@DceCP-|JJ#&qcJ zfPx;VC`wV9BRX*ba!!<~qV&k?-L={^P@h~6cc!|jj1L_cAnS9H<6OxenHj8(i=Iv( zLpJ-fy=7ddQUG=Ovm2*p^8Sr%-!d40XgBeyWs02{GhsxH3j$A=aUBv04Q~j%;QyShQUft0{=?V!i+?X* zWd-cR`)`63j;t;nGEapqjmRfNBubn8ro$BVtaXmUbUCHTOS?;5_qZ>h*6n?#t<#tq z1^@wMDD(%6A*Ae0UT2By=z^Ag$v)?Ku{{eb?7G!D!b5Qmc^|Ggmb0x`9EWRysURc) zV#1}Jb6WnE8E@t>-q=h&*h2eFQLeg66^kFmSc%;tV>^oP>%c@*Nu$|Q#5soNM!NPu ztI;iocG`ELbn}&C5#4Lf!m_}J@xc(4ZZM{WJ+y^zlB&B4LO3=}_A5cIzdcu6yVX_v zh6jW!4gw%11#^AC?**>Ig3~85rzZw7KYy}7?+pB8rC1YDmptWjdmhS-qj7=jlfwZO z)E@Y6Ta+0yrhh%RW-SoG_t-~8zWpSnF%{Gc8IRenpICDWSd6D%t@nA3;;eLXMtr_L zTA$TF=#E70p8`qt*}05fHp*{J4{ndI{{8Z# zCD)UZ@K{CTW+}AbEm@##4i%w!rr=LHb{vjF2`M&Ty6ujeYWx*M9<7_7W$VRCt3 zN^fV1y>)T4U=J~HJ`zDggrVu zyAnl_>ZI0Pi|%F7&2=%*mjB6?BbTsoW6WB4d*Ga5pLM>Z##iKR(4M0{1C5U|ZD&041k4v`)?Ox+^iN@r<-DzWGUDHC4_X6^Z4@S%@jKOg{nEJEyvO_W zThHZqHnn=BNZ5meN~YkLc`?;}sZ`|a39PD#uXv#7-}4BKxj^$~_9<)Yge5_#ZYUc% zy*CZ<-e}|xnaZHIgm2`dmH8Ru-Y);z41fFQjzv9O#60bdahvn*UyreX)62t8aG-#g zwg07t5RZCDw^R;3ei6B}fsc0DY3}cTb?HByvM|xdCa}J+j1?c^ZR_;4w+u(#ehXW) z)}z~tdz!WO4E?g-7koFh&i&_ixP<@X%Y;vzQNP(&6f)o8WLvEng{M?zSH@H7W`2&- z(WWm<2M3&9BJaJq5*a?=(KK=85P=##B+N>2u@HZ`Q|)%2DPZ3i=q& z(ECXym+}m*#>BECR|{O-b}Z%#!FB-$+~!zzDZ<5*XH9+Jln}GK#urBS41PE)JA8iW zi0to;rbfv%?qtvAT*J~!j1gv6EXm4M*|M60eoOKm%PNC<&c`n;gbp}A2Xbh2n};8? z$Yz;O*O(I9stK4mx&oa4Y1RaL7fuU6wRke+22m`3Evzx;sFYjWM?c?Uzvo`E*vVD7meEe74t^N}8SF*nKe92(g^MEZc+jDTrKLx zfMBFNZ}&-Nm98MdYgPC&L1Z=axil9opD`QH_kAGNG=>K<{{LNfYrk)q7MuBXMK6zw z3E{Xs!XdYbeepUk4{P^^GEa7PnzoefuTZi_-zKD#MNX<2)dk!h;R`F1r?j>NOiJo+ zqmcIidC#Xcr4DTugxmYlxi^SD^Bwf>=c|Mc(EQ@)Khj2iyUP$(@=|2HfM&Q;u%6yl z+i{KRdRu^szPH57c^d&nO^g^K85=~Zei8V#t5J2ekH4Ya#y6T4oJwu} zC&?3w_TZwTkxY&-$h^dCHX--|-SBoPpKoxiiJ8t>HUV{BQznM!i$t546_g#p{Hg8RxYZ^ZhPQRbS-M#Tj&Msvb?$+MQJo#5Xf)_L%gO%oem@c~f!tg7no zC79gtJD23=TQ=b4*4#(?z%rLReAd(F$%4q*b+|{Na9t-j#TexOs{Ovv((+~u1i)m0%6*zOeyHZeppFLNci!#FpP zqy|YS097klH(@M)Ar!>By}3&H zNYIalpqvGU(N{Lb7|bM^cAbh`!izV7?&aL2^F5jbEf!z%nJDSf1ukvewk z#^bK}E=5of$I&o+f%5(Qu_KR6Mx}u)X=!z}2&ab^NXRJP`VZK~!Yy!VgBHy7L3)kE zn<|yyuY>}fw8ecwZ#7RBE$*(bDO?Z*v7&k=9cZo->rHkq&>XcTjlLRR6`T#>z^nT_ zy}*`G$Xj#m)tm6eKd|F8G+1}f$BlQZSc2@bUwf5V^{dk%l?}E*&i6Ile=4T5(R=6< zDejKwPh{2yujU=^AH%WVpzU0uRTh7$Kb-pfX=B--P+aXy zP$%MJKzoB7yD7!nF4ZLOJbzrVPe?pOWT;!TpYpet<4`r<3gb#YBHnFS7yd@J5b5Jm zIW6oEhW)O(;?tewl@_~YJ^fhrU!(!QVOmWn@+ysTmOGHVW4g>3jNs33d6MlcmoAg? z)*`W_4e_9O=f;%>52$e?0Qe^I2cvH(to$55co+JF64qzrHM?{KZLP&v#EW?@I4aWy zu)fCBxC>!T+OdC|9$lrN7~11}KZo@5l>QBuCbM;r8(gcqjy=bZ9Vf?xN z;&iI^72D6N|8@V}ZnX30w6Q17jl%tR%l)S_*9SZIA*E$*6GkK@?8GE_=|PBWlx{9b zq9ldQBa}ik(g&FVjsfwqL0GCd6z7{Ht#16Pg{3asicI#SlA1}CzNGvxA!}?o+&?tA zo3J4)F3GzTb90hPyFs`X2w*xuJ0&3#6V=(-$1-t1khxm-eThtOPP$c*sSUegPl7U? zh@u23d7%M|+LnQPhiecuvA+hSUeU ztRr)zHWQF7(N&gI%07p0&XOE$iG4y`<~pD-)TzADP^)Hz@8Di8Xvr}K#bQGSRtXbj zY-9ImWz8~oy|XMaZycX2kmHJj@G^IV3Z_c~lKu%`7g=VnISeFObAMr;CqWvJh0+zUy~l91xHwuyNPR&# zt(ug29ynDgW(lnuTP_NPG2)b_$HA{cCtrxFLWb1;1_=XEvKHt=uuO_D=_Dv|fpjH4GHmvtm!m@D}5a=Iue#sr;Zo^lE85Pl%YvNQMQzShD?wC~T8G(-D+(b*7m+$6%F-~f5@rgvMQGbCk1J~i|Agv=JO_h z_yp!<`J+Po2Qog6GZ&g`BElZ`D_a^is|6);04?%r;)RjX+1ZsfYv#W@;(j!Pd`{|y zc8Ki;D6Wc(WD*w$Td~gU&>;11WC$Q<76;=xQC|uwWOng-nA6m`rizyf)~=G-+!{EE>YA!#1HKqy0UMq5QM zeDfnM#4s_qFBKPx`wxj#&n<_2op(%M)DG^tWaXezpH^H z_3=v|wO}gm6bW&`g>+86nnoH{Lu{I>&_qJOVz>uZhY{0fF4(~}<`pvb`)7VfdiphT=%#9mNOIpK$NJUNPTlW}M?t6Cge#g4H*69P zm@SEXPME&>;#xu$OT}?x*&acv`mK=|bCh#8RGOEVdvGlMZ3h|ap^S7XWGjd3xlh4>V}gK1Ql zYyJWwtcoQ^ZRJV$@BDhp<6%@6f@rMkw5d`wMjVVaqYw+`dj;SK7CQqj_jUQAzyJX; zDh_U#;a8$;8{O>D*T$ zB`~Vxcu*t747DiQfeg3~I{NDy1?}!*CSBR{I?G zweFK`kT=!*4l)im`aV(McS~er5$n9$p@Hda`zn@nsl4N?T}37>!YUET-fd#Z(EnFw zP}n8xz$UPq%>SQ!em${u*5P;!BgKq>1zGB>#juz%r0jc=pJ+O~TREl7HP0`cY}&fg z)a|&VYh0F?EHwuIFm1cE03T-X=_py~_-#L$niUN%$(d+T@dT-sIW~`AX2pLs&;7Z0 ze1+(PJ%0fy?_&ve4Ril%WUB4M>8ix$3?gp!D-Bt<-&Z7K@0O%G7Dq?Tn1E%WtK$F6 zR0O0lY-g5Aby!SP0J?AcJqDC{ndydrlXTf$e(CbKly%&c?#aWP zR*{vTnWbl)ieC|jtm7F_o}BK zj?yT;WxwTP0PGm*B$!rjwyrSG@@_3`x-L@Ku@OdN(T0=3=a15?$eRcru;m-D$Vbk7 z>oL77E#C$2u?bBo$nM9IOwRR4ni2E<=fCXDX<|)_x1H%Q^lO}WkE%6huKG~c+b`KF zM?GD3yV^DLUp4*rYmqGy&AHp2B})#cRQa>FSPGi3WH~3tqU`vafx;W?)TMpn1m{j@ zMG2PM4^Ur}$>r;Ki>c+pTJlm-zWkyrbh2ac=g!x}{2I-fL?1KU&s+@tZylV_)2q#~ zWMXA8R*!_YTR;0d0Wr#)l$`V2DcL&GfwNUji$FH1Pqg%fY+Iy@e{uINao&AQ;p z{bTkY-X%L*UV|^BgMv9Qp~=#Y5I2lA&#N?AGPP@G3eLUwU3^ck^xrB<1f9qUDY!c= zxj|{mfv!+0E4&@~aSOU@_+zNq>JU&?&3o z`<mDn~CQACS@60wi@0>`>Hx$Ue<7c}@NM<}`*BuV-NFiEXP09f#b-rLm zfbEw;e)!5=$%IWD&=O;Jf9i~jtG7Qdkhbzy*<`^NjQ0wgfU(t)&x4g>o)DK#3fC2f zJ){wWPoB6idp%_@gN~&S#Y_AM*|b=!2<@xuinY~dwCK}vRYgIv7zSL`cx`B0#!R~G`ec5mFew!MlvOVlPy4dX;I)${F!gd#7|^Z#DZy^tUAQ-j7b^1fIh2BPa0h01 z`YxqAiPFgllxj;dYME6HX$WZgdgmNBr%KZcga+Skezo(UcJ1b1RnDrr{Tt7G6Vc~_ z`m-WjJG@EV(v-q&xbeb3DTR*0Rn8z@`_|_x(2UR*wR2V`L&m#i zK4Z#2PJK&J4^w|EOM_LoyrVZUGzH;u00@=vRI^RWpn|vLKjN@?py}>Q6rsOiCNkMuHh-Cj5~i}7jd&hoaAR(-$AsNxC47WUj4qyLGy_|m z=r9VOrN%5Eq&#j0__Ve-_WtvfkH@CoOryR}lR3B{dIyTh z=q&!@61ObVnat`i9=Bhtv)NqwY9jgVwv)M7Uq(_k+i3MdFJ~XSLT@-03J(t+uP_Pe z7t^r__h<&Pk3Yx!E93${ce$yQ{#*0gHTN!;io4}Y;6Bgr)NaN`SF^hK&AZd*Z`_(g z_2BwB<@~Zj)%5|WSE|oTGH3>Gr~MRT1}FF0$zbd+HROGrXuJo?_&a#0$xh{zeO`K5 zOGu$@<>-eP$oH09{T035WE*R^3L9vWT7WOg#{GR_aNef<=@e`p=()YqKNByTpLb|i z`K5&`0oYr2bbUz`xy|Q$IK19DmBr5=B4JV`p*hu^6v|_eI_9Nc(@$(Cd789N;=?Cj z8Kk9%M(ZYuNNWo|>Tsry#h1!oQhFlK-jqERh}-b4#-GYnyFoTKHWFtO%Q8Sc6E)ID z=3;|NVeOF?$d6kaXUdO;oiL_L=026^y=Y`_f+;k+!J+&O6ZyWEsS{K_qHWIfl8W=#p7VwCR29 zi9||&?QLp%a=Cjya6Oh9?_+;3Qy;HUBdahOD1fG_FZVMAdW02x)s2L?R@oUlZP=x# z_PROu{u6U0mpsq3pzP$;G|e8~>e)W~nDW<{Am9(SQ?<5Un52RHi2&F^X<9I+0EQu} z#oGB=*nDhYWDcilb+}tNG1gngaa#l9tglh(ig3;>OCn3t@R@J?D9S9|zf((B|62N~ zJB-f5Rrrlj#eek9lbrxFpBur6fPNzPO=5dhYzs=|u{7h;_b)<&zdf`%C|VUu=+Uk0 z$XWh)Z(Nx)gEPOMp|2%l<_M=t3EEN68Y8ouiEXE4h%=~-3%xm%k0zclFw{3spZJz-7AQj{g0r)j8Y2WED8l?1UAn~m(eE%(Ew&k-@d{+ zU`ML14*u^WXSqs2bQ#wzoFkG4uIQO+u+7LkL`s!5bdZRbC4k^@zFJIpmXG$O99fct z9QJtXl(q$3F^=n|37R3&{3A(Fr*uN{%MioPR59J`uhO*PO_SP}h;0bj%H*A2oU;fi zi4#22U-NSFRE)BJcPEMTLj{_ksOE((3#R5Q+5npMS4k6f9S!xp$5yuc2y!QXV19zk z5A}?KJ$tS=nqr*fi=wEr7i`+a{4c9sfy+VYJDB zi7pnsXDD^R5ANFa?HzAsV^;kFCl@5qioaN+6}&(2W#y~29Aa2Fa7xZ3>`1j$N@n5R z7FzMb14rhPL&Ss5zf!8W!*yn?jymHrANU>avgRf)zq*_nwxr*uf={{)%T?nfm1p9JJ;m zhSIlGf{HcGLEbU>`9ID-Ru%l5A?fU_VLkIwCN)qsd0GMDbeSA(k*G&}pn8Hcv$JE2 zH0KfI3hi$tI?^TF#$H>9Dg4!|yIkY_G&|aWp5U%w7?gE6`Je=}UIaB{lc#c`H|*-7 zOCAUseK0AK!gQYI)oYjqiPZ_%`vuDnU*Rf|NFI|h@y@_H+rUBn<~JmcN{_Dl+JTd6 z*=tV@ezBENth53_&knrEYgqDU9hq_gEAv2YYEM(vd>D9Ih}u$%0{cS)lK8q7JXWK$ zoQ&t?x!x1Rh~-Si|QCq?5#h0&sj^uID~ z@#hLNN&C?tbWQzI9pGs+Fr@DDCX zV}utXO$?8>s}z_8BIHBk4*!d;yKIW93D*UTGuYtn&fxCO;O>J4cL?qw$l$KQ-7UC7 zaCZw9f(8u%0=z&-X3ws3&d2i)R`ps{tGoJsuKU3u$z_YQUV$&3>cuH#;RNf}zGAiF z=Qf+Zu#30ZsR&2jwO$yf_sZ?Ei<~&uRw!Gd#$I#`#JawDjc7I1O9Q)u@nZwA@#6ix zaA*8yt^zNfa$s0^G!OcU>URg*hO%0Kow@a*VdQgW(${Fmw)-i(-oOWz8;BE0nAdOM zqHA$cHMP){ml=hPXj3<{>$n1@E-<+4Tj*EbzoHgA?#Qg2;{%R7liXO^6|G<0H@d&T zs)KkxBwbP|RSS#YxLSG`{VGRT&nwgGI??Nw*cn*n{7I%PWs@rST}&jh=EA2O|8Jmx zrP}yoXXDUiFy2xHe-p~#x_X6Ld7ZjrtvW{aYI3vY1>mMM?9h{A7yr*s);5(ts2m#; zdOg*1<1HCHzD4zbgF37CA;j89#4a!cQw99YVW9As| zK$g*}S<1X93()|b-qbrkw7y{s&TUAr6}ki}?pH%#J%Tb5zQ$eWYR0HiHn$|{x0d$GNHXD%tCtw zDicSJG&7}8nmNx5u1U{H6;+l>LdIgyl&Lf`G%u2`MaJqWNHCtj1y$|W$~k;|}U=W#7Oo3)qL~jYR!fI)PkMug zK5l1Za)OMN5;e&Q#au+Og`y^>k-nKH7A|DXYgpfU#Zgq5mbWas>+Z$k5H0+r7b{$B zCyIgTOz-*{{`a8aVn|uXJ8>vwBUPExI}FyiMZTWc7xl&HkDmHjYm|$Vx1zX}Y^UrM zH~T`z(BTe1p)j^xC(p9`W~Mo@D7dG|M*KlC_ctJiLD$@LFJ(EK-mVh{#W4j)>U@KC z02HdMuD304FW0#Kj!O=Z3!YBy2xhoN7p`YvFBO_+t4^p3#oS=bi?CQx25HRQfj@P8 z#eF=a`3p`j#I%l^0hQ?m)*>GUqCwZkIQL6m3dclFqLSX03s94usFjSV*1eu}LW`6- zqgAA!s3lFwQ<4PV6z5X7W;X#^+Rtf!dn(e?;$bsW41RO^vTJ>+#yxMyV)F_yy5p_a zI2YR!P#ma?&bVk`N<#SdaG@411B%SRK0;^IB*Kx%!%E>+0iE@nSr_@~;bOQuwX)od zeDAK6@Yl7_M82>BPxpl^CKa$O1NBd(A!iI85C*Tm*844tLVTFIL2a2{c_OCEA!bZ; z@*Z-toFYUx`t0X^3e!PJQ;eD%fJzCoL6#+BD{k1{7VM_{@L>z(Wu~I+2hB|xTn;+<(=+b-MieAeQ6`K2l5Tt*Q6)z-N8lA|IFJ~_iAB60OK=~Bt#X`qi=hNs z3RBsf5VdO&)2-XmmOWkiV1VMgMTJPbY@z~o0&B30AYY%B42m5q0~lPvnx89|zB7MY zBb)5EQ%c`P!FjH>Yy%L>t6&N%hV=kbuoD&n#78YlD?4(1E2-6u^5-CDfQL=ZWDS zC74>d9*5`(dr1_{X8P+<8nf|~Kc-71xAV_`^ovf$U)D6&vMsECpUm4?mP`%3HaARB zC0m)MnWXu6ht`vnG{Bkl%oIb`MmI%;XCin=X0o-MZRXVR!u=Fvf*NxS}O@()%&=! zv{IrP6U=wpIb(>WnE4q2)wJ-qXTIS<*C2x?-@M`ZfjOss&H8+zhE=2i_POkiEpv=w z@Vmq$?a5~+_@?CJUWFDFri)z}Nt+oPHRj8J%E8LyC{DSy&_tZZ^ny7G-J-^~WaO0; zR| z4v9;<=RMb1Zjdtvc9U4ia>e-VF@}$q>dB`mmTJu>Cl?q%Wu{MLp%^9cXc;(36A4h% zTV%A-a11L1G!3<0Ygu#@SpeR6c{*mEM`3N}>UX>GzxW)Xyekon%5`aq@Anv&xGe|W z(KG0qo)8aaD|4dvQeb%6?-!BTY|fqri|1()$r9$vcy;1VFkJ4hu9yj4ln!K_hQ-bi zQ1%c|&%FBv=N!!-}MPiyki6MRel!OzNw1lH>sUw9Q2R&P|kE@7Bmk$sn04pEvP)<=%pn2 zzMe>uvVf2C(HLs5I8Alg3>!|n$r~EzuOIZRJAr#L-nSQPlVu!Yi#Pb~oDIEKMFX5$cd}YA5B!tDcrwy=T=# zJ4!dLv9U$@nKEgD#R1F#JjP+s*9nTza(J$B=a(BziGR^!yD&9OW-{fd4XeEzaf8?_^LQw(2BLNiiRW4Ws9e@ZC*P|x6p5gvJ-zY zxOe80wjTjlW-MOZBts?Hf3HKZ)L=a?E8{K4BM>F%bHD%1EP-&C9iqFTJ9Q21!pwZ< zL~NGNlx)pij}kA!XY{sd+P5@~UfDBPPW#gc2bbc)_V z&o;(HhOt+39;Qun-?juGQ=C7HItDaA>(9B1dhDN9_&|Q4T9euS0ph7T|c$ zr->fqaKg+Zz)G})=-Ee~Ev`|c98ksu4J_ICJquA?p8@6~-mwk9{4|BQs1^VRQ3q1; zz_3k7(llha*irsba53iQ?x_bakXjoT2}LdG?KA%VdBsCXYq0>~!{h1XDJDe|Z^JY4lV^+o8fu`3 z72QN^Y@p?*cn_Pc9Aagr)Ti)e-Nd|{4}~dyRO=h#%y>Mp zTiDf5`D`f#7fW$Wt`4||FV@=%9r+h2`KHR-KVLg1OX| zDxaMX9CN7*iCq2!fmM4@RX;Gz1TQTdpwtB%JP%Y{1vsd=AX*h)@@EFdemn{Zn?G`1 zZy$4p!oqWgIr>RX$6OMhH|t2tb?M@=j(#m0(yGUUEG`{Qf-j*Z{{=F7$^MMIS`&$G z^(VhS&UtzVF)Iwo`US=`A5&;^6laL)Bp56mF4Xm)Aa>oUvh z+>6b!(|Q@!EdEcUUjoINUQzfZ!#hpeh3(!5Te#F0oBZkcM{`d>sDevmI5DBGZWe4z z@+}JGBrdRqt+udCPv+%^T@tUzc>KJxjP>kZHp^=(~`w`pEM*h zxeW6unwwrF_14(Nu37e)ql_hHMU6G5So(dTa1Lv`ZfF#;+rJS;!6nwBVqZ1&3lxuz z@x@BQOM$e4mXuh6@_dB!lB7c*RuVT4a2;{;ulal`WSX{KobCqy$ExhQ#sl<@8xsjd zChX)U8Vf%BE*FKh^jG3*Y9SKVnJ+eExcs|J@*B3(!!y2}N;;!d&hNAXxi~BsN&OY+ zjip8^7VMh@IuAUbiWRhKhauoF?}JJHDxtjiT`Gs^V~lP6%EfZb;cF+QNHff$Kln6k z)b+oN)5RzrpBw?K&xPv6n)VdfAw2H}V`YD3{}yR3HVm`55dQh{wQe^ALr%0Ykni|Q z*y)gz-`iHBY8Lypc#%mO)z`4gb(|C96l?k1zt5}G*xHTi-Y=e}XzHtH`rTqaPwhWH z?^{;E4w6G=aCr=?PNyFg{yAO`wDJXi;UXa3@# zd|MUyj!nU4I_@NKd^z=7SxGw2+g_&tBPyps9j|=xS#F^;)=i>GFy9S{U7*7fOPPBP zj5*tyv;I;ivAbM81M;?;KBEb-{=nW{&x_e%(s7TM!?j}G^X9km}-D71og%Al0ct{T&e97J%;o5L>05j zVd3}OeW*T{&86OeP&H6J0CT>~bCo}Z9XnAXt#RQR={?QIlamI~T+C1qn8-a+S>ww! z)ikYl7e^YEx4+&M`#{>>`$A7yD{XWDNvW(FC{L1DiR@R!yr|zEI8OLnCCY=|n~eF2 zzC0Y9rAG2$u%`I?^N71-v+r#DN+E^!^=u!e3+v?IqS%rawjAN*Xoy=aD_gPK@r+Dy zN)=G@8`*|7+X@<^2iy6LSZhsVTgF|LHi#g5T`v`!t=ev6F$01{Q&pua@?x2?YnyIE zo!M{RRO1T0?tAO0{jzpA8G#&?d^N$7hgzDsRF79wa@N>6oBsD0N%r~S51p(BZNCEx zPXqG>wW5Lllr1AOaHi%*Z>SC5F}+x@n z`)zFaT$Hzhwq3-%c~&$}wEnq!lB@9u2GGk;{)n%)S({0s7_ z`IOCNRrFdnRpmcKpUjCX=OZ+^{ZF7)^vjWN`|u{V=2{=jYh206D5e)xU$O{mHn|WH zcgO-%M!iHzKl7<_&wIXr!QHe?)a;|ISH;lO(ROGkaVM{}6rQ*l2%6wwe?b-RW~>jC zlNZEoz5PKauAWw=qQD%rZX59S8)J+>o}wfBSj@<0)}b~>YNd!n%b#LCyYx6MtkKcw zKp^{>No{#KR1}WQD@Ua6<3EagLp(h7y6sxy+&AfQWp-LWMf3iU51S=>IH)1M-_l@1mDmz{rcWm#Nsi`{)H~HH zPoD;}2%8;a>tWinsuRz1C2re(p7!ljGrSbo^8&&kZ6t&cRY3U7y>9;~l-TA_%bH{t z_eZH+6$#RJ*u5tidu6uk|*<7PuU4%8Q6A2^baCIpp}%M}?7b zAg65Px9Fr?Im5EiQC`G{B3^d2D8r5_Jmkr2C2z8}L5D%0GMQk6>ar#0l!iZozs}iA zfF(IE#*!SUspmecZuDxBQ-lEwO5jU~OMy+3Vvsa@0X9C#m#i+|BhFipqGFHk9eqkg zx#QswFHfwUZDZiZXo#qrd)LS!ioF1BBwIa4TocbMxgO89Z*Wn=Ig+Z%NvP|uJYGfH zP&ZA=`I_3}=`45M z;PeiDs*3^J&VpUH_rz&OflsZO*?4x=q+6?|LY)bN?AjUiCeuN}Ot;%ts9LV8Yh8XF zuH^3S7eppI9@m}D$u}OK7{1oel61lI_>d5+p;%AU9$NexeMQ&33mfC^%FZSaT0+Vn zYW{;c5x>lt|5(0CKXoN>tm3d8q`=4wPbrx(e`)&3Bf<@}&!3yPT^ai=<}wTi7bkxC zIV)StGKh>u+I!kJ_2+CgKQZq6EZIz2ha&+3hk+{?SU@*vfIe9#bGB8;+?>qL48(g{ z@pG(~o8^ByWSxxt?5Z?2__*U0DClev*gBF2v~6S~2!aJF&AYZO+@jL}b+70a4g1>h z)~TJp(_#?ba7u&&1cJ0-jDLJlT!dt^q0z}%{gP%J1-^?$Ill^O_Uy$IwTA-!#i73H zIv~;=Ah3$cl~e14bL~Rsxg01;Ko-vGXOC1;2g7CB2jS#}vPf$C_nFKeob^j6Hh#Ab zOG>vOA!;C?GnYnGz(#%$MZs8C0mZ)cLEoKr^F|=u9#f)0`~#VF!rzlp9h1YR zuyzokBnEV7gwNsFvnxPyQLDL9BjsVCeed8ebhPra5m+u(2(e>P-}$$^yBzVLf&FlY zZF5-EVHqj^YXt)8@PUX^i#?wC0Ydhg-*O#|d)RY0BKPnx?sJ6pIJ4INN4#Pc5XsvC z^5<}W81?-T7U2KtTQCH;zU2WowCE6HZEWoH^bFp=e}8arKmf$vrR7^EV1k=iaNz0` zBnE{-;hYs*#!AV^+S%DFFRy%keG3f@1riXowRI#WCRJBgHZ?WE?W;)=P9r0OtgI{t z2fKM79US5sMI-VL2mk_!;2PG@&;T67>gyZ$w}0Z|;tFT6Mv;iRx;k?53-fcbCNZfP zXy}Yg&GYjMpPn9ukccpW*dzo*(&Ccb{DMGCY<_M|INelV2nB<64i?8>U(eyN)6K~N zI}7hT8W9|k${kL+dA*GbhMqGR!1<_KQQ6$)6FV(CxFhwakuYt!an;QxBckpyF zwMui!O7n-nEiPUbY!y?_$=W2iwk0Sj%FRm$hsXGZMUAX{_n-E7v1Kvw39Lj=A zS70sp13aK$VCvVSiZW=Z?vPdBq_0#I0aElvhb z)`tot@5~S)0Q-uKUVYMUsF>BPgmVmpw~5lK}KpYvXSEf!~s!f z(aZ|NfK={qfzU+KfqvN3{pxXTUyuIw_mT*5`fp9ZT~>v07}32lFyQ>rcGJ;Hs533; zPZ`Q_glONxq6`vV=ST|i#BZy(&)Jzk*GD&Aytv=j&)R6}$-JX7&u=7!5?J&4+JIkB z1P0LyjjTnPzW|j(nO~Bzgf0U4l@6+?KiF86)f`yK&6rlQiRHQ{q7ab6ik^}&5=Yjw z0kVUr=XxW=LS)jv3)>M908XrRGLwT*xOu7RCKX_uXz0Gb*P`>KB2h-iJGmv|M?*#X zK3M)fMxFdureJ`q_)=uepuV=xu*+8yA6B6$hXVE>C4Ju-;fD04@|57!f?7YN#o*P2 z2P(;9%>p-lqL_xJHcxS;CZ8Quq3rf+k4m?$4dIt{gEe7eZ81*&n4LUNwLdO(o-QFf zDi>X@yy`1?C@!7c)qqRzAECGMp%O3B<`#Bx33e6CDURdh6B^EYg`Lg7A5*KAg-0D0 zir1eL_cQ9er+DFEqJ~Q&3B6?1r`_G?dRv8Sh`r(6h&Gk0=bDfSjXt2G< zDFhFVmLX)mZ%6&>H*Y+Lej;;18zo3&s~t^BdwaDPUBN-)^ZeJ_8@ujrTpOX^HM$Lw zOM*o%_>>l2dWEE=h3A{!Y1PjQ{kd*mv17;a@a6qj^ja7)2Jmmo`FOdppZ0EH{p8)? zMRo%Lp_1>&M@K11zW~<$_I#HNwZQYCxqXTU4HcEhGBP0zNgm?dBjTYwnOduL5%X@;Ey&Ewf_iuSYseD z^4E!s$gI5QRMSHVGn5INilff?AZnDuHcrRJ=nJ6D(ORmBO}FSIYLb&<#TF(kBtv0m zu!8EpdSxjTL4rZqE1$GKrlTiS;{kZCroX0bNDB0DFC$!Kj6ksxX^?Cm&>~cG1hbMoFUco`73qIHZQ{iVmyZ`tsGeonCJP~|gf3^s zz=wI_Ul$p92$}C6dl+Tp6L4Ads<}MwSP4+UD}sMx^Xm=l#n%G~>>PYezsF56U@&rO zN}OaxPglR9%Ri6n`mdwdkMQiAzy!$M0h)pu{@lSn*~X6pse6MGZ-J={qqoS#tcm7hBC z+7wdqSnqusl?w9SMff8JZ0PAotwXUF=iROJ^wQHDI!YnPK2K?Y={Z>53{Q5M4aJ6?M+gAnDlNn4ca#zvlWvGwn#w?3od?2x}9={7=D zsa9ph;rntr_W9mSi-kFslkkwmO>M@v(8WQDy#c*hmsHi?B#h4eV8Y3I5OMUBn5 zm=B9FKjXC4yt(z_EFBzsR9QSd?N@5O%0KTHI_TVsWT#7Uh|Oo2=%$h_?2wl-7-L^R z-%^uZJKfjC73R0mvNXW%1O%)k<|YJfX@1`x^p)f-E=S+9{C9~i$=RtLkp;+2HFuX0 zC{WsASWC_)P@}~i+zF0NjTh(euLX$wRAlutRm;-IE!DV`sP~o#3-MBEDZk9a%djaa zs8(wa%uE_3cbhKq)?3M%&r6w!7_Gk&`w*|s_DlEUE36nlqQ7mr@A8!Pkqi+mR#${g zN=5UV-MO`6Op~+$+5oyKcifAx9;N2*YxA|4DMjOZht@guYEmu?TRHZDVz_JC~{GU>@YS$gP|4zVX^P^p4GLj zlt~=*Z4R(t?_`LTnST0wmod{ucQpIude&X`6-N`~TGfSuqRaL7vNZ%5->UweD_-QZ z>b0y-W<6IEbC)lkoW|`tup|>If-QAc$3?kDoSM)Tl=ne7bHEHn3~5_kx+UcKNi-!e z^0Re+21jQh{&e=a$0f_wHNpI|hC=q+Zq;e=2iWXKBmT%}(FVeASJ~f)PCp*#76Khk zz!>W5x=&$>PU76w%Yu_Eiw!gRB80*C`v2&R)9p>Se1mJgGRPYnuN!bqWjjoFI*nAj zU5o_AOzF`RF)poyj0khm_$!)5YCxeZ7-Q~Ve1Qi#zKE;jY>E;b(V?11Oi+8!`)X4$ zM~62J=rRk!J_60|eLt}_k@9njZyWP%>qwetaiZ(R~ z`Ru10A<++dQ;)i{cAkaEK1lL9@?V4cVS2Xy>*_J1QTB>{&=ZZuDo{WK@sWX9Cj$rh z4=0jLn)7wFf3l$)ry7K zxEI9Q7P`2Ce#*CK?)FExVQA`)vXR>;OanqTUpl;aja~Qbh}pZ8zNJG5M>wt(LM{}@ zDx7R8ZG&|x_2^lYIy=GNt&ATLfDPl+l<0m2hw9J6xFZ0acEPBfHab*6lZ{V$Q-&&o zcIwRDE_nZm8L%dt0QgGV#X8oBM!{k)<;-GVdE?>qQMAcmfWOwctSzagk+E!%bwK`v z^y9t6P=;=Xlc(B$l2FuOEQORe7-=-)sfOmc)?fgktP@K%A>Raw2D6-3bGe5hpOU_x zrw)r(>~Dtu%GIW`?b^WEI#bl)C<01MS_Ls+mkwuje3Rea{PN(C-9ruwJH?zjDRX3tVdFwJT+7mUAfRw#r6zJ9t ztws*#Qcj?7`wJfAR_j2h=3$iKrI1eXlRlW#?2d@LKIdZ{`n$81;MF5b7hliX6@usMCx!Nkg>Ns7*YoW2T*6KEOyk)>!h^PmWU9iJVbMQ5S*}?ek8QGdo(V zA44Sp)z*0wThKI!JiG+xN`!5^;3lHfZ0uZqUffWzw zV!4WmI~_Fqx5eCL(6* za^~CF>T7oRm=pJLoOB4xAd)53r8es`MLdAe zPvBx5B+=s`{jD>AcGH4|C<`mi_9E2C11%;P5}Y5R@QL4@BXc^B>zY(jhoI_cKIW}X zy5$&iutdV^PFOBs7r3kkxgFEEm#Qvbz&g=P_9#_V|2%1;#7&U1-dVIJvis&utg=t= z^F#;mJKonA;d|CPIJ^70dA`T0A;+68dFe8U;+JpPB|R8%GE^iBre19D zgYO!YAZ|oPUg?oM1p20^jQE|z^%hlmE(Qd$h)Rz(NoK-z%u4LPT7o;XIityFEjkbY zvXm0Biri}DrWue_!2(KQ_7xTSi-$Sc#ZNu6G!G&i0UnvSOBM<~Kzp6n3+}Ss@?Bo!$D_ z@lc#S%8IaHVuYlV!~syAR$;rcAWPFh|nP!I;N7S+S>_j|j0;|@PHkeOL1 zl%nKBNp(!A|EXr%fMAeGXlAr=C^L*(m>{4FG*@Y0-SA!q%*l1{ceYFqV$ovA0Gdmr z-q|ty14EEeGB_zDZae9qm%{JBkj|%=g%OVz73PZG*fxCO%lBh z7OjOcUy;jqOS9RIRbKiac;9)ltB`#)syhpRqR%GPM-)l5jnsZLZeHc!sP^8*aj=?@ zJp=4s1M^d|vx5y*6)k(c0Tue7QwEDohmT38^;e|a#HVPb(N2Lxbs}5EYD9IpXr4$? zrVGVdCw^#+v&I)B^_qnD%=#QiUQR~wH9m~IIt>A$(KH4AS{vm?Mp>RIPtjibEQ{m= z)~DhkD3Upf+^$t}WHTbCI{N3X*{?|Il2|^Z*Y536a_q9m9})z-obve3 z>Q-zpc`K?EVr4TrLdKMAX)m-^$9Oace z#+D)b{yQ#oBhX)l5`S4IyP0;z@>U^7YlX=9olQ{Zs>^CJcS?#(ggp3WL%-yqffr4U zctRm}5F(#;ooXiL)ZnTVW@cr6q+0|a1QSSq;Bs(_Gc?dN=ip(3VoO?(nlP36)>8N9 zQX_CY^`s@z42>oCael0^bA#W3QAJ9XMdr6oB=beRD`AZf&QgQ#V75r&9iOw16i9UeeEkf;PM3!j?dgW?r9JePh zaEeodm64{@mv96k{qtn%;q-C*1caCtpgOTRWen8sfwfu4_r)8< za*Q7mVl0ek%X9}J_ISung%V#l7^Vw}WdZmiehTt?Q+WNy1yhiY8gmC3G7R&xi~KC_ zsu1{JyNxBxSIydKT9=c62Za#VaJ1wC59ziA;ddUQ5yiZrckuy2O-;0H|0=bqO?^31 zW2rtgZDK7vKV)4=3!=VvP;KT$UX~kGINHFq(`pU#?9~p4SXqk| z5CeNTeXvvcvDHWs$48(=o6CVu*+mr1^p2TNQ_WNpom4-Ttvtt_v5|;Jq^v8#Q7^4C z`bYvlV_m1gzQdGM&w$%XNF_o7d6+0WNXfM=IgVAu3>o{7&eXT%D$z6HA3d7Z z>k%ju&_+emL4)^di(j>&Y&*$dPgrxBQ+YLVza#;OvJKdNxI)e%P1;C>BG6fVN~)MJh~to&`(v|qNhT1f&* zAob0%1o4NyK@BU5q9Ziu(8;ug-Asnm{c1g+(2~xf;Kr+}$V$MhKv+b&;f?;6v1bCTgkAYo<88M&vMOJ}2ZO+`qOir{y@k@I{O} zw6%OczeWlpt`n4gXxy@AY5G!0NcpG@?bHe}*1%`{7`;6JlFl1+yhSxC)6C(k`xB#a z1McUBs#c{)@`RJk@4|lI7q0mde96h=xs!+g2l=O#B4&e$5z?%iQFcYKXUb2H$Bj6G|Cg7 zhS4Hz;JDDo`hcMCsi|HQ((+g}JV_Shc@e0-fK2msPbhCUDR zg-$J7417cv3TqJgOxqiLG8D9ap0f8P@NDse&snqWm!MPeYUH!KU6EW0*w2&gwKMHf zxo9A>sbIxq7_U!`ttd}1oQ)RR925OjA_2WwO+TK!H&^!NJ$~c};Ip2RJ>6CO>%~ZP_|l#0j_}VfVaQTHPNv?wD5swOYvnZacJGb7UA18r z`&?|4`c7z3$aLqyd0kTZYsJog=UT}cwzgnc;ctuS_Y6yUlIUiv+W{lw|HdTooK_Ev zLXf!8*Z$K_MJ42L%jesFY)$wA8j|iVJZcCK2um#@r&-K>#4DkcpzwEjzB_GD+WEz{ z|L4DL?aq?B+LIaZC7`S8)+?dp{ki^4N$~y)h-WoapS!9bjeV-!o1FDMX5}id$ZZF@nGW*CUwRcOtHdf`>5wUmZr5M7HDjF4fKBL5+jcXkD zri`G)!gsxGD6{4V)kR|mPgTO;TeVH`f`b=UuAx~kS61&gb6%bxQXe&zdMg$c$r>t2 zHg}FUhv@I9`B7<}kM5v*JZ(NZM#1+D#nmQ?wyxY8Z`RG|Nw*cT$Tydv@1TN@ zP5o7??!t8yJMGff5g)jRtSX5p`d?2ag*NJjtQ`Hq$+e2s9f{dq#>3l3D1XRDQ`c7E z3S*d?IBSWJGFxcM%hVacY}EW^@SeEC#NyR0xu2--2UuA9#b*EOVaO=la&*z5#H!r$ z%4!*RjjW)b%M;x!{FM8d0iP+|>x5BeXfTFt;}z>d)`|CLXC2S6s|og(|B|!QkU3gj z=53HF*f{r3I4spjy)37RpTIhFhY1UMBy9zR!l)s|x(VHSZRMOMypbn=rl}H%xha%D zHrmi5N$(1dtaC+AzLBXOeB5!|8EugHp`R>OnaNv5ZJ zLDLE4{^`4=_1q)d7E-HioH{At?q9j6=7jqplP>DkT`L>w+z^q|2TyIOL<~n!af+P* z9RBiC_r!xM3bA}k zy!!^;^iVSFlJh>0epvmq^oExjF(g%{q&T6Pl;SQQFmtxh6RUC^iXM;ewi0{mMY6qd z)8M$dvUUF>y=lNzgWXFtmq0+7>52Qp&au%?|BI0wy6Q}-=EPu~jjSh8Uzwc>J~`=Q ziydeD@C-F{>GCU*^*%g>8%zR)z|K#Hx)dKf>&YaCj|=KFdo>axfU5hELc?~C225rZ zFXKp6ERkgFZB$nudW{LhINX?t?mUOULUnzuqWgLw`kdL+Y%UWzVH>*@vPR0Mf7po1 zV9Xf}JHgeU$>0ud`bGHYxTq*X%*?xkY2X#N5p~4$M$PGfNWS$v8_^NEv0RAd)P40A zW5553rzAKLb>sLpZb9|VdTN(~8Z`JmobDN>)_ZP0JIG{CRygXX?43-x@ys%FssHPl z=s})Yts{0s9;lzTN;HZ6!?YQH_aEMdEdxgr_=q`D>nf?yCnbTs^H1+*dn4~0hlz@P zMRh#mR|Zh35z3T?a?azeKRceb#s{p>pI|TJrvKJOttq8N)Sw#u_^MiGd|5XN`(Tk_ z*`M-3P5OHDqe75fPtVZLzDrC}tpSJdau$%Gx=7rxdphT(`B53f_ug?IQ-}|n9d>On z>SXh~Ns}*qpC?M?%61GI_u5jxTaziF;=g!CFnvWhwSHC8aI+xR)7k z4b6XetDpMl8|f(SbV#ol<4)+AT`rj7?z^sZh%D$?KOUm1(zpFtwp1DxVN*P8Nk!A36EbCNJC91_X6b|;{BTK**_Fmk0%bG@P{QF6ywFk&@P_=0>bmm*@e|4D$o z%9G`t9_BIL@FH6&M537I5^K<`bXov^_Z;Bl0$7M|m2B^}1LIuH#Qnlgoi5@xqpkJE6YGywBu&nS4`q8G}h>9l`|Z|v|0k+Hju zFCHJ@lpE#+C0eZz>YUW!5+*{{deI_Eo}S0Idx?AK*yILk%IPS~f)t^9Gd>hR{RpBp z6)DI)YnY8xeK=899k4dIuGpZT8l@-&Q2I)l{vkfwBy+m-mJVd9EOa+Zbx75A&QUZj zf5F#|RiNByp#I1hS9#KxP+OKGKJ860QNSQtktXgEp)lN0+UJ#wu9^&5=_)$-GRg)Q zOvxwBaq3-WX^*HujX5|S2{`eD!)xj#Hay_*YL;sanwL`8JMRKlGmaoh(zpl;fTYHH z`Z-K#6uqqKmHEnCk`IX~sd~6GX^E*QomlpdLg&F9*_ zs8FrWGNrH6c)Vhpz09?et8C&4?9>6WW)vf>a4XGAODeJE2oa05a(mQgAdIL;9vZ+U4Dsk833ibS1XK{>@a>-70((jgLu7vZhb@s&Y@yN8vQS&*h-DNUE4LB70gTJMiU-GM+Rkz|#1r1ajv z+OiuZ4dHyU55o^~5fry#s1srEPT+i8Gd%53bW51=@CH8H?lt5?2~&2Gi#7^mS-2% zx>iK6uB8+i0chr1Sv*#2)})uvyqtOQx8GV}nKJ7QdDY|;u$18pmMCT?L8;cQ_<%Y>&UC!NSN)MS zK(}WKiBLNIsDZEM)_0~954Eb$-;LUT<1KY%Zr8PpHOw)dC}P8C}unMWj%Up8;cVI)T+mrwL2 zo2T{NW(!^>lh~xM_?S8~XkaHu(WIN8s>TJo6z3e~PBqAo3#~vxWp;N7RCI|OM+QzM zID=2PuY;O)p7|v-b%$`UJb(s2kaE6u-2^FSePHh5?Yaw*WD;jiP-zCL7GWTP z$$rOrRhaf3_0}ade?3f^pf-lCj+IXf!^%93#GD1S^(DIiV>Jh48*8JKCbJRv#5;Ij zzk^pd7%6+*wG-_>)qI=s$s&5bqNcx+jbAh4;+x(fV8_59z!0l5dnFo|O=mQzBj;!G zjN835{OrtU8cm#l6@;}z-#a8rx%u4I_?Jx2o$!!TT#Q0$s(u$Wc&AIBAW#(XV_H8( z&dO!g_GYg_sQ!opLw?yIvqydxTOLK+l}R6<7Bgtcb*|n*p0fgvI5bj=H@#+S(5g>G z9Y?w*Y8+6$n{vD%_Ak0P=mk=W-3}P!)h8Oyo*4BtF}tl?IGi!C>>Q<#69~0Q)u+a_ z;QL0txB6M1vv_neiaC9paEIkLE36b7LusQwX=@RA#}Eb8&=jP};1BW2NKT40Jjy1X z@KoE9EJ*q@L0_qV$(1ZNOThPmXg=#mbdx#zSSA6bkqc+#C_2+O33#Y72$K?jPoMa3 zB2QYyMx0EC8p%@p5~GeSJ(+D5GS)J)upmnw&Sx4zC3?cQFBME__1vtqO5Ju%Oi{_= zh(5OU5OdovFRRU!Hd{U(A^S*aTN^!zYw<~lscnm_@yr5`d0b=dVmQ2wcqs2Im<-W& zrKF!z@^>vtx|Eo>KN-{aaK~P(y&cSZ#=XPFAM^T2AD?Y zjFoiQf6SYciXphL@8kvb6sT|D8>*$&fRTWLAOH?XW z4jQJ+A{a(uH4Se$@!HC{HeqG-r9;DIN{yTyhx*2k369A=hrcc-=Cp7{C)8ma@choW zsr^hHX-TO2=}xqTHeGc&-X?e9TeDJfJ~Ow>USdrsF}HhjqDeNV&j965tJ75sCVbXE zDsp-&gjQw^<4GEj zqoM!dK2RgawV;_phNFzSs6SzPjdMLy_9bY7%#J51()x#|S~q)h5ud^?B=JCWF6QCv zdeeh!jjDs5aO0bajL}eL8|QsW^0|lVA27B?e3`i_Xii$Fb|up?k$z0w61wo7nnZLn zPf@y!0uV|5LXOoD-Ligtf)?LraAHt|BBi+Mw zwxxev`wESDuOJr6X=VZ$IXTJ0we6?$JJ!D8Ut+|%tJ|RxTZh=Z6tg5(PYk((i8qfx z9yNEz?D^d-HJFmWH$fxW{{RR<_rCw4jl!)RyZRz7-LIH1o9~7|GifZG$u_n8dch9^TN8%t%v>2FiOuMjPs<~5N^qvb`*?~0(w$+v!l`X}9nLn9lTOhB zrCVQBXX0T+R^Ew$*q$9#e!snIgLHF7dj0OFiZM7{divTks+Y5RhF2b?N_+G5dQFFp zsaDUnIc)=quh=F>*m#~7slgFB?;vwM6Dbw+ctv7%`&=r;Y_zV4Y1Mly>lI|CraY)Sh0yy(XK<3%~tAaR+cvs^4a{KaN;LZ%nyS zT=Z-ZRcE-`QzMr_d)sIJNS+K38EO?T>w*L^Qw>_Z_eCG?74a>s^kiceaqqODThAB& z-jx#o5&g{sh%>{)YOOpO8`jue{lA;fw}haOxSZ{oyq_2SKQ zSI($Qpd$~yJL&Em#g|yM`YdbqEZVeZ1-|V1v1q??Vo$RDnJ^*Mr4E-WocOQaRfhw| ziX1BcIG$INfya_n>-aI`$T;JIY^ZhPxp{dD)@vM;tx$|&^|Fm9u^?5=ElEm+`p|OM zlmD!4L|PP~sZ4p+fJy^PWIcjbt8z37&V* zR_;tUA6X>9!(Bb_*<@5xA!TS8ht(Mrk#rFiRvmEVxC0n|N2#YEi!G)F)PN3M#bAWE zRg_vkaRd@+$SRGSrokNv$q+RtCe}FwS)sHSpIi*f)Ar+EnpS^QXN9TzD zwbeHw^(fPd41R{!Ys`^0)J27jRnAgW$~h;Q^HmpEd}bI~zC_wbd!=`m zK?YG~+Li@o@CumpIjy&~)<@#F}Xw0j1D8-*ko|RP$sv zX-RG-iz~Rg?FHm=_Wg=sQzMDCl5jlnrI4E>Vdvyl3}yJllr25d`2u zpp69=!3Du7m90M&MNq*%Y9<}UnVw`Dlp0A_V>w=W_Akip;#Q<;EB!Xpr0_cbv@4cz zD!UP!zX>KER(HB*5krS^bPhg!tsFAYy*+xHK`%-5F+$}Kx7B^$pf>JgTT%zynjnqz zk+IJ8^NmLJaGjmOL5rYlnyy6_QMZ3|3uXAnd%J{v2s}<Th~V1$v9N8j>5@OIs(P6I_cqR+Aq{WiCVOywi@O2 zIn{p?&+!g9oo?BPs|nnI4l1tgP@TE`+Q8r76WEE1(VaY`AD>Lq{CAoESvOMeY^rT_ z9)qnW(t@Lx=P9fpG!n=+((x9D9BE~WN)BSkQ5g8)YGyS$U8u%0I>o6=V--0ESNs7V zW5H=BpuYzOz2!m&snBwq^{SI#q&k^u8%Wp!6{+AzQweF6-1>E)8>)pQADNx#AjBgdHK#2k za@GbBGNA0Fh#&$wR;K*Mk=toRL-yHALi|G#t`RF8@JNRt1GAW>EO8#!dtVUAxRxR{ zWq6w5AtaYKvkA_OCXT8{+b%f}shk5uTPfj2@?w)K@rOWLJK4nlrn8cIz=Ir!G^F{o z=(~A<5F%k3qa@9uKQYnBGWQdd01Gv$^ssS!iR(^k)>9#@afgj3tB9=BB^qQ2r5uMO z2Rz_`4^Xl0K`yzPhQw0BV49GLY}rgml9R)E%0!+Jq}lB@rN5{|M3i28k}-QoDI{{K zReT!^0}W|Ncr0;Jtig+is?!e#Au?acWam#9#1~oC%7>A((?A|%o7(}%Ro|$dAGf8r zxcqW)^I2X@xHX-lafKg+QQ9HJ*%^3@AW=IHjVEg_~1@IGE1fcHB?i(+z39Zml}dF&PK24%;$I+PJD#3LMQ2E z6#LoHe?3Kr64uOcgJ>y!U1mgwlIJ_&(@8!GNsg97)vQ*eFJ2i>N4Je<`DO%Vqh>@} za>J2~M^eMb%D6z80W1K&@ylE3FTNzBRGT?CGK4CMu=pL{N8+^{i%8UYVmT;xmjt_X zD0(qZ0gxSw@=r&mLy%W<4qu@Rj~Y71z?8BGQikW0US`oKww_JT&Ou%}_0}Ti8eswd#~JZXOl zG0I|0qG&4iIou54H80I)8Kw2ArIG@nsvh{c8%4B<%+#Qa-b~%VV#uC4-jehj(vrn^ zBuAc&U80QXkMoYiL2;>(tkQuGDo=ay>vIFgfs`QEn6D zo61EK#x0JPj%(~p+E!XqGuk0h2H5M&&2!QwQ?xB#r$2K7@=%yI$Tz}?NK2xaIbexb z;y^-blY9j*;A5R=bEH=U!&v9P66CX1WVJw^~1hc;R_QfU-WR>L|}r7DV5 z|5NBBYJVZAtp0gtS4cfXK_tm%EKgiK1pSd)BN@e=I15$Ckovd>jARCF$Pq)J1f!VF z$Q%({D4G=U&x*B&;#tdq@QksnPwmMI?8$|0_@32~5TnE#!t5Q`HCcW{2#ryV)|5sy zNti?JjR88;f$C0`JlvdD%MI73;*&s*ch^fHJ`{zFQgdj_bOhDxi6LS%kiApjkK)*BppLu?<8Z+FsyC**Hpi(8jwp z4oB^xX3Wdr!O?&;g!r`o(6Y^wUQ|c|i6a8Zg+%ZN;7L@A_1QC~Ly0sL@06HQL=i|7 zOAI}tpn(S>;)6?c#X*EgTma5fq1PC}$WjGG{zQg;rQVNJ#H*M_(y`*C_0|_fTXku~ zS3HVPOhgS;VdOwm(wtlw3WQ>q&r3OnbwtmPbP7^1U(8sYdUeGh?Z}_p#0kIz0BpcZ z2!H@=fC+4X090jFLghbHrBptpRc-)S{sUM7004+(S&AiCP9;^oL|R6G34jAjsF`i( zqKBx8l^BH7#LJhBVK*g_QP$XP=+CYsg|@6;R|qC8^$!D4qv=VQhdE2QmCCFkgjN+u zumFa1px}=6oP2=)$5W(+I}{I2kifrG0J%6L_x6(FSDVE^f)|ELD*_yZ*pg#r}?SUlA`@WYHG zU|@)t`kbOs-c|f15MAYxAnD}EQKxjEfNxO@g79H>K)?aSgeFE>IfY1}^_d|e58i#* z;jE58YRqC#1TNwSIx3Eir3W_U2zNYHcEnK3`CNf~h5R`kvfKm%yaNGvfCLZ#ger)H zx&wu-2ZI3rq)u|jtfc0Z^pS?VAM%Kq(s_?iIE_}s2v7iqZz9G!Os2N2)kBn>g4ITf zx{)0H(MWCy*ZqYAwc}oJghjYkOr*e$_UMm3XoPa&gjVRgq1Hllj9s!K;IZasn$eXk zMGp!Q;YBGa7G^x~gDeTAmmp(>L7s+MPJpo{KBNOtAmPkNl%iNmBlbx+AqJwdmj1Ly zIq-wN0m?tnDUbRnkX{Z8n#Yh9=>aN^pw8DoanM9P8qLrKUb5bh*$oDzWK%RzJwWQ# zTw9P4Qk!m#cOep#%?MJQh{m{w{t%DL6^mei1-hfIW~ne1pe$ZE96 zO`fX%&^Z*T#ITo{=qi%%NTBS^`Yo%kpw1OqmJW$TMZ}Cyd>B6P12uXCYD8JJ*b?l3 zM|8+YL<|ehFw}r>U8WMA`iPue!AWYM%KNO^YPRc-zH6dMY*h1P3ICe4xrQgk?ufH(zLY{eS+ zkbbmNH%&;o>C=%-)LktMU~nRhff+46o~n6U#EwMP)fG9=t%!wGc9=vT=45egO~Ew( zMFO$vK}-O)54&hil3kxko#7Ne&C5`z&MP@JzWQ3~*QqmJ4Af+&b z`eX*${sl&e6WXqnA4!wCfdxGHL&hOQu*68fpF zr0&qkrYsE*idD+q%vNAwp|*9N#I4Ct!s$tHsp7gVaB$kYU`UOggm03YZ*~nYaq6d4 zQ|OwlX|TxY&g*wd8qVI{qzG8b5Dki4nj9rzZXgDnXrgbqul9s2?C?Wok=v|-<+j@S|&dPH2A9Az{hJFxe+sn6oGiP}Hfr_Qw(_NcGICX?|Qi2Bw}0ZC4Hd1s<-< z_QcfxR7Ebai}NsQd^DGpA{kxT6-d|>NjM>O84D6Ag-4tkEeTcR;%o)Z7d7IG3}vy_ z{ckzYXJ?Su%J@S!!Vyqd01ktIJ{+)+t}O(Z=FG&%oE^~sTEz?P4J+nFRz%TCc*Hp{ zuSYgsPjrX*c$3R@B3M|dQ!J1l;nvvI_O9noiSLG(>e+qtO3ArHWHu1f*vL8#3N@#2d+10XRt2^43^j8Em606a zg>*TPZ7ko>KLh|uqwWv6Beft2t@va?v>L@0#kP{CqG;b=$X zbtB%5STN*!Xjb#R5a00Rchp7K`a|hqhTCqN_08Hm;u=D^16U3Jge@%;Kir%^*l{@! z01C)}_qqc({DT63FUz*=vw>Y79R-?=%Pby|)zJnxZS^(7OV0UpsW=3y#$8FJ4oAKN zLxP&utfR(Q#VG;__D~)o?NT#?#)eWPn~>H}nT{Rv=xBRy8=F9Cmj@rBZiO<|mF$b? zu6vE`xFP`-i)7+l|}|dbp#cbt?9e%pNWJ-EkT4rj1!T~;!Ecp^tcY>niVf? zC`9GgmSDEly%k1muV|CDg`@)lu!wOKDOCT?KxCX{$Y|V!jW5H-N0daNfUEe_%a{1d zv1Z#YR|r1u4V6^|!vaU-f`q}242eZYDr*bZSXU@Xk%{8}V%O}j7LDA>W@Dl$h;8g0%OYVN?dlF#MZjWMDfMEl&C@+2_r!f2aR(F&G&jF&`DJY7MGa* zb<$aV%IECoLyM%%RxYt5j@-osxH=$v+!8!=_72G~b4a*@Zm?3DN0s;Ss~PR*Ack>3 zXYUw>vdP^R33z_ccT@25ki{b_Qc=b59Ngo0*KeJ`K`UtJVx-<^u|_^KPm_^?2Tyh~hBJ_LA+% zvh*ygY_U&-qr(gxz2n_<3>2By0*00rhEE}<#DhO#g7Z&NR!$fNY_SpvT!)ni5nLr* ziA6;2z5$uG*ck$))zfMnNAN>hfnfE3!+C`ioPd%+Fc_DpS-8s04)3VG6F@8Jae44l zJ$UDSNC!)&iIW;l_HLW66J7*M+z4V>I&ShOGK97lDYOB|9w5medwO7fGCJxK!t|GBvv*5ew4T`!d-r`dOE;be&2T<=7*i%gTApE ztLVG(7Yk;p|V&n6|Rsd_L!Q{^kF@Z0h5$@2EbME$a)2 zg^-6|z`hNN=6z-A`NEzXA`H+o(+Sxb=&aa zQIAdC)-9{mti_FX+g9Zmm2Tg;ZUF;TDiCeXooo3vCJ5K))4d!W6Bg@ta%IhW&E_r1 z)v{lNhtJ+b0b(uB&287lmAo|KYP(fM%idgDBjLelv0cmLkD_w@DrWe5OHd-~|> zufzBMAHeS3`R*Nj1c+dR`|^uNJ@x{85W@Euj6sG4B2Yj90sdKFyLcFs&cO&p98o!& zY+%6!1tKuvKmj($AiEFu3z5YC8g10<9U2OFAOaT`5I{u}(9@5<8;v~DE(XBSAb|%c zaB+kV1kw;YcRXaUNF=q~(x3|jU{ZwxC@{f16MD?5 zpAI76&cij`{1eFqOejDB3MlvhoOBlWK)Vq7`3FlH0i6^=Z~`dc0}579;Dm2R5HdRr z&Ve+ZEGa$p!3+4I!2kd#c!7ct&fy0EDydUofqwdw6xCk2y8xdXIPhnKIu~#!od5vH z?m&0?>E|6@eVvxN3;f}Sg&O=p0M~lH2_b+`|2aX|XxXF|-D>#>fP-(+Nw$M}$Qj{0 z>@0X8f^wjhHr;-0J7)n&1N`~soO8fAryhLp!A^r04$xqPdHR9K--?wRV1N=Bz?kEI zFwX7*7+_$)0SEqhz~YpL6M_i};<(X|&8E1n60stZT1O)>C0RSuj00001 z0097i0000000064OaTBP`2+<70RI3i0040S@BkeFhmK}!o}QiDE>g+~FL@GKw`r6#T4k4CqbYWv; zRxUJNUR>|(?y?3HW_EM}5)8%`B=+v?x)vl}Zfpt;3_?;=>gMbY5)>vfG!h;hA|@m{ zK0HiHSP(Eo0tN^$3^)h~FzhN2xc63;-l$gfMjO<7>oWzu1Vic)a zs1`UJR!%%BEJP3xV5XG7vZAQAa8xud3s##JsGcjJOOqPGCGtK1duK6i7ZW z&K?X73J7*kkjkWtny{QY6dcN!&=e3LFgg(0_S~GtEC?7h5HM&+6dXXnfJibx_9{dw zFfbSfAi5T4E^st1GB99P)M9j)up%ThJUHa)>?SH8oT6-;uIP4dm{xQ^P&gE|bQBgKFeotYq`U+K7*HNaDjq~UI!Hb`IL6HE9vUD>A`I&4m>^)x zE*>cCHh?-NG!9@i>iX0=7?!0zxKwuWgARxdn3}hrIFfK44R#uQE z3>2K`tlY*t7#1`jV1PU}I2s-xGA=L}8VEi=4ip|9Bsw}Y1_lfo8YDJ0JSHX_ zIyyWeA|xs*EH*YYCMF~n78C#g00{p8{|OvOu%N+%2oow?$grWqhY%B@i%7Ae#fum- zYTU?C;XZ=-2&(v(;a>rQ@ZkMZxw50nmoQ_>oJp`BK>`HP*(|wIWy*m+S<)Ozw5U;- zHU;AJ_YYi8cp2XHd@3;I&x%)%YTe4Uqtt)t{;g{&cHOwBR>w`P%GRe)gjTI~olCcF z!wm4^Wr&xP0g^Odi zq38fZb;+Z#|Pfs`ABm4;)2K-rh#kRS#*UWOO`XW>7A6{g&UPsuhG zlXAi1TXQ$ISYmXE!ABjDU@B(TlOKxJ7w;PseZCGA|Q4+=;l`S?%W`zJ2I2 zUULU}N}+}uuC%0EfffI{7Gjx(sU?JQR++1fTvqAggrTO%WNC(m2NapUPN!Y1DE6l$ zi<0&?XpU-4`YD%GzPMPNg?6aqbGhm%9+cxm10wM{hq)`GG zE1g;OdT&~*np{>{EW+z!mCLcWY{qoy>ywQgGVE`aW4;^VjZ=;2YNAy&N@A!ItGW`5 z)G>V@&5y-KEU`4kLtHvoGs+~6tO%=Y;o`CqxG1|ItN>Ta>av=I_NB}PtI|@6B{_ezO&Eem)B>Zn}dEG zS3GkU%;Irxfva~>R`nx!JT~d16S4GpE~$Uz-Djac`82){I`ye^=A)zo29AbJr321B z{p^m8Sy;EG<q{A6$)(^H2G_wh1)r~`u-Je)sNs1KFs zqkX&ENALfhLb;TH!#8tVN#Ifl7zDoKeUF=*mHKfwv7nK( zlAj#0GYQEf3&Z0=vbrQhNTjJ3{V~Vu-~ZWHb2jOZDRi5 z2R|044hVh_EXc8vfHw9gFMiP_K3NCzVuMG_opC?!K!;VbcAP6Mkv>5K$2(Sez2W)I zhNyyvRL%&N2BqVF@W3B!@I|cfF;X4xh{t|5m=fX?(`rGn+S^QbNtqDlLIE5H7pXX? zbO`Qgg2LA*`5{Oq>GEE_d0i>@gTM}1^Bov`ky-Y!#`!U>aZIt&;uc9jVAgFV@o?i< z`gZ>n@wG3B+-v4WAk`0U@~c?BxnElP(Yp%j?t$YVPBndUzEz@AA3fY+M*Z=ZQL%4# zPT698`gOmEVl9%IoL~lHWhKyUNR~_)hdv4u$Sa*opelmZIux2Cm1r?7{KzQ9vSuYZ z=E`@<3FOpn$f(HaM?lgPpfCfNwTk5>lG)^tEbXTrG93(8Yr&~Yr1`l`Rz-8FwCFe6 zXEsR5C4-V26>M;a#*@PCAA*#ra`bb}GwK6#=!l|esA)vxwJ|JMJ8En`c&~R^Qmhz( zkTDPQvarbXosC1z4%HHm9iEhal1v8zHyFVBD6TN1^xHdL7SZwat#4R6Bw+v)N+JK| zXKnWy4l7mp!CS6TX^_nbf;=?So{$hZ=S=H9BBl?;#SoYS=~o;v3&C{sV}6QkoH~|^ zA7U|)eLra~e$c5(CYtSSq{?MNWeLQ8=p>jpg;5l{^rF>XVox%qC%!ia!A+ zV3;Dqz$T}P939{QA!wz?C9*z&ON-!wxetCQSZrxgW&*ER!3?hChiw#Mm3SIZ`p#yM zDcQ$2gj%B3Zt;D|W9T>G<}C6&h;{Z$AvmsBpAPmXB@CYF4pX8In-C^;AM_(>{RWu8 zVU%(DNyimii&s1@ZjDwV(9BHy5M4d)I6a==a^FEcBQoxtf|L_g%0oJL{k8w2!V@Zg zp%vTOHMS=^?VV3{j7N1aMU!t1iLmoJhREyKos1X8LJS3AEuf;3Tw zv(ie;i?f%iL@;rYGFAnGLBW0cad^Y$7&k3A(N=6}uQH8t07(@#HE~Icj>v(nqRM%l z*NEFdl_sh<|HhO)@oRb(Yf<30Z|pK?lhvtk-> zi0-PeBK4ug(^^U0D$Jrf%o0+JT5X3r)MPP-2Ne5FT-US#$2Z6+;j@9(j+0s321B~? z$HimCqe4?rKPXJG^zI$`C{4f>iDf5`P+JPLgLe<^fc99qDgXQe#Aj;0C zsn*1wcNR^Lis<#0hi#vloF76=_)hgb$xPDci0PG$fD))W;ykZK*JBRJt=kXAJu!vK z6lRy|g?E&U%QO`uD{Ha~PvG(8dT&-8zc$%c|g9`7y9L98kjf z3`B{d3>@lEA#%hP!^Q=&hy9~zO9ZGq#vQOY@YhL71x_a=dNUF@3AJ1+VNDjNE7}Jq z%TXHU!$xycUaGW1r@<}#5+(ld4Z>tm1T+rM$8Mq&Hg88_@32UWgFQjvQ2TZ}7)2lg z!BHpFH(i%Yj5Ix(!(at6C-Sx@M>jBvB^2!TO}+y=SSBdQ^+d=+b8_=n_5@^T1VYke zJn@$%z5yGu(9AL9kM^t=H#wZUnBmLkT98`MZf^2bxPk|IT6PP;a03h`dJjXFi zXQUr^R(x30J}_o#u7Yqsp+_Y0DWKCfu0}#Hay5)~FOvTgQDVUt{R3F6Lv1G&TNmd! zY8WK&Vogpm90P<=rj{KH^%S53g2O{afyjov7ZfukZ)zksh)89mBR8UjXLgiFST#!b zvpAddOh7hDR~RAVFh1KgQ#aRxn>Y|9RZ9aSO->d}iBcNnL1w`gSeOETYLs7X6GgQ| zWoVc_qrxazR7HVtJgXFAtE6m{mq6)Qfq#`knj|AEB#NsvDEk6GQUQb$Hz6!_EYl;7 zOLK;x7-Q^&Y?$_Goo9>z^bH-=6z+D6phPTa*EXQ`B>j*989)FAzz-X_kt3iF4WNR6 zl^h`DLU7WE2qcO$CsWARSPVEyP9aU6WrL!XA4G{Y_tRNksZ2AXMl2FO@3 zf+5yJos}2-e09KPc_2KHmgLNS~JJtWsTLh&fxsY$(s zCT7`p5@aZ-HHP0&rF%X7UUKV12Z3C8ag*+Rl9Ov^FAH+|1_IzdNYwB}x=QA}h)`W`(G}xIKS28B* z*AE78T|mY{p=cq#rF;R$Znh*u|CW3P`dZ?_Qt+8eb~;l@#X;+%L#43~ktBi)#V=sd ztO$f!YC&fAB6H%yLi;9hl`2pa6=n4UMO36v%?cKElvXTJh0>>8jpG~n@Q7~q74V>d zbEQfTA{e42OYtR5$Qn3f(KbvnKq3Ys;+0qn^rUyRbK`f58vh%EheE@rVqJ+W}j(La7WRz~E zC^uiDhDq`%Krt59^r^7+VZ(zd22*jHF|i2;FV`X#9QtYK+DL|!=}um^?1vtyWJtPTi_;YMGAl9RiIadk6b*7ci!6-W$)W)`~-1FJfS zHznuhYPCoi1!NXBg^KxQWMnNZHfYPwcv}ou_ zHtyA2|0q2CkRO<700#e%4+fwQ{9pjP^9_sh4d0*+BLJNK6P4K$7yhtH>M?&X znD29p0U0=+mzY$Pf{(d@Q9_=eI3lI9SdFwrMA~`H8n5yyKn8?a7{q&du}OlLl{pl8 zs|9fMaX?pdFAriTXa{X10zp-{atoV$La=NWqd6qSH$x)L6~r< zIyRz9IXB2C`;Y+*;F0;@o9bWyENK84&_0kk0wX{G=wJZonqe33IvZx024H_VqjgM@hHPSb0+%D(VIR+tud3X5fB{ID z=rQ%SMZbtKTsA5@$T#INSBT*`R`X7(vt4M1nC#2+enRy5){$|Cz>-Rb|lUh+<+vKPhaCC8j@`yEpEwiO?lyarva`- z1Hz&w#|Qt*4-pkbH1ZGm&^F5BUPy8vXw-ETtt|WmloTYQr5rI>_FL(oJV3-kS3zac zgi+YmC>8WZu&M}rendV277tX1Y6?{2|kSJxFp%cP<&I9q5yoQW2b2F%_ zd}>4=L#B{Hq=UEfixpHvTN4irG%97$uPL3%%z-{1u{(Ecm1zZP3m6;C2!9c!NZ*_k zv0<>=azGn|Ov*xKT&hCvb2))zUV|h8#1Y@1Yf>TA1C=s$hn%AmwkYRe5N{B7iD)%VV^$;YJ;z zIJ*C%6Xf*GjtRQeYo@Ba#YZ$sG{;}V5j6AbWUb~CDTv1esJvZ=685H^Qut!zv^H%s zWRR3!^+7rQqopbg7=Z*21o~{Qv@}mN+QuqV#2rBTsnX$c5W^*T`;r*Yb8{TRhMMRx zm!dZ7xnIB~bc&L0@Ih9mFS(qwK|wiT^`pgyS3%1pfLJ3Z zgScA9MV^I;2bP8jDJZ{KhyyNhdG@y=lN{GoL2#&4En~f~l1>dKBgTV@D=mtlnHQ7` z#zS*p{Mlc1_*9HSb1~vAeD!a5qc&<3c14xt$dxnJg-8DYy7RL+$@5N+6NeDoJ^%mg zFtTTFh)7hv!?K&DEYtaBm*Yx!b3JuFwLXH>7g9T5fo{SBLOt%*v>JJ&yGzYWCCFn-Svqj4>Ae`F(`E|J4^{zok4ZU|!k1KIe6^H3^V=PwWJ8PNd*T0j9FrkS zcz)<0v46cJvs2zA!ZUCH zGL#|X z#su`pW^$jhq{Sa{?R*8lB9~TY!{e~S=_Y1G#m8GmW4l*HqA}YX_2`Zz%|iR3Q~*RA ziK6mEcy9zjz^G>^@9oB*(>#V2hf!r&IeZ+BWt=-%CDI$EDO7$u+P!?6^F!!kSi6amc|cC#E4Im%eInQ6mDPQaA(<>)`$S2XA1! zbl?QW^Jh@tx`zh;jgvTTT)}h(2d?X5z5~Nwv z=1rVAb?)TZlV(MD99^nI*KglDg77RZ6*w-V#exHsrlVSQ96E3{gRV;lap^^)6mM!I z8+9DGcWA*W9GLXqx^ZxouJb1_sZxnj+m6&L&|o@$7T5jjN->^Hsd3loYgtrX#+g1P zPo`Wss#J&$A)?Kf0bEeS>)tga`%a%mf9b}>1K00eyu&|b{!{<=52n6!|N0Gvr|$Gv zsj3sh_IG%8Te+9h9S+)%t3;D!`TjHrPIWwuu*U^9=M}=g5}TueYoe zyGDrI^}X9?QXja(>^=BS zLP)XarbSFhh(muHGt0Cc94banS!bsgo&15tBrbtCMO%tSm$m z#mU8)wwsN~k&wi0wLi<8b5!;IYO%VQlHw}2+<0TLAbm(%Oh)mD#7k49E-KI;q{jIz z(Y=r~jLYHz<1Q~gyE@6l0xk7P#0pOn^`_Mff~r$ev!%?V6tgSODYmMM(X{(6!w)nN zks_C^Xd%)qyno&qY@)a_ni9LW2Ft3rc;0fTAugM$(O0qbyv(P$3QVydgvykPCKm_G zY+7wAo-nBTqT+3weVkKAR&eI~C)UeSgQuac?37U--O>tnqO9U2OsS491h&bCw@Omc z9RWj8%=P$VD5MYPvXEMgP+CVJOr5p(>C5=a6)yj({-UV3kXarLXS0^}6QWq<#d$Ve z+rqCWy>#5P(kCgNOeya|BHExBkN&C2l)*F@YQFEj%PCZ?z6&K7`_WCzK%4W5N|lH# z*e0=vB&awhArC6Ix$-qJo>*J#b4;F^tl|)!(mb8+yJBnQ+72NESqxdG zG-X`tGZ*jT6T5f%u~#dFFsdr$d3E#>=CmMWx+IU_bPMg@t;V)(JGpxYGK2Mg{d=^x zOt%t9PH4MVOs z6NfYlHZu&-2NQTh0gi(uE;&k-P8LDHOfW5&<5Pqr$fY4($|T;2*Ul)^DQxu)R7EOR zyqxpChlS871-sy0(!>vbVCXF&EIuXi@7CCh?5yA;M55bULm}M7&Bm{|oI?M2O zG$}kW>pcSMh@Fhmk~-oEXK9;UjZps?M?3YaPP{UWX&kg1*klAZgYrsoQX*K`{rO7D7or-$EtQxCbq1$qI_X$+^IA#Tqwu3{6#-0)v;#Mp@BQ)X zp($Bl(^41`_jQ^<41oTEGh^CTVX+HJY$R2u-mMNXUr7;N0r!>?nbuQ2B(L0xBNlKp z<|VWwO+kJN8~PY=WMm88OZs8XlCWko64q~Lv8YaM=CGYFR2;wnd8@lYF<5xCNpP&^Xp`UtZJDF-Yk{pBptjJ@T$e>%H3G0F^eqK zELKYGU!4Ns!BmYSOSMRhg{eNnGz-GI)QC~=1lc{%)v5BXy_Nj_z&B~ zRp;fd22!Zhl|uiEhFpSmB0D}NrO=fdVAuH6;kJNTRexy=OtN$`x?UzO?=j6d=)*&G z81dmc-gjJo%@*7)d(lWu;gfO#xV%_fB>_fpvQqjxNF50-Oc2FEul@tRokYz)O2NS6pCt#Z2@SB{MDQhZAXy-=Tl>4cPkb_1*MQd zN!5` z21AX8d5a>OuHnKPcgvF*guiU!ji{nO$r!j3IWUU?J~R_5rEr<}3W_*ej!LsIdb2Aa z8z}#!K!<#I3^Kbx)YGWlhzE7hrYS@y0ip{p!NN;fuJ@t6<%>UE`z+0f4TQT0=GYGG zGab-r4kHwy=U9A_Ij zkavQth6|lSfj*~^Lrom6>{*Qi%%T&)H-8zFuL}1}6PBW8CF)+W$#Tz-Mh5?#l(jYM5E81HcV~P!`psIZVkZ2RezMHoW z{1=wW3Y9oP;2Jo|IEw};J_)ju2ssNi`8;rZ8@8biPwXp#Ba3-?pEF5}+~}v>F`54g zX*@jYu{B$^Tqzc}bG+=>2Rkz~W4g#VEGEFvn0P$M9O09BS*HTolAYklnc0qrTOQxh z4oDf8Lh&V|`?8FK#QR#v7D2R#wp_jv0%*zq7ILs!O1dWAD3=w&*7`nFiIjj=V2YzrI0I5p@HBUw9 z7V5c5NGcH#>IX4-kD^M##=|3ku~hfDSWH40RC&oQl9q(Jb6S zXRE(Hi!z5GP<2x-iE4}f@RBO+l%`3XJ8Hq>bkH(`yjf(@J;^5Ja8duP)CmB5qM#_A z&~ggZR4|9wo~49M%#qV;e7^HZswhLqci>Nhs1JYOhZ1>*Z|Eg6MHt2cPRlUErdZ11 z5ucFY#0n{nh$NswYZemR2%r(hC)pI3Gbj+!(b(~a5!elIfJ1{@R0Z0Q7YsdX+Bq+I z4vz8;nTkIjX%@7MvN0z!pN>a$~Plq!4Y9HA?vn_nMuW> z32@kldZ~~IbJS+t7KYU^j>M?4po(BxDy4O)G1Wl208B^V1y4@Ig=7>j)ah&Tya|H3s{8RRaBI3!1sGf>4u?u=g+DY4{3gLC{QWR!a>YqitD{X%h1}a=Wrk#;Pu8#5gJOt%8-+wdoM)}V? z+*}I7j5C!g`IJVp)MbO@-S`XZ`O3*Lm)L<^s;|$hHdkyYWve_%nVp=QDcphL z7o)2v;1**uMROxu6RL$}zvmazXYrjMOwZy=(8$_*?S_s_MjTiQ;X^n|gQl;YL^oBY z@B5g)`^h&brFF)_$}#cU+e?@6@wywf9^wt@!`lzKi96}Yr9LDZHsIj)oevtNB&+T%*4QPP@? zU`m?e@-4Ba;{7xP?yK`8VpeXcLaQlYYnRU!Zj>gH8f7T_^`+6AD^Cc|=12N-!!}-E zGgV>WF3n12CxFh4dO`s&p_>;GLzpFoQruFYdQl17Sl>(ASeMzJpK1YbYo4RV| z?ab@;Ejy*A(Y&#IwW|C&kbbZmg4&yLe0V>kFxouLXBv)I^9S(IK+zL2l?{gb_Q-f_ z9AecE)|rpR;WWgs&_#6er+MN$lkrQlu#%K#S8X=-fB<{(n&FH&#pTP-76KoI(+Zt; z#C`?Z_vEnIFV9!m1|KIT9Gh%p_NQ#Wqbpe%SPpb-kD%l4A|N{8bBkQ) zh_l-ZH3DS*8iVUHL(sSQ1;m=V98%e@SQby^~=tyy^dlk?*wge31DSQF;x2U-8t=xUL%n_x85!?=&Jf zoptTQ%Y|ek=VSAKTu@oNe_LDE@L0{66gyj?{E63&$Zt?ogE>S47B9pPKcLC&Zs*02 z6kS}VtbS!^x##ZI5av#G`B%O3AM|XclFH9S$LHo1$Rh1W=in_lR}98pSoRK{-a!Nd zlpQz$Xwg$!YWu|tb zHRc(0k@J5$sv^Ixn7X#5PS=7|vycxSOSU=O(!Orw>G=`K&p!r5)aVh()+uSz^9%jg zAE7&`nj5)9;XSXVF@!O3Q7n32uVH$Guqe`%eEw+Q$$9&fasbn8v*+t35Bj!rF0K^twI2 z=>r9PNRx3liRIQwQbN;6WUHXfpbU3=Q|dj%EkyQ3d_Jp-G>Py~s+i^=#543AEaFu- z+mFIjxb5wMOw$D6M@m`jzH@-VzRo4=eR4fS)hivr4o3{#XsowjHE74N)ClS+^(; zUHvzse!DCC=NgS@m^bM|j5CrP2V^tO=Lt9kC8VAumh%SthDB7ffE(*O2h=!5S4t$I8nc{iLy zO0M)*-N0VvEe%b2TnK5gYRJhV`~IGBKbZb(XltEFR`R*^@iq&% zaU-zR7xsJW9M9myu!H68lUVoj?Gdrlrnx)HwBAf2yGT)LlMY6C^_2IupKA;^-RbN727MS z3@7;@gWFd!FF2@-O|BZ2O?19S{$}>7`k-oJ>Acffq-0Q-Tq$qv^6Zoev7m&Q+fl@rY`?v93S2NZcF##q|98Gb48~inA$F4& z&YgFQWO#73O?xn+_s3^^;Sxf=aA=y~BIo|qG*0!D$@AC0H_I9{iwVU_)dzJh>i6*+ z-_xZl;^y8FmoJl;qfiH1)t~DJ%w-)3&}_s+n)6Nr?5@|!aZYF5L4(0L&@1`a#+lSq zxz5DOn;x%rQArH%o)T1jQAuQSGMki}0~^erliuEMb1t`D@Zc>gcIjMiJ0v~HOW|_P zp>N5fX(!4JT$yN!cCJ#U%F6tcXra%Y9qftQl^327W)+A zmVm=jIUHfUba2hPsrsHEhIZE=`6jJvU6WXB)7lG{TyCRE4sbq_zlPA=#pKhCv9Bbf ztZ8dfqx4Uumsf4;cBa2X_2o6+QgZ)C_eH9?pzKAGx%{ZfnE0!x@&ogMh2%i~0*&li zZxgmqZ*vRCLalfrew+j#QM#>j&JjA9ylZd$?Q$i8gQ1*_3NZpy;?rEqAk)kz>-z-1)=j zH7_n@tXshQ{Y-ZAUv*@^l4HU5UMIW&(h0qO(gH|Ml^;bYw$GC=tz=I1>#VRXoG&p% zL6;;9e|)uN>}p9K%2Ztl{LA#()vNHOu-@ca?UE##1862)!5HryFh9o%TDbd&v$kgK z)nin@w1)b%LJO;YT6Xa--_fU9ca@abckJ9xp=w3X(RK35xspuH65m@`8LR_)|x=%>)-iTI;aF}Tg1uH{q8ZyT$eAySm zS~c<)lirs%Q}bnKMlY7DUWZZol2gc}U$#mj1qL=ac!{Gi$%|i)#+B<;ehpq7E=PBE zIe1>FF;*(`)g*r28rhzdK^6XMXXz!#6I^7O=GJ1Dc9WENk)Ldo-D>X~JIx75bvB@G zR)9+qj9kqw)mGC{R#KOXcAn2i?imLx8sPGe%gvO<0d4%L`h#i65}axil-V+sW}(y? zECFxvVs;d5IU46xvy4ogh`;7mQ`C^`XS2pu+GpoU%+RaouJ;fdzNAGgKx*w2z&rAQmv3^{s4DA;<5u(E}l1mt!bj_^@e4bX?1lU}B>gL6jDJn7ab10pb|KhZ%3E zK?}GHZ2n)+Oj~@ZT9U+W~;F8;?wUd*;RD zp=4NiR__J!TsKhxa7!d@WWp2o`C%7zwdGp?<&r7QK(AUJ7j!`di}DotfMG%V=bdQ* zHBmOtUe!c{gt~Otr6R4% zc6@qjvU3{qAy&TP-Gh(#yV3ru=E6@S_Rb4_F2;MgKHYVZn7F$9U+%)hz}z#HEe28- ztmvV6V%RU3(x^=f4v?h&&_jL_?+KOwmX0YE%t9rdNtcwC4bUOBop2@AbDD?cT*NjT zYU5AWvWG4^PTt>^h>}a4O4@R%5oC3=qHjtAwn)Q$Uw2ErVA1lDFnNNt9>1zX!IUl4 zcX(MPlb(GOpoD0-USI2HadkDPg;0kdKw6I3s)$Lycs=cMG}UTMy^JAu){6CZ*zmH4 zS60thxBYjL3m4_#c7N~RcCdWQDORmW_TbGZX-V zBdxK)rXw@wET4$rkoMn9p8p#&9>1N{&vS*{rSL>JR)%x35uQ6d-=?!+dtx+Fz2Kn> zl(oA%Vh(%d8(a5x+LWVf>J|F+G+tGC=lRJ=`u_Z2znI`)mvp)~dwW*zB zY)6>C7{%8Z4o1TpaBSAN(?EJwZQ9;6BYHpG%Z+UQGyQQ%-JEd5p`-4@1h)MARod3g zFxo>I`Flpqi3Dk#Lc3i;^9x(0W8%zS;V&B>FudSmg1v>Q{ptVIP8&p0;tS0+bEEpR z$jX1XAbl6bl}3n`adSOms*`D#rvJjXN(lw?CG}E-zV%~K!Mn#HLVDdT@pszu_CWv_ z3i|fQQGXJv6-BLfYUA_mvB!IBw?38KA6kFW)#697-p6Y=L{oafMn+PZ&HCmBuo8XI zHk9uP@o%Hb31g30eSiX^uL&Rb_(eG&&)6R>`~klIx`Eo!vH#@ zoCv%_1lS=VV<8QT&u$+#ARy+cBDE4vfH|r3gr+4#;w-{cOh@6<_M?;g5ZQQ|rJZ%V z{4wd;;h#WwB$D0*ZIua++56J?{R$S&F@=urz=vj7OS=Y}e*%iio0mbj7-MOU=<3p_ zs}7KWaVIcXvHtTNsRwD^Z!epGQih@HF%Z1mv@!i+!!ziJT-n#jk)3C!jHQ`Xyln*n zF9jT&5dlR7H2TpA_6#@SWG_TPemmI&1+6}b8p-KHwy&`t~vgq~W! z-`J21Xu#{s@LZBg-s)?89-(P#CUWDV&C_N!A$Z2Kv!5xRoHZ=Q!cH2%YF5CS89-+x z#nMNcTuJ?SZhaCGkKCs@-Lz@x(_}e@+*b6GzTQys4$S_YxG|Y{7CvnHmht)1AL&e857a?89LU2Rw zQr+dEDtc(LX$G?N$%`SfB-=>HqR#7T|&`+>)*R^l9fI#3_cc%Jc2FPFEM}lUDpcxUxNww58hFJ!_DzhG0ke&~!J=VpX zW7tKT-!!^YEZM%x-hkc?F%{`OR!OYA@b0%#kt!1Zi4eLd@vXPPQ zg2-r90ryckOD=^|3OM7cuS`wo+J-}_b1V*-Us`gl*QDbmriZshXzDnm*7i*a9wUq) zw^k#PfZjVP&F2@O`;(5g8^M{%*w^K3_k7$!=2d4K_2Mb@%D=;9yH4e&6nY|~K))BT z{3N<>V>=}%1&+vZp4lad*vMo1`vk7jpdt82wQmPcu6FHutvU>*rqMa7sW$64f2e6a zQ~CibNXn#yP%T?dq3L2#i1m4iFg_;;VfNXa@HfTT=h_wb`?zuOEHQRdLXV1~=rlLJ zG3L5c(0&}Fhz38aWl-5y%gp#wKgL`c$Ky{}K0=co?Ian;6ZI$Gof?w$_!S6e4n9t~ zpn+cg+_aJUG(OotHbkqXMp~quOSZ&?8?o&CwK%^N&HVR$qB$g)$QhV)h~pSNyv0YL z`@-Sth;f_Ch|@{+zZnM^>ukyueZw@YVBeXvc8)0?h|o)gT?mu8ms-xB4fBv~I&|DR zo7A`%Ry6k!;R^NSV-DTrB)_WhG?2|4?4?NqzyCR=EZF=-)}cD{NJcABy4^;!8-aCd zdhR)HrP~JHmDcuDg4w(0DPu0ya=^q|GD$1Xx6WPDSuumbMax?^?BW3`4Hq0{O-G$t zPw|5|4{9y84jl=d(F1e$J{=&*C=>RN#5}aLMQ1F7Q8F4Am^DO4YiPLf5O|CST+c4P z-=^3c;+`fmIFYOW_B3Kdrs5+&TQK7kUI9(gPUt%rkHAw^dmxFh%Trv-SQEjct2YjV zekZD`QcOG1Lru~j&?TG4YlTwXR&aXh3X(ayUD#IK#cn2Jq|gbMD%fjl9Oqm4@xPEV zVRF}1I>8P|)?p;N_@b!7C)KR)URdN+rqn$zXP(N;kYdLNunwj3-KJGK5~{pxHyabkofd1p~6$zG^v2$OEmUBu2{->)K-@ zzobnBl#z^UcE+b`AwGBlD_LbMc|d(i=;*0%?=E{+@%U68c_i;a%xVdtnVU;Zn(*fX zL=O7BWEhE+@X!XJ&JlNP#}p-ZTxIBgBMBqBBb=lA!~H_gH6_NNkPRwFoZ^vEGL36< zyMvHVGY$>=nbrhHqpR}Fmy9VNbUPZ%S5sf%%^yqYV4sXTAheW?&CLsNeC`vY<7Xqb zRqR17rlDglM9zR#rnheyQ|3*s;8B7q@VhT@~ z(4`4jpq z<}=iVZ*LVl(}~qg3d>wwLFt8~#qZL>Di((()ENEpfZV=4Q-OnWaEwVo7A1j$9(`Qk z^QbkE#4l5coRGV|zfP7Joo+>3QOSvxO)PG4cTT0=9{;V>T7P%BX~BHJwBVFLt0u+& z=H+yBU@?vKE(`wswUjg*l~zClU2i zG8#L?>$WQbzdMF0#Fpg#EgL9K5~Opv2d3(d)4PW%cfU0PC75-`x`GnfK<4t%gfedu zGwvg>B@~iDu$ueOw;+Z3xa7~>;Z`AFC$!Wrpos7LFU6wMes+g`=D@%jAinO-JS#xp zghZopp(zseWJ}NEwMU~d4`37QW$Q_OY=|a+4B!F>u=S<#zTgo;(9q1IUj#}OC{N&p z4B!(eV4Dx*=JgZ>VB_YaVU{Ui^!1c{9>d#=#zjUG*$tFDKiD>);X(#pmJQ3-qLp!m z>EVFOj|QrEz{u}V9B4EyK{TE!xcWQvB?65gDf*=oxOQ6Q1s_@+JgoM6r~=ymKV^XV z|Dp^~Gyw`O81o2(!x7h8+j5#Jo-c{Z%1SYb2wsvA=1Itu%BllcfrW*|D4@XJ-XT67 zYVGEvudfef=IQV6JG{CLqhpOqf~IF>goj6Xd3mAif)rk{RzquVJc`r1TNI37YHF;h zshymh8Wa@RZ|gKPH1e( zC?tdu3{=$gQL+5?@x{v-Q#mRl_Zpz(AixkWJtk05bZ^T zgCx>M3eBKgf{=V@eQ&oH7PFc@L|+Ypf)0=%zA##X-snJ0H7ArLfCQ?jX)3s7Lepie zZLRfD!M>e8{akN1N@md16hdhOAs)VAI6$Oabl+iLZ(y?<9NpY zP;!EAW-}`DcO#+q%`_MC2jy~!*^#;RHZ+~E26riL6lum#$4N%;H3m)ocKooj_0uBDxK-fAw|6joX1tXw91C)M%at}Q4{=X;# zqUnD(5?N)SBx+HQ&54%E@eF3!4LHfRqFngBSaS$75f&EVqY{cTXsezrVqkyT92 zft_6b3n(Y9S*V1-d0yA*#bM#HOu*)kX5X3Mp6C7#WxzY`&pLAT$e}x;68?Pt?^dma z=PQijMQhqu-^MQ=Lv92Rb{WO^r58^>hL3cxb~^tyB)6%XHSLYlFhMTww_^r#uz9Hv z`cfs5!L&~n0BXDMT_n46B~E^RWj2XTEYr5MkK0zzEdaUGQS6oCH>@A9O5Tg2%}rl; z%7IyU`M0sQO1602=1|2`fqmKtUWBz}6y^Jh=bY)kckAt|G;=zFpJa7ze3vADrx)!? z`g{El&iK4#^|1GE@MzQO%;sn-Mr2gY&Z*_>S-0PlPwzvOIy0;QcC*3IJRWzy194KD& zlqfM&I5Vb6s6FUM%Lq_2$B?no*qe->m?<8{1R=RAuc9vRr$9>jn=8$~o_h0gTZsqFOFa8qBU`_o> z)e2578!Vz}+o)|^#%TLpZ+X z`*-_@$x)T_Y*zBX{C+kP1#PF9d`HyiNe#cKEw%Fcr|v&({YyPp_97GWe9ln*!+(-n z2sXwjkl-Pa++DNsE6aoCwl=wxhvzPO`Ewu*XlW}GE-0@=r$Hnq^D$stCzEz4O?yMGc9^+8TC%)%)u{MBq{ zLVS%5;7dSjm7d(N>c7gjMgcI7W6gu3**O)t$X8M(qIZFz7#=z;x3IZLBDs6JM!rQa z*izt^gf_S?_+dXlca^}%=?>{_^XVPvK2mulx95udHaE6?1bG;F6_7YTY%=}=51yr{RIxo#pXD5+lo$1KHc=v#JFq(RysYEcBwg|d3Rrj zs>jTN`qAcf$)Sl;w3^hC{IlT=2yg4${bWh~;n<1AznG0dPi9=#6hYjeI_vwiWBYyT zs(*aPQOc$b8xuB?K5L-E6y``I#f78Pf2E&FHG{pmI7HORpTI;_jI%9d#>yP45_V@- zWPP98+W>QR*^1sIpS?@t?Dt{v)?#|NM3*{@a7>J8M@p~7WRPqS`JJ>))BXxk#LwdA z+7Br5$sCzt*%7dd3dm;4Fw8OYZ+eX=MlR^C0iLdY$_?2kN()f8l^>+V27FywT#Nx7 zmhER}x6z8`jdcKfUYG|N0i~zNJ7Ae?o+?v?3QxgWT(j31{^+aX4C4d5g?d`9?tp;H zn7*E*_`rL=aXGt*XT^UJMz+7*jj12~Mdu6_86tpIa(7u7fybCprxe)I4u|qxm&5Ta z?N&u|?r^HmOZx9(-z52=AhAZ*kRH-%oPRy^lAW{Ce^Y3eQV$14G98&7re+_@s3)r; zZ*t63_BIZYBP0SfAmu;Rf;m)>o#J7J)ib(dP%kOQj^Aq%$N5X|f{XzJBuI~LZtj?q z_fAy@wz*Uka{e&edF|tF0ngmoo@7I4P`trZEH=>&nU*)m;ZWUshk3%;)*fxbq$y6P zBlJXN?uk-j zuz>A8*pM>#d7g;rz@i~)!mz#k&{a5c-NgY-9m&(LT^2D6_rnNYdz|+X4h2?V(Qv(M z!xHrP%eJWVx~Aewf>YqGf>%_;aY+?}QS61j;W`H_Be0$0&3BTiP3kvDm_TF7er0KH zGtTH=tb{jD%3J_5WG|Yq4(NG%S9eJmRX01eH2xBR&$WN?Pq=bZOSZ{M#vB!-^(lSY zsrY+HrP-OO9JL=;e}l}WBWZr!5++9fod_%!vH4#d`kj-vn&lA5pS55N^m6F)aXEDq z8&hDww|}u`jvsTfY~-{k7Pqr0C9W&IOujDqS-u}2{)3%OnPnNmR@*D`=Cx~H;IZo5 zmD1Sp@N?Et^uASp=q$^3H(648{8c=vq1uwY0L}#K2do04wJIN(CFyrRhQ89Gyj7Vd z5$9LIX7rVxs_1*pkwx(j#*5W_T00-uf^_J&{#!3#3+ZFo<Y=O~_*dUmILB*Z!POHVz{^P{IfK52%D=%AAjU$uo$d6lN4egl|Vc&r%|JR&76V4fR z9d1mmIn0a@ybEm~9Dweh{9K~*tQ=O&^L?Yqq0R~mt__Igf`y6e198=8d&E~8@eY^G z1-1|V2);z3e~GerYLI#ndD4v9*moFhn4{a?g>S5zM&2SrA{|{)q|2x&>h}!7T^`k+ zaTcyo4{T(FqM~Et7fs~J#Vn8E@2`|6X5u`<5nqj_tMNOZkZ8xMi7%41tW8>{h>fv#KG(A{i&uLB{&KF-y~I+bylOQ`oH))$GO6B9};C#9xa z%}771pxx*Qwy@y?c?;A5LT*^ZMwJs6E$t*7r^MQW?j&VST5T-4t<3%%8}hqa?u&z1 z=pLxZn0{ZBS_9&Z?j&zA99*3sXjStXSCY{VLvdw~q4?Ig2um{t12phU-1&Jz#>C!( zcHa>!OnUVzC<{dT8!0M3%FGieFPLY5^Mdd6Mhd)d-U$FY9x^zt@aL}S$N}jm9gUQS zHHx4vxogtiNKpsFgw6%4`z&!LF`HZt2^0WEq4Fw_jYNpTw%O7BS>IsoM(m^myrd>J ziQjw%s32#IETIAn24oF?tNg|zUoeb&L3en z@4XcFiq|13(N{YvWp7w^;+dEb21j%h@ilfAGXywH)jX^!6V#!y zx1zqXDlu*>HEf`UMJ?vCq-{mcX<8lv8OqzdF^058iii3iU%CCswzJ06EEZLNE+ZDu zM+gkqF>hlqUlOxkBACl)S+_IwmkY1RF_@!e!aKoddxSqmEp|cN@>tpUl0Hs3oMTs} zt5CsQm%OZQZzD{<6=U6Lb`}(|S1B16*{ybumcz)EIP?s4|2?R27A%f4sv4&Vj=YhV zF4v85DvtLjE$@=srL_2+pqgSYHRe|eG1MML$ZfVcA9hKa3@iGIn$5V%4~UBk9+^r;?&{_dyJ8HjR~!CqjXD<*tPx?qwAoe!6hgG0A9A&Z17G*nT&&sV?7P9TX$_Obei_5z2NJ_v zie5L0jfr9Y2s%So>QK=%t>N;FT0aa$Ih$^&TnWHbH8)O&`p`xgNR!DEQD#=43aL=Z z5?AphR}fy2lyxNTP!_A~q-Mg(^uAIYdQN8QwqGh$qPMgdrWs)qHWET1B}#_ zt60BBV-)@I1jo5#Q>EQ<(>ECxi~Kfe=ghQMsf>> zdbUbj7ZS1#rs8Xzi<59K0#+-fTpOnh*@6CHk5;;FefXSZ?=a!oPb8 zU78}UOd_&OVij(THGGV(MMQ1S+~@+n^&iMterK`qw`X!~%e{vYe>?$kp|CeOj!e4aJz5y;Ft(CCg?%aO#O)SWfTIRvr3 zm}KnK(CdxZSPsdrk&9Qm`VUo0*qONS{|<8*ZVk=hVik3^Y17FbseeD5-qhjVK&#|+ z_okng|3*s4Zm=?BpmkMpWr3Y6NaHe{-yvut74A&RgpfItwFkultM zsfR_4<Ix0t?wZTScS|KXwu_j!KS^@V z?Q46-`Yo#g&D87bs{{^lH0@%YyhdNgljrti)z$u%ZVo6I$j;?gf{Q_tOg&76nB0bmART3u2WrL>V6<2<8;y3m0mRUi+;Z~DpMAoG zHi=QNRc+^vX_wj6xKcDFm;Xo7oXM=+>oi;D59%NM03{xMkqfFasvM}BKSViPMB0Ex zY5Gl3E}4lG&4F5Ihc|w8(tc8#No#h=K9on(5OX6P9H+k9rh!wQl9Y!3-OgvR9 z_W1*b9#KKh6k^*F^zq0N#zeJ@LQ2+Tqoh>z^&F|g1}TC!>S{OsJQ`veZsaNE_&~#qbUBrwKFLDNRcDwwKX*gk*be>x(o+f_`18)Y!wi3Jj33VSkOd&c)cU)d>t|T;xTBa$ zXIJ>X2gJ%f)ywE9X1tXp#J`5}>$Q$PYGK&>qfrLVbFsnL)Tsnfj81{9>~ z1c$YxkhZ&W89ZWep97}&^Gk==>k`s7zb7}s-u7KlyUtx;i%f;pl`5(we5 zNi1W8!$V*of$iQ2Rxdc#jZI1{#5r$g#c4=oYrI9hsQst<7b@v&E_vH^vMjda;i$Eo z>F|Kqw0hAjpqd!Fx3W(3v`Xcfa`)QseEZgRt`78;H4OF#mS8Szh5}sN>|$-~BD#2MO~E%yf{xu{QCu9IqBZVX#3K8Q%bt7o zNt9>38ZIg?Dem)(1YIfw=2WD-Z`z5HLegIizTIL>Ca=-69!j~pU#~Qu-y4p_VfVhBm@kqIzu3$Qs3B#Sk9xNA zSpI!Y-(U2+7P==jf23EY7*E7*x$L$8$N7;nd~~rX_2$8Y<5!YDQl(1s0rtq5PH$Es zCmvPRy})Jr>^p$BeDc*gtOMb^2PsdZDL zb%e_B`|svXzFG&NuG8Ns1QS9ig{1s(9!_MBNrMB@ydF@8Y}=nnA9|}Z>B+e_P6tN< zPb-^S|H21}WP?9UHqpNx{cW`OIF|0?(X)@CBm8cTI}!P|pBtO~q4)X+)3!?6ILn)U z()tgH60EfxP}Bf7_+V;EpmSJ61|mbS=RZ?}baGHHJtH7L;YnX>xl&DEjq_1w%s7Q{ zzFEAkRjsELy%t3+5TqkJIf|Ql=D~arrvH-9CL6K3_OMIO3?H#S*Sioj2&NCwU26l{ zM7$bb5MtIr25FZ#88XA#Z|2HE3|mDiRIXFS{|nizZ}@d;oWlJ4&LLTpD-DZ0m95S8 znwK@7C(U?DnV}<9&u6BXctPwl_qDo=)`3CACD)7DqFUzGBRYR-!%W`sOe3N01>-*= z3viFq@ZQE7AxJ#4<2dU2N6AHqW8+aZ7DL^ZY+sh*II%Fnc+ra`^lnHRc@pX z5=&mLz-AGz&mH$lI}QA`;P6Eat>VB{D@~ger4+)&ZQGRK;Ql>Bo#}XSaxGM z0Fg^s7fhiOHg{07O*Kb#+=-QI#B?^WesWPtqQ_)e?KMay&iQ&$Enm^PRKoL7i~dca z;pCU55G60(f--S(;DL5JxK~rBF@LZ#nxA(eP?*w!qZ3MYV)?mhCnjYzpDUI^DX)geW4Vu?Dc%#P(E1fC_bD^yQPaiGul|T~#9rKL{z7xEo{FilPz#&1#2Lw3QsCwnFj!0yVC{HE>gi?$ zD>EN*%uAsk$@mg(QZNMv8PoD|&-zc8-nEipVJy0@X;>Ie*}t=DY|4q(F!jB~;EtVv z>fP)T*jmTujrv}Rb-Qad^#e&NWrNmD%pK%!ww?|AVm72xJ2ifpZ!`zOz^lGvS zIXcxE)@yiL5SbF+dsSW?kT!=RlA^SbnV474SQodlMyfidUi9`6U%em1a-90wv02gD zXr48jIsGQ7(UU-WuDlq=g-l)8)9A6Js38yX(P4(UY+q{?LM~-=_J_kFg+!cjp^TBBE{!yA(*B#&fHkPrX)QBIP~-NEuo zA`jJ#;x}GzsL5P#>v8X|Pi(V}LsAD^zy}nxN*6axTZ0}EwU)F0XxaL<1_bI3@DW7` z+*t=sy6)V4s}=JAdH{?#2xGyl;dm_P`2y?6{8fXoI-hGkb1;un-4$MH|030J8O*3j zde4@f`h5?5HT)~su+?b=MD@fOz3Rp6D34|Jfz;K5N0?6ALA>MHX~epzq;O#beLRo; zSm-=+<{8`tr^1_1ay@Jm%Ds+X;D4G6wuG#( zep!C=HV`Yoy|OHb9tFNr{hh}!s}9z-HoM}kVtr+-^+=IO{G6HlY1mlk2SkoFs-MBGT^A0d}&gblLSpDE_{nOHMC?l9>i>w6*xO^#g)%?JW^_!bv_b$UT_re{P= zbib2F3=8fPS8kz5K(Y|6lEafZFB_uItDqc4m*4YD>yX09Pjv zJ0erD zaQRveGP!%Bb>178R?lDlSk z!dVT3ex_M8{hi^yMeIbusF2ufw!&oJ=A$W-+8 zl8fOb)=#L%2L!P}8)XA_CwN!1xGc)8bC)b6A=G28IJ-mr6YaYQP?6-xtQK`c<0rY# zw{;?pV!-ZFwGPj)=O0DX(;hPypBCXyp#~tbVKRHYUsSwrR4vK7Hg@mrT83Al!5q8( zEh(1?1^!tF|t|wzU}j;GxpqQ5CHX&ksEl@P1Zxhq~DT`32get-F~p0T8WWS=hu7| zEyCkZrU_4ZCJ$q1T1%Q;BG|;q;DQctx5FPbh8?-bfRKc)+Ef@awQx1ez>F7n6%a zlqrE$I4|}Im7wp<~fH#?Ld5Xg7-|N3M7@GDm?=%(d6nf#>!#Sco{7vOonP4m^e3wPp>sDUF z{SM|Y`ngTvyCedFY}!DeY2d5epOy?=8XYDfhAf!Uw?f=$wVy_&w2;bx=X+ zc1=#P6xCCiN@@;yjT{Oknp*c1y!W&h59!={jLV^#FN+i{q}XV_a&#-J-ftwO(~6#{Gi7si zKg*|lnp-9?HYic1nZ2`{ZbC8|>%kSN*2MyoY=EKOqq)PTL3zgFPkMbrugs zLq%`bcg;^&zerQ*)ov!0($PM=-O-7zn4KkuE3Rv{dyuJRll3d-e@X>;$^Z;K4Sdl* zAqRR3p^QJyVAP74!G(Mp~Mu$v|lpCjCq zfHp<1TR?!IjAd$t50~VOD#~TjT6!5BLf06cFjwA?Y%fgmB>^U4o zm(SO0hC>EaCaFvj(_OVodk6|G8*+QE$AoE7ut1( z+LP^H{w2GP@l=#~``>x=D_qMQK4C z3uQPTv$EZd!u4rjVx!QH~64xDWc)+jQ57dd5Vm! zgp$&T4y(utinG;>9O2W&@gQRs{TB^f!c9H-6lD&yJ#B_>2(2Y&H${~#e6lAnTUbyF z?f4yP=^xX43Cf%%i%ovLq~PVbmuBjnwMIQW*o(ADI|bjha|%dEpXGzjes?v(ECl3ZYEcIlLEkZzDzV3+RBrAtzzr5mI}K5$l-MDAzY+O-0XNwW6eYN&08x}$IpIrPH z_$QYg7?`M7u#EbEKjegJTxdrlDE)$9Fh9Pq!kWmdfbfZePF@vzq2wKb?k;RF=@ow} zcV+uK#zlAWPC_Sr_q19+h(iVAO4=ZL#{P$fP!YXOP}ANT_E~E4zXZ_;35*z{JhwMX zr3d9B)vVq8Z8U^92LZV3CQxY3j*LOAcsw`bG%g8I{#)Ce*mb?G0;v;z>qTG2>|-N< zOp>w_i|VHB)f<^r*UD_Ul%g#qu?VFRW=7hdEiWzd{c)ybD4*AWw&{al6MOMSD>87o zAYx)FgwQZar@V<1-?&#+R1Gb7*5nw zD}_^?aw>E*;nWV)!GkLro6>ul(>9{uI4L_PsQn{>bXGE77-_=;eG&%It77ni-GPH{ z1c{1b+CfeRM|9@bfs}!kd@&`@$UUKPpn2-npkKSspfXmTb^@ z4Vq`07@_T?#^K4JsmidZXV}S)TzQ{(vCmB@t)*4{k~umt^hI=Ea9wIyRf#CxV8ZR2 z!bP0TA>}Crm@Ck9GtFw@i;YQBz}_D{2*uA%ezKRmwHQa2ya=Vnb^-t3-11J^$DWMA za~K{A^XV0vIBZu41dZPi^QQC_(oteum{oT-75zcHDE`3J=OzE*`Ql z*GJzOVa^0UKx2YM^Wb=I-`utr*3#Ja_g9^a6MjW)J??o?c)3;c>nX*T?@sXWyEJvr z{NHZxR!TS}neqV2nKP!9LTo zLiCL9dwKbYeFa(CVY(zKWiU!9&rodT-c^JENozc^7w!vBy*NKcg;j4sZ zE+09OHJ{(dan64l+x^3!9}OlfZNgcQOzwQuk;tli_TRO^qoxpnM7_7wMiBm7BLW$>zID z*_z52>iLKr*h_e_KC>oO(nWSMXZS}6EAEhP1)^*CV-DX9yUk-Oee=Ifi;q2_dY%>P z$*_$RM;Pb&rq$K^I%HZb$7fanBI_+E}C)Nd$ zSPN+sOWYO#79>q|&y&;l@K@3?;8a?LhZ zz}}m>mwm0iF>{>b9l=fl@Ot_yh@HCm7#Vn=epG1OhmSS$R>Stt^x z`5YPW(KJi+xa*)l)OzU$J(*Im-)UX_`IxxcTo)M4@+1APFJ8!quMo#c15>ORD*ugnp`TM`n4Nl@aBzh0{mMYJD||<-29w;LF$&v0vNicz}}* zp(WkIX5povM`*fXwC=%Q#soaM7gTo^DO_<$Wq&g)Al`NKLCBD>oj(Ca`w}~x* z;tw}+lTXXJBj25M+I@BI-O$Tb9V497#Z)=zQ}0i27E(-ya_1GP}z_sZlm+u3IZ*hwYImKe7kvII-ZKt`w6hQ5dFuX7RBG<8@YO zOIkbYQ*~B%NoK_vKa4kl5nF`y4Q%se+BuE%qFGI>FZ|eMC6s+#jKG_D_H6FFGc{FW zM;R-b^66=d%L!G#nF!`s2ik5l1V~|d*?vi=t0l{sG_0NsdsQF^jni1MjWE1}pqXVx zk6u%_L6|rqhPSg&jkBTa%7Tj+N`UotXDCUxiqfiLFU8WP_{u!_x2t{N^yr+<@Y{t(ZI z-WW!j`y`M;)2D!AHb+D`@m$9AOEs=fR2T2GLsM*RT`wdAt-V{Lk;TE3aq{ie&}~Lp zlx*&Vw^0k(888K;%TSW=nV7j1fIzH~aX}f@Y-7yxax|E5U0xvGGii-}W9yjAYy>H( zfUP)2Gx``6dH+?pjnD(Vs>}kB7-<}ndhXLwr|4qoO!dAOnZ%fC7cnW{iie_Qy}lQQ zZgGg!Fn6xB9`)<5U6v+x+swA0FS+@6N}qBr2n*5@0PM%nKAUX4gfVor$2F zT6&t|t33XfI-xg1i?XNDL^R3=oGLJa#Nk8cm}O-n>PuopROBpv7>66mFaeD|dDGPh zmymbV)+TcqC3p6?!U3RdpQ=1|H`ofvFuCX8KZ_#PvdB~-o3DWZ9&uBxdc>r zqa|`JV{{0{QruOcNs^%LnJKL64uzG8PT9!G^T>Q9?aTNwy5pUt$@?*&nD4@GjzF$> z_fxM_i_92r>IU3hg$e%IH?GN((_?7OhTr%JCxNhqlp+JKq0$`N_x#ToZFhufp@qXX z+Jy7Ij>NBIUa2gFekR&(mWFkkxa=X6g+?-5_lUK#0>w^J=JLxY@H`w{^DjRp?Qzs; zUhHC-4(7;It9R4><33m-Nj(7=hZewxqcvR3p5IIj zIF8Wyr4a-(x2RkAJ58FBofmfJr+!1Yw)t2o{4FR{F{i`~=nSz^zOY=7|brTNlM<4XF&@I7s*o z#x2Z7Do>cChteXeDt$}CkL`dkdv{|?^+gen+DYW>cFrjO5m;HsQjr1Ylk7A(FmDbw z^pH@lOp-C?yIL=K$lo+v!qpVILZd8!5zWOn2C}lEh*b+PQp4Y+4Qn8X#>1|o1{KS9 zl!;WeT>_V~C~i6!{eoR=9DWo{3mkif`4hECJYB;CKl_0Lz40BDPYgwI15*4~|J2Ly z!?hN}QVr*@9~t1y^2IltU*GRj+sQrEi>B`=YsAOtrr;hLd~7O9&7f6fHsmJUT)BK@ zECi|6tqIsQ_^k@g>*-uPuk!iTla8?0d2i(@zR+|Z{VJcxfDqJ8Qpce!iEuiIBVdH{~ehs(O~xp^M2Cn1?Ie2HJCEgSZe%`7rxA>z>ximl^nn(|F)+kv5I@J|RP|7>r@2QkwTWH0H^72^d?C?k_xk^p%_x$wAj2xamHuMN5!sN}i(u zZMEcaW&`!84{g=$mT-HS-=g8>C4kTl2uF~1mRkwmn$H(BRL6E;pn0LLi=7WmCd2?8 zu@za=yeEj|w}&Pns#r=|0-8Tn%?O-)5{zjfgC4ZqFiZ^o3=bN0oq$(hhYzXkz3J&@ zj@}3r-IsOWaU3sOjT9E(2IjPS{nX@kmMRXApAgqKaPB!rO^pQhjeYoLbIF+mEZS_C z3ec|uCY)3x2EC|WG?BaRYp2X_Yc4Yc_YeE5!GO4Qe)L3Bnh=cVArw?3W@jX3tz8u0 zuB@ZnTU$mDmENm?>%6;z&I-N=B|ggeq95_o{pf#At0!>(I2?$tXdG z0kRHs@^GVHaqw7Gr|mN!jn7kYZRj%MN{9W*k~rUYMhZ=(p)P=5vK5Mg4eK( z1stOw(IEM(LBJ{6)Fb;x+~2D+m;xL#7zIoJUfNI<;*M{k>5BvE0+M?$r(9g$TC$?8 zjT0;P>$}sxbCov8GXCMzKfFVkG6;p7SpDMN9misLWkw0DK)+W+PO%%$u_LTF`1Jg% zIU4)7D_|2s2cs}~xiO~tvKg|a=C?z!+7R8B15sqBZp59lsAr);CU?rQNF&+R#rfVE z7-OYl)i4(=Cf+XzIdn`*bNUyB)5MHNXO25h5`l`DOt0BT8CkTB}Au22Hp% z@-V^I{;3U6c;}>=uzZtx9v(fBiP0ffW+=YQGGlBXf+nO|Fek1wk@MCuj@2m*TPX+? zsXV;UGTlDVRD=-j6fm4J@Y6+P_@RC+tq@BGfF?#eyrqh-9}dYp&a}ly@!m{rYC>-- zK!5*vn1T@)QjR7E!W240iTBFhHB%=a00aVF^}F`t=cNI@lI(tQ6J{FKw!-*aA|u!I zsd3?pwK>}VdA0h!v>c@9g0;U82E9RP8CELv}gf$B0)6>@!pFWrpv{qC*>XE?0IJ_G5e{Me6?>dR{Q+Vu^LU>EtS;(a zPn6eNbOC0+_n9_(kKqRZ>Ds@G>CxqHuI>+ky0Gg%08$*w(ITH!IYn^Al{kG(j-ry( z;ePXKbOy(Tn&5zR$K0RM0n4?6;FSGYqDxxqmsklZ8zr;vRspEc_Cm#uD2)AR(LS5^8it`Rx_sbx zKNmDitA|RA!LcmviJs$1FE1XGlzJk;$>{N*Yr7TwdOu%@BK%B z+2gS)1Bj3o&-6&TF~R zFR-*Tw#*{rv9JxeXe}(04?z9PgLN29rjUvby@+eoQMCowswJ2!H%*DFDQ69HHc=i< za1Z;xfQt{}q0-RqAdIXK#gjOeZ}3SofD_j6!j!!k7igtHz-%#RxRC+>A#}}O?&rkC zjKm=p5C_ZY5=|n!UloHXa5(E*{epLgj$liolNHuvCzjJVWY{A`W!VvsRp9KJrVJ(P z?hT(w`mbX;8YhD&WtdQZnkTk4>$%`9+DUvdMuUQ*ldC@B0#WMkW2o{o_C{eAdDhCm z+bwDL$%^%oLA380d9RS1#G+M4OKL2m8y>cL*6sBYkZaJ;+cr5IaSphGlST)|JAQ!g4G0ssALb4w&&N?cvX(ed5|KT&Ai?t+&iL|Q;1 zMsbabhOGuDB9y$QO6b1Y@3ua?yJ!a8ENlAcy<^h*YXBy0Z`g|KepWR9@P%3SM#kNj zJFseS;FZWQ{??+=;h)T%WwxbttZu>ZLPLLg({; z@1wuArI`OGu>gm!{;^_#+5SGUmA3g`gBtzEg%Oi0v5+zUunsZTsjs2GzH0US4`T4? z6%zIrK^b%ap1+2Z--i)*M6d;fEPjm?6AuyUh*Aj%RPpOp?TG#;7WttgM%O>)V@Ir* zf9$6YXfP;!1qnMrJg$z($g3Z1&JRHutQj>U74$z0b|fapW3kI&TFRkpb|g2#u(;*W z&1{g~K6j*k8%Ou(N3KUgrRhw6QbyAVM+P8aN_S>rD`$Aiy^-$E^zZxt=tS$6+YXS( z{fnBjh*Xi$nRhe{gqvs`yQ_0_Li=-EhRZQ(6+XEL{6VmSrFnA zvVD5*=-~9~Ulf(9-tvVmrvy2a&QnTN~w!b0fR}cuRter1;PMa|9xw<>RAgX@n^J zp)nrLdbS8S0HF_*xV@Pp2!h3g|7vftHqtivHj8y>TsqJ%HNQlqf@wOTm*w#{F>F%nm21GCl zh%z4`AgE~xYk-Xq9ljA52#_;^moy zFcF{u5HkP(5%#X00j{G0KyGX5FjJt zAR!@Pydu3~(g2%E2BI*CInBnKN{3?cE?>?N?tsMq?+%2ac$5sZyRTueixbRlL6A58 zuRHJ`CIp?nSR8iU^x~cUf82q9#_*0eSRuP-%D4Gah3c&ccffb=z5k!V+^D~;)Y1V4 z%~<7Xsn)AsJ@)8GS7!>kvyT6roQdfjfAe_l8#p6Ns@)ud61(`UhKKjK|HYuuK{z_d zp)x}=8+V%WRwE^f@pR*U+hYBwXrGu~8blP^n{1McG`q`oV0BwW=Z7YiXUo_&*sJE< z9hXtz>e@6KG({he^nH(bAQh`=VohHHadq%*k`_El7IFG?)qp3zjCboILe)zd2Nd` zWZ@Wxj!t;6Ie%ZOjHAMZ#0Q-)O|qNaf-f}=J0^x$ep%6C20qq#axEOTrVVJPKQky} zi1EDnB{{3CWQpQPTpd7}-`~f@WSU#uL`Qv(vX*!y&#HW;%wsOtDY>38>KJ&N<7{`x zKy zcP;&Dz^OC&x>@ETcDz57)feumc3Ew2?o*k=aTGOM8GX>6pM4PIv?lg)!~I8kGp$zG zG*1RdA-UGJgl!6IinFX-B4Xcr=*+fbuzZ{vbjj&3N}SH0V$&*jstz6Vm(;(0 zR=n@9o5l4h^Ci7#{icS_`n^l{i)j6it?;vJ*;lxbw#!tJ+W8QTwYPS6&vF!xXi)d( zhJ}al#xJK;H9yRaW>KwjMk;=z(kiUds&v>OoP1*S}gG6=+ElGC{!<;*GdPp^oa@>3W@3Af4S(q|53yyZ(oUkGQU@C$+QjA#6n` zM*c1TkGPys`mgfhrE^RfyZWvd0?9!XpWij65y>=paw$5+n+Tq1%|k{cTy^jTH=vou z;W>f?HSgle+i^e+~1QUDfq1R<4i^#W1P*<2CjbtVuZVjI$Ow;tt zdNrykV%YD6$=u!~ZH`1l>HkIKR5^Hi$PO8yuzw&y0mRjZx zDEx=F3ClnS%>wKM@Hvj$HKn5<_(sPNER^<60-Egph;8_Z0cW!|GARku`$Hx?4ow2J zNrwm*=-WwF&_^gf=#yeX6*Vh3VDy^T>LV!n%UDZtu~P7^;n3brA;SgLyLMo%mA!Z; z5s4J>qs>G`Mi7#{;X~&$S4}l~!hUB$paxjfj~1){QRQZW$rj?F?&t8PV65$LVM$3M z&mSP|$1W6w%o84(jkyh{l>?m-yU)CmojbVy`6_;;oHeG|c&BvHj2qadne!>4s&oOS zN8qVl@y@u`s>y!((|(ktOmI$+@a^D(-E4eMGb>SJmTmwVX%HWP5?wo}v7E-;L)n8wnXj41?Y5|3y1*&cv)|#&e~UFKd&r;|*T(fO zhWhu$K9tX!2A^)DXRqZ~16jCp0e< zq+%>{s>n@&D!d@q>q=&5{69VFV{eajzWMoXzNFQFNqZ?AZR);88>?p@DrLT@xM8Ig zY6-N3fbV_0zhM7X3I+ zrS>kF=5e6$P?8hLGKUGgzQ^~{qLIiEF>~YNQ|uo1qcaly_`+5!24}NcGtG0Hoc6J> z$FG|PCBOYlskP`_%!@uf$e5+~0ST8fa(j8=i>0fvWqaO8%c8Ww@9*h4=UHqZYrcTO z2I^?_)w(&L6d!S_go^tKiqMMT(kW45=nNyq164;5kGQS0Ux6a_qc~}vcbL8vxzaoK z3Wm4J?>IJcWt=&dn%abYiEC(nIlru>DI8iA#JdDxrWb6#{HVXZZ&;`l{P~maJ52-K zucJ27;r`!bPOn!pl`CAyUUUsMbsR-R6+s7Kw|a(%brMgI=qJW2cUGV?6Qo`C9ks1tDj&R;8>B-}vmB0-;jWPbf0W&(g{R zAMA|zYs7-D+dawJza$z_@cvLbHpvON%-IGGQ-_JSbJvUXdQ@Z0M|8vLBaYKN78W@E zd1MA0I7rMd2f|UK#{Pa6GdP@#*<@4o)L zsWrxn>dW9Y%$?t2=zk=`K4OExNLG47N!5x=ByUYqE=V#e(-Wx<*|Yq6WhWcDP5^O$4YuApdB? zhza%AYgTq7l=Y3|9rV&;*Jr)A|Ij%k(=(5M>%n=Qq5B)o?r`K>QWXMei|H8U{Xiaj zJ1@^LBGdNjrRb!q(5@1ytjImD@Ag>20>l4DiD?$0ib=9n@!8TIua5~LD*BznA8dOWOf+*N)g6eOgL5+o$K1UpnD>?YjD z5?57nl2-s{Eu*p|My!u81?{35MvKGu7&z=*S!J8#SSWss5;;sKLO?M{^ zbOtvVt`PpLAeW!U+f3m(yr7v`t-6Y=a~#RD$;A80s1}wH6RJyINd7@rp2t3#I#k5; zgb1K?WM!Pil+8)t$TM`!$%pD$H!if@s(c>~uv_!X76ON$ z;NQMB@h>i#=E0*rF$k9If|2Lds+cJN>9zvGrcn`o)&o3y$TT+DAQ&6V1`0KQhVHWH zM^+Nrmu);04=OJ=_Jj+5{0n+KBzi(ee?FmJoaNC3MB|*}p%|dGn_*hLy z^pvhtWgfMTJZgK6TO{@y-h2hk>JWy!pueV@it-m7sxBaHA2Pu={sQOL>c1;_?q4m< zDARS-qkz477J_dn8VxwM6=NYb!6?}h^)_J6(MXY8K`VLgBT~NbOP{;)6l@N%DFL92 zBERH-f^bf{`aYSq82@DjS(BsE{Tt4eB}F7u%I~_uF`jzG=!~>!UM|3o=oGT-`h<#K zbc21=$|K)dEM@-_0pwd7{9_Ebp)h*c1tr{sMq0&RWlLN#^3B+jJyJN>kCKNP@uX%Y zJNm0}u;%ifl9?=$$@_#of`#3PNysalN>8lkQ$c2=zFYM8@^%qX*AeV_=_%D5p*Qr0 z9-#UOn$aq;M^xsicCvy+f!!>I05a*{jBfV^RONcw|5Uj?Md(jlN>#N{M!h-+H;D@r zh+9yl`|K&`sgO}r3-V2M3M+uL+`T__VG3#L6Xr7MSfxrD87C?U2;2NsC?-Go&x ztE-NcgjApOssl~j!9_8pNLX^{7 zE9P@QGBR|C(i353xTsL5JJ~lHl#2U?c@CvpTff7<0X|g(bj6C&kQD1l3dW((q>M74 zv1pi}3VqwDXK$6UM^md_q%zPmKwl7lypo$zmfsMHmgn%Nj(*2I&Y>wB>A+TEndaqb zB=jM@CP{+uzA3iiQc#A)MUKNDL?pOdMEml}u^%qI^rI2WfGR>YU*=V@DqhiOJ55DN zQHkWOG$pv|K$$aYPvFCmDawGvP7?x$#4jt$M`OcZZNlwdRKF;ZTiec>_O=sS@KKGV z4rbt|QT%ed-L@ylzZj{p(S$2Mul|!bngdwQ{-uKS)D6@sd+rp^QQI`7?>>vBcdW`& zS#HeA%nvQcw};@lKlr4#;zHYyP{>TLQ(!|8Rc>W~EK>JbAwQt4CVOjynUR(~1o~d+ zbBUm*#)v{JzfK}rJ=TMM6 z#~2TR6Br=Ey<5X;Eibo|PF)TFH_Ka=Uz#3zQR)3K(_EA(cs-8%1v55{<&^X%+@QzX zrO&cHQNKV!vhBnTGU9(M!S_7rU{|5wZG+4Ygw1po{!=DYneeaEXd)9$1 zCv$xa_TAyDgT`e<^1koNkdN{$u{H{eccsiBua2hb=41k73aMc^&)*g@F4A@m${O9m z7SPzmSnO^I%{k11hj%S`;L0=P<&u}QZmlsth!C#S;^NXvkA@4_ zWt5p*Y$yba$UsI%J*#P4Q>yap>AWqrJ}<{PcG1*-UaxGXtnH^NWxh7EXpRkbq37pF znEtaP+hMd~XTZ+{D}?HqN^RObwQ%>jH+oc zHPpYR-4hpADmCb|=E<`Wz8`V|x(+BC*Y*h*ZwSV4teLUegh`>9r=VJ>D5+IWQ;Ux3 zA~T6jl$qvO1w&Yy369 z`}s>OkG?vWBKLW+zOm_JfJDZjo&AvrW{YN0D~-^ZeO071nAOf9p(#{K_%_PB$eupN zDzTeEZzosgQ>tInU=+Muz)vm`ETnz{lmG=A8k#P`BAf5?8t>p3Y z;X4?oJ>($6)&=;q@k&+a;QIv1q1a5t2&e1vpI5*vg22mM9^1Z*i(YC@daVLfvBO|t zFJY;a$@v`YiJG;t2*O{}*K&Jl$v+h3YC)7;gHDEDgls$s`B{VM3=GlTIctgS*}f=L z&x;yIvlmwp!`f)&t`ynRv@C>nCf_r2Z|Tpvnv5Rgut_SmojTCcl`x>VId*JmBU95! z@C3y09yqHb@9?4j-g3TVC#aA75CiHPh^lO{Q%aD=-m4}+q3npEZoSSZXb4~(tUNwk zeYjN0dXKS9wV#Sp zeBu=RyI}T2{J{W9^y;NAyAM*v6g`Sg-;PmOx`stcxbq1SVwyx;3lg{yr@sK12fEHG zuPE?s2`J0hlu+d8Pdu&U4`voMX^T9jK^{nZAg|fT9LlyiU0=04^Y2}QA5cwVBk4+K z7=s@Uy8i)Jz)m+O-ae2Sqazr@82M{J~8#p+bp zN9wm&+R1niPBy2-hE9_%X$H5pg~4!9C;tdj7AK zmDbXK;`ld)or1ZXCS2>yZWTKp@QS$%AC)X^EL9e17XtL5y^1Ggae?x|6L(eAt#u(o zytMxj6cDS43JQ`*$AeHlM<@x-dWqsi_x$nzfqjjA3_#hsB>KT~a6$J@dFAgm`m)^| z(ok`q_6zg{8saIRJC*+w?Oqb%zTt6jUZRd?Hb%o>1=;#=T_i%6$ ztz6|r;cg%yT_XuWtORw4Vzxj$tGfaxV9`vXbTn_%xkb~uk)M&2BFOCd0_Z_4We%-E zPjFy3Csa6E&#mcoeBH5GS%gYlUSm>Auxx!n%|OxQ#rnb4#()l2yrrG}2Ef}vBqP{* zUhZqr34W)VPH==wu!V{RiT$|!&HYbbD0VgZi~w)iBUaO!uMi-eer+X0e`J?GCcE+=wBwB8ID>Us@2T0 zlEbmdHOg>g+0O}iP3#lVf5E!|@juk7FrpnR@5k>nGGFggIHgSmxRjs|+lgirUTj7Y z_tUhR;~-muE~=xgZjPl(8-#QkHs$}9Zz_d>kXYYD;9$MnAHVVilTb(j#*m7)nbXm_ zU*zlUxA>}_0O6*C(@PQ4s?BM8svl3^`C4-WqKaC#zuwY;s>yox*xWcZ7918@SC+Iq`3QKB8%b%gezAJ6aN`&nt%)i;0Mp{CbSlSrjVItDm%DC@(WH96j=uqa zcnH$dAh3bqj$@T)g;J-o`Sx6dXL4=_S{l;l4QzYv({L9fyFC+d{7xcSZJC2Tg)#m5 zr)YYzw~&AGzaqE(o6eB~QQ!HwPgep@W{cLJ1Amtco}g1>J_%^7AyYdOmGwo^ePQfy z=UQ@a_#U<5)c-R?4=%;kRVDaakJY>D_pG2wQ4l}Y3M(i%s;W5TB2}GkPW~(5yWJ)G zr<;wC4As&^Q6(U690v3F3Fp+bpwWs7kr-DPL*8*I8ov5-@yN(zc2&98X|RrzJlEv) zNE&k+e3DA?$tuuGDKvP$lkSpzIxeS(ZcwC{ zOsCTSfuM^_7%#hq{G}>UjpkdWgh9D8GFwm3%(ywnqxBB6o&a^!$Wz)!{{%{TL-(PA zHFN6iZv=}4hGS&`Tlpb|8R{pop)f@i{g6XmFZo)bh6&OzwJTxy-b!`?&m{MH#gth& z5QCd4P%DRtwWfZQo%szI^oNihuVs{GZ5&^|UOaj4SP|x9wjF%83oNKE_jK&q_3hXr z#W~Str+uIe_(`N9KQqdU+cM<|5ob%qMWw#B-1kJ?lhS11f*M=1(EfV$F5vG?%O2y( z2NnfVR6zK%E3xCEp{pu+84!W2O>B6E5w&Teb6|wkw2Gx5e#nZltY~iBI=yeV^S=~x z`7>SiUcpvleTY`*F2z)P*%Sw9YCavMNoggHfYUMQCeL)N z34Zshei~KO(IRX#pWun>1oPUmROo$TDC_!eNJ^zn9J_;7ugT2ioN&`KgCm`1lpaoY z3&8-SoClS76%tpS24hyM6cWMzphq-__pc&`?y)A{@}|{N{*RQ4B<{laG9eldFObLU z$A5>D1QfU&tOO_vn`)i=H`v8-X*#dC6^VkO#Mm~J!88?) z*VOD1I2}C-U+7Dn4CslHivPvtCx;L;Z3cs^<7(y)wsF$CM(#B*nymp3$BJ#G;#W+ zY0u-SYxuHE>u`x25;OdEPb18+RHU0K;4&754}9${FTb~~F+M%|Ww5KvA-r^0QnI$} z$(YQLoy#k(DG2Oc`YY|rkP&g&yp!8>z`|B&UD|ZOE0FoB2bgBT0DwZ8h&eJGCNKFD zyaTD@tNk72=4Z1LglKsm+o zgA2LY95R=pu!B50%V8t4`c`{wMy)~k`Qm_rUYWv(KpMCfh*%WIDz1tBxTz4r2B2}N za#I`KBZ0SXD$U`-DU34eAawDcVINT%Wv<#uK8DSPDAUm1%B~6S-LW2xd*u4*EEtv z(*FFTg zNhNi|Z#lX}E9fL~&O}fg`aDstsdSaZfQE5-Qvg&E6Vnoge4yt`g7k%FO|denXu^jdL}}dcBygF){dS4yzDb=4VP- z3Fm+x4EN3{qrmb#zEk}maet0N_Uky^-+*_RLD-SN6oEl$>2uuoG$Qj)iN0^xH1*g8 znoEni`dRldG!#;lyV7Pm(pNpGS0p-HFkz??xo*2@Dc!?&>QKC?gt|__LP<)L4N>DA z$tyF*5c+2X@7!!pJFcg*aA#5l(|62KMmCKor^2TE*y8$)-F( zPctkG#N5!GeCwHD5-55&nXwv2^UY3D{eHB{dg{a1;pfIW}5@zcD9NecjCrA z4Zpmp?tv3o0mOnsvb>nE)=pGjHKvRI=JCot$r4{dZ`8j~meG0cj-Zzc9CfnGf|89M z%Tn)qA9G0EmhivVpttwG4K-qmMHN z^)9a)R&xS>qwQ&_!Vv!srl1zYEQ+N3aLG;VjSV~@UWw1G?H=KHfO=H3^$4OL!-b0q z)F~C@epZ+Fw80`Ca4aN&9%gV~!MuHn(%9{4Ji$towz2+oVlvkjVlyGRHgg?|zvSX&`G0oOc0pBSnDhe>3AEOM|{seizbq4?2`2q^!CF|M{s857R@tfur(x!%UWVeGX6F33Uns(VN$gTP&jXVSL9(;dnh>? zU_(mHzaCCx>5L5%SFp&NcKJeSf}Gc?ic5F{HAXnLB{ zYQ>~50|~q?P8vo;YJZi=RvUyRb5a{JQ23z|B5pjLSI3PA;J8XKhz`T36=oSQ(*pS$ zs+x^l7_(L;FdVOdBn-e&PWk_Ylgk)tVXEJ@J6J>unx_UbgNJhG%8a#xlV=BX>KA6H zw~W6FQh|(Vs;3h=F_``mlSV1>G-2qNOB==Bmp%BHM6@LPq*X2s5uJ4q3L3Z6VB)I% z$liFYNiD{Y9~T|ElGHX}49j-T(1HtD$( zbzw1cF~<8t&*=vqF=J5IuquVxyuVl=;YhE@CC#w366_AwoULF2SiR>`Uj|!e`#td3 zU-rIwXzG9pGV84i6(f4yjMR8cQoPSIf2)Ay#bF{Fnm8ZAh+2z{?L>HnDf#_W8r8S$ zMGe}{lNEE!RpZ!JY43Kv zd>9i&Zd6h;8wqnqZwo+V^UElgqUrR^Q6N6$ z^YEA_7qm2R>MiNyLbg1T*gpDKrhf+MkuhCE=_ToR?KxIU*&-p#4jfliOK@1C%<@{) zf#Y-!AYhk8ufZxtBd1xMxWSYiQ zxT!C@Zv?xZWUzkZi_^Gf6e>$Qva{ogA9uVkdX)QHZ{--NB!5(kimX&RQH^klS^4YQ zWrX!oJjp>xaoBSikpq*m$}|ZtFFCEr4b!BKSG+$v6%TJOVtG!KY^l_QII3$LHPoO-D>=Tv*7|A{hG@%W>3t5AL%5< zM$dra`N_2-=J|;YxL+Zb%8GWpAtzNwCn=BLf0{)NME9*$qhj!l&1J8XT>hGCwoJyS z_u%6+vf7TB($#uu?lMJBUZ?;(igM;}q(D?IvGLh>hbV6vIaYhXc5W9PPQ>URfdP!! zUghci^f(g)t2ueCjux6o4PcK$N>XCU^seta^*HbZ4RnC(QrXFoHI?(Ja&fnLsM2%M zhxA5sibNt0t&ovA)6;QsytJPd@rj3tpNr?w{xKh6C9zduO{B5MpyFnvp@{X5RT48a zBHm;L<;*3M%=P{Rk`1VwWOeW-B5e~cdRdHiq$0GsOq+dmKM=RHDJn?FaBKWN#IQMj z52o1ZC>=e!z{?KW5;V4-W#@X}qS3UZJo7(J&y>Smi68?3crg&37J@8PTtOSYa&z8U zsG(mXU2h8!F+%Cn484>E)nM^_$fAI-&U(kKv(7$Ol@WQ|D%L+qOpc2}Ft0Rz@>$Iiqc@?@85U>M%O2)-BN& zo~UAe`+%d9@ug<@MPsZv8}wa~2b0b&vm}pE$hrug8b>hy=_}Akygq(->vUfh)wMR3 zKO>fQB*qQ6t;mP&${GxQTV~CanJNd>p=+6P7`?Z1{q9{AeG?&(%|cqv56W(CTy5rE zfb5>LMY7WEEwyBn2b$aBNGrq!rM>X8XLh4e+{u$DHT{yRX5y%(hSrW~l0`o3RRQ)y z>Cr!=@tWii5jkLn6T9`xWyIzpg;V(Z#&4Q4$4}NUJnX=n<9Qr;>z8WoX&sXMK8Dqk zucet5R>nWye$V6WwWES@NBzaeF}AY+pa?2fJko5mUDE@&oGrnubjd8>TxoiNJ%p46R2Y~8OKNCO}NEn z))Rcho8KSDcP?CbBof*{cJBa+{Z0Q5oTo`A;VVza4$1jRA?14RPK~!CvoHU9D zf<|A@zoYpvC_$PP#ocesY>jtY?w{(0f753qx4z4D{HUe2T)8D|=tsC9K@uIQA-#3^v?Tv`KtJ0V_v(pSL1EhV z*p}rV7)Px6Zv}q1sOZ{Ca_>HYjaDAjCYBf)TNJk9t0lCZD%$E3(A*r`&92;he|}9n zjmasdS`7f(4<8TOIirTHGtFG|U7Hrv`|tPCCZW`C*XLAOZv5U=U#Zc^WY5QrDqK(f z=}53;Pnm#&@C)e^o0K9ONax)&0KRNT(gW|7qGla{TkHKS1m<<*o{fclT9MF~i`LSxNVu6U|J zWiQIQ?mw?5CM7QQ2IEFTdP8ze;v+`f6wxbv%CDq@m3zZ@>Ei^g&(d9k^c+T-(III`y{cJxvP@l{~((Kr;gd~G}rd~U*_uU8WnJ19(>-p^$4 z)4B{0_01pQSl_!0KJV>knWA5kzU}sh=#xdB69G#@B_%MckJ%s5|Hgr{l( zGT{K;uum1kSJsJ6!I_`p1ryOY_zFW~gQW#>W6$Y&6$_W6S6JtECMRHmikQQg>oIqt z^`{JPubPiqTbq~hhJnf*gfuGW<;ki}Nq19uQ7$DJW0dR7KGMHy1UnJwZGaxnjgF@zAb$erqyRR3CC7@p3*pd@g~4L zwr7f0o8x_c1QPs3kYZt5u+i$lADA9D#cnOQ$z&n`KijFSjDtoCna7O z8=?=R8N9Z&@Litqee!GqoP&w9GAo*^&6Q{fDJY;DA}yYbwtV5sCE*#Y%&bb2Y-bYs zh8eZGd1Si$+;1~yGh-dIxjZRoT+8Q_*K;E5ekxj~g`9>FSX0`W1~yg{*8)8wl5Z#` zxOFIEwAR>Q_ev$qkqKlqVknW)a)MZ`Y?jAbMwZ1k20I;k?0ic^N=~OE^?$M$7Pu-M zoo=`)P7D|BysB9O&jg=2@Q(vhOlIeLv!YZ_uHix;l2u5{A|KWCaejE~ga@)4>ZaSc zVXkLLm2>;oqbWEm)JGCA7r(W(oL;ri%lS1%gJ_1fD{A`dbB=T^211CX^nR8bkf zYhz_E+i@Ejr$j>Xrt^3!`Q48g(^D{Kz7~$LUV6GX{k^gArvaIFJ-gAye*)h~07tRieSG4%{s(m+* zHS9jG(k;-QD2LWak^%*;@eR$_xZg75wTOYgAkgXm18t@6r**KO^8$?{67pJ#J$f)0 zvp!GyjS+xzKp3KGIO3{pi;!FD-7RFHF0bU!%L-ckg9-TBf#guv3hKwpwyoob>I!G2 zp$ucyCwyl5GVUAMEdBa$S$cBkEF=rQr}(-+kxbHkj}RQuL=JTaUejcBXGWiEDL;C; zc?ALbr@Y-+d~aTG+GRtS1e?%sJUz9^OKgpGdAP+!&boJ8d7#>~QbMd@8>m@4gAO+z zrWlKZSuzydQ;fbki8LlLaUG>i8sRp~Ab7PH``u5ccLDOQa_tm^Me{7M8Lpdb?KIFp zwy=4tua9Pk(62okPLN__t<=&^vsW3^PuRUe4ReuF!zb8IwDu*{M{x@W{4|O#47jwy zopSUhItt*itfWK4zC$h`nYwtJ`U(ec@CU~1)BDbLOkhM+b-CxvU&Z~Hi;WF$Wq8~> z9Qb#J55$M4AArRV|IwDh5d-1oFv8#v)Al})=7zzFvEgWzaPVkby$b;;A22|}7os0u zr>JOCYDftLs<3smm5?=_v2GY6Lf0^U2*pTJkFcU1tfvRqdX8b*g z$Wz++{f|^FNg*M_nxdyE>8je@b~w`-e>kgFUNimfS;hKFr6}~deb1nZhN^)?Z0PP}h4j#9!}&V7^07L+Z^Zz!kkb7S{ndEikJZ0_FNfEbi2HtvxfUMO0r$d_Fh5TF za|QjQYxdW%Y);)>V9`Xbkmz_LQ`Ej?*ey#(3I?H1o~xLh6S3>_QhHT;#4AC_v*}`P zYJb{95-vG>9kPL|;%3x1r=aTRt%CJ2GwRwnOc zr=_B_t1^*EnGLE;tskhnRx>d!dOUM3B^cb@^D+M2(&Y)!qi82e2G0U7+Ea$mWvR#+ zOE;}k86#csr|Y+Hy(r%-MWbAF+E1CGM&?@su~)b_$3&=h$;ZSx)+%!!2L$L!!WLu9 zP<2aV{-aec(!y5DP5zF0XdO1;U#j>Zqn*SW`}y+N7&Rfw7v$}kv3WNM3Y^}(fv&Ge zWUme&S`Z#&FxuEc(D;QW-USum%_|!1=F&aWl7}Js3Q-L~*exCV$?EIcb4MVR1q0e? zi!yXsxCE&rP))9?t_;3A;o_p>%t&A|W%7)%2)5!6h{duwT^}8Z7u0^f{st8SIDG@95s|=f4qeLQMa=FKqif+jIMc;)hDc@U5Vme53 zo|cZ21@T6Gj86{^!Hq3MljGDH`k(`(pS5GG4s=9b?l}NDpD2OI*_*-K=c$mel^^es z<{QkwMtQg?P<$9_pol4kq83*?p@RhQlgbow^gLz#>SE8VV{Nq25^CF({diVfcHnmH zP3(z^k_jgM>UM0ZXFP>TJfUdK;Rif{dwRu=d|N`4N~IJSbSIy zii&YjGir+BuyQDS-pG@&-P7EVk)nv}7}|3!Ju;p(Z<-Nqmd6bgTdhgcU|LzrfHaMF zTc?L8Nrr@Vu!_gnT<)FGq{aMGhNE(Bsm!suu>^(L3%>W%ig3sobH-MX1QLRZCR|tS zKfM#U1EcKRso)-x1gvz+O*V6b}JMsZeb%FW~soQyVh`Q(0SQ)vKW9{Le zpgLeW zE&TU@Vv;wTk%Z-!0qQQpmH<-r*`g7q<9&}?E$x0&GIk^rz zGR@6m=z<_^Bjw8|ej|EKoE&}aZ=TGd#SzS*wFAC5B^&kg~VOq-T^ ziVck=rk$OpoPQ)2a2EVIL%?^6+i{D*f5lHJ%%Mf5kZ(LNn?g|5%GkwJ3bjQ{rLrSf zR&Zr>`e+6UQAxgLMR_;AwnRg(cF$g&H^vT)Jxs4|)l24acm0fpr}M+Ss zng!}kvm{fjKostAf=n9&;kbr&)h0014I<;ZEBIseAGNoAw(!5=1Aj~1A5C__T;Gl< z4nJWI>F)#ZFcZ?5_aks1`06C*KaO>9(Tj2qACgWo409M-OOA!O|KODx-pn1}X6}Dd zKqGFRtfKGH*ZSs8b@IT47}Ja$;SPyYi}SLY+bU_4X~d;QJu7a$!}iD>xJCWvevSX- zf%}UM=@+7GqdUGYPuLzZ|2KdRh2w;S^M|{GjVJxj8p9wbj1t4hFpL<()G$mF!`v}U z9K-M?%oM}WG0YUhxG^k44vUe)Lgrmv9WYi5Q^_!)3ZVz+o`&xX1ePNas287?=FO}qERJHW}Cu*%J zVZ67vHVwvOi!&>SdTQG$8&!cu3KB9fO$;No%f-2AFrlofmv(q_I8@uC3UY-( zTA00kdbxwaSQux9G1x#?R~RmaDd6UM2+S|T;4Mrm!*uQW+YQXp!n%beuoA|2hX$sKD_i0M zql{ER#f`PLu9ia`!!S|}!_+1gzA(h?YHO(_LI^X<&3#iaPz-a~Fd_|;$nQ^gFk}s* z#4xp8+*5ixC1K+17#L^?^V-%LAT1GF7?FmF;NljDf|M3aSSx5Lyjjn$Z~QLFx3u2$1rgWW5qC!3}a~MyC$z>QihH+z99394%VKDjsVU2Ma z{uQvamX9aG8s`wlpE63YcadrdNQ0Y>fYVC` zk$Glyp+uk7**Amz`#{Rb}bjK});ekD*=eNdwmb zuRiTcjZ(bdbf4iYs`vbwv3mAA$2wy+b&tp#cSAl4+EeIR4c6#8>LJyZ+5hr$*fCBH zsV?=rxj&;Z3OZBXSHN2EBMOnZNBI^b;C`NGu5fknEri}(Ip6z%jD$$%BjD25pM$;2 z$UwT7CC^t-2@Upy6W~A*ktz91}fWj3pG2-ow#o!be`*In;Ph0YBr#HucRazpU1sc&c3g%~3vIujKfm zJb0(4qEQ!Q?RV1t=%{N_^jW>CQM}DfF-1t{UYX1V`+?jt*x!j^SL|($z_l%D@RD0} zw-KBw9_Yk?qc}Z7pr74AJ)I)_;7H&qb)!+Kss7fXYbf#Fcrq_`-y)wPKI+`AF1~vz zm@e@KQgf(1hG$I`e@x;mfsE$4a68;wg4xDTZ}_u1c2YPOr~I*)+#ven40@BNQxmuP z@^u^@i}$?mnvfZj=Pxajk}(e>_no?IWpp(YIoYzR7_Cy49Di2-Lv(7Wa%1#4(-`~S z_^8>}^hvR^UDv#uYn-FMqDovi7P`Nyu>0~Z6k0O9$`o#V;h!aLpgH&Z#8+d_b-Tz- znAOFldk|ZC)Zmws6qySK55z6jg2`~QuFrRefKBnSs+qYtKjePAqF4Bb*1E>U%~S$LG-P4RtYQ?T1ZAw!cV{ME@k^qrJa@wiO-emU0C*h{q|#{C|Ulu+!7~y_6bvhP7!*@oSB~%=_|#ojGMNAZ6t|YOJ72Uq<;BOhOhQ<3Wuc zN#G<@)0<)*{YgLEvg5RZ(R92j+JX@y&wHZ9%`A~}%?2-gbc{aK$cYT^h%ccOJKJ@-a5wS?;Rz!gEP~$551TQdKx}w4l<(>}IxZ zJ+GQ&nxvPH*GxskD%~%cVbqOtRhSlt}Ppi{)OrF^k!tjAH|NNju$* zf~PHa;tWU#BN7FFC26dc9}h#4Jc`fht;FpgN*Vs13lU@CO}z9@sN6qrUyGG1p{Pz| zpfiO$gp>UJXQkvF!Xd{}p$SA_DD>E{XD&TahNGLP%`#B*mRdea^k2gs{A*hr_GBDa zSjCCt1yGZfXFGbA#|sF2w722U9)`DX3qo9wNHVK8vL&P#GG=#pA21r_wg*e@G{>5Y zVP6Vt3QaO{(qLj7N^f{6#pC^8*>0Z|BJG_h^0qVmsZO;ng*;sqm! z+9f@YB0Zz2OVFrh?fVyRR6-y>0trq~W0wxt8#CR+zWq+rv%rXM8EEW0;O9!v0Z}y) zc=n&7d|Qz&NXGj8Y1>Fr)URKBJ7aKoYBc+Y2E~P?`B?Rg6w3!8lYrJ{^-6D^dS49A zZ&q1I^0p(EOvpXG{1(52gr#N1k$E;Hk2n@FHFomi4$UulTuV(Zb_MWXMz=Ix|1RoWaw1h?I`9+B_pF!a^NI|t`Q@_66 z2{ZNL+KDb^_0QK8ZfF=j)Lo-^UA|p}pJ*7G;#<-^&gb$B=};Hzv6wixG)R}{;w6t- zPAJ1c;0m4yqHrxv_Bhe9qqsA(I(KZ#w$Oru>#1$Ov`Cs=IJ-E;iT=f7X4Tf(bOoRi26_9 zW7nq(0{ej56iT=4{}j-+W6e#9CL&Gxj{=uB?#C!D(yr|b%bw|0q{0~(<}6k$e<%( zvPXE%6g!hgdFEpVS@bc3Bw~U7RlfKS_Ir<(0bu^8bAewMiF?y&!OVx!4;ME2kuc*gyN-eFs| z(z-tDWgi4^#BHh7(vJ%A+*dm?jhDsTKxhR{R2+`4ukS%0AS9>hl4<%;yfPg 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

}P}%KCA}+4~ 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

8r3kbdkJiDLNL^sry*<)wm)4WafP*ajdF> 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 Rhd%J2f_~_pdrL|V{ts1fu&e+8 literal 0 HcmV?d00001 diff --git a/app/dataviz/mark-twain-portrait/index.html b/app/dataviz/mark-twain-portrait/index.html new file mode 100644 index 00000000..2b4152f4 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/index.html @@ -0,0 +1,127 @@ + + + + + + + Portrait of Mark Twain - Quotes by Mark Twain + + + + +

+
+
+
+
+
+

+ This is a portrait of Mark Twain. It is made of his + quotes. Pinch or mouse wheel to zoom in. + Read more about this project... +

+
+ + + + diff --git a/app/dataviz/mark-twain-portrait/index.js b/app/dataviz/mark-twain-portrait/index.js new file mode 100644 index 00000000..bbf38cc1 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/index.js @@ -0,0 +1,65 @@ +var lastRequest = 0; +var saveDelay = 200; // Don't want to spam with history updates + +var help = require('./lib/help.js'); +var queryState = require('query-state'); +require('openseadragon'); // it adds itself to window. + +var qs = queryState({ + index: 'mark_twain' +}); + +var indexName = qs.get('index') +var indexRoot = 'https://anvaka.github.io/portrait-data/' + indexName + '/'; + +var viewer = window.OpenSeadragon({ + id: 'map', + showNavigationControl: false, + // showNavigator: true, + prefixUrl: '', + preserveViewport: true, + tileSources: indexRoot + 'index.dzi' +}); + +require('./lib/navigator.js')(viewer, indexRoot + 'mini-map.jpg'); + +var box = getBox(); + +viewer.addHandler('open', function() { + if (box) { + viewer.viewport.fitBounds(box, true) + } +}); + +viewer.addHandler('viewport-change', function() { + var viewport = viewer.viewport; + var box = viewport.getBounds(); + if (viewport.getZoom() <= 1) { + help.show(); + } + saveCurrentBox(box); +}); + +function getBox() { + var degrees = qs.get('degrees') || 0; + var height = qs.get('height'); + var width = qs.get('width'); + var x = qs.get('x'); + var y = qs.get('y'); + if (x === undefined || y === undefined || width === undefined || height === undefined) return; + + return new window.OpenSeadragon.Rect(x, y, width, height, degrees) +} + +function saveCurrentBox(box) { + if (lastRequest) { + clearTimeout(lastRequest); + } + + lastRequest = setTimeout(function() { + qs.set(box); + }, saveDelay); +} + + + diff --git a/app/dataviz/mark-twain-portrait/lib/help.js b/app/dataviz/mark-twain-portrait/lib/help.js new file mode 100644 index 00000000..7b28d0ef --- /dev/null +++ b/app/dataviz/mark-twain-portrait/lib/help.js @@ -0,0 +1,39 @@ +module.exports = createHelp(); + +function createHelp() { + var subscribed = false; + var eventSource = document.getElementById('map') + listenToEvents(); + + return { + show: show + } + + function listenToEvents() { + if (subscribed) return; + + subscribed = true; + eventSource.addEventListener('click', hideHelp, true); + eventSource.addEventListener('mousewheel', hideHelp, true); + eventSource.addEventListener('touchstart', hideHelp, true); + } + + function show() { + var items = document.querySelectorAll('.help') + for (var i = 0; i < items.length; ++i) { + items[i].classList.remove('hidden'); + } + listenToEvents(); + } + + function hideHelp() { + eventSource.removeEventListener('click', hideHelp, true); + eventSource.removeEventListener('mousewheel', hideHelp, true); + eventSource.removeEventListener('touchstart', hideHelp, true); + subscribed = false; + var items = document.querySelectorAll('.help') + for (var i = 0; i < items.length; ++i) { + items[i].classList.add('hidden'); + } + } +} diff --git a/app/dataviz/mark-twain-portrait/lib/navigator.js b/app/dataviz/mark-twain-portrait/lib/navigator.js new file mode 100644 index 00000000..933e6417 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/lib/navigator.js @@ -0,0 +1,50 @@ +module.exports = createNavigator; + +function createNavigator(viewer, backgroundImage) { + var displayRegion = document.getElementById('display-region'); + var container = document.getElementById('mini-map'); + container.style.backgroundImage = 'url("' + backgroundImage + '")'; + + viewer.addHandler('viewport-change', update); + container.addEventListener('mousedown', resetZoom); + container.addEventListener('touchstart', resetZoom); + + return; + + function resetZoom(e) { + e.preventDefault(); + e.stopPropagation(); + viewer.viewport.goHome(); + + return false; + } + + function update() { + var viewport = viewer.viewport; + var bounds = viewport.getBoundsNoRotate(true); + + // TODO: This is not entirely correct. Not sure why. Like I'm missing some + // passing or ratio... This can be seen if you zoom to the right side. + // Rectangle shows blank, while pixels are still visible + var MAX_WIDTH = 75; + var MAX_HEIGHT = MAX_WIDTH; + + var x = MAX_WIDTH * bounds.x; + var y = MAX_HEIGHT * bounds.y; + var width = MAX_WIDTH * bounds.width; + var height = MAX_HEIGHT * bounds.height; + + //update style for navigator-box + var style = displayRegion.style; + + + style.top = px(y); + style.left = px(x); + style.width = px(Math.max(width, 0)); + style.height = px(Math.max(height, 0)); + } +} + +function px(x) { + return Math.round(x) + 'px' +} diff --git a/app/dataviz/mark-twain-portrait/lib/panzoom.min.js b/app/dataviz/mark-twain-portrait/lib/panzoom.min.js new file mode 100644 index 00000000..356937d0 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/lib/panzoom.min.js @@ -0,0 +1 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.panzoom=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o element. "+"Use its child instead (e.g. ). "+"As of March 2016 only FireFox supported transform on the root element")}owner.setAttribute("tabindex",1);options=options||{};var beforeWheel=options.beforeWheel||noop;var speed=typeof options.zoomSpeed==="number"?options.zoomSpeed:defaultZoomSpeed;var bounds=options.bounds;validateBounds(bounds);var maxZoom=typeof options.maxZoom==="number"?options.maxZoom:Number.POSITIVE_INFINITY;var minZoom=typeof options.minZoom==="number"?options.minZoom:0;var boundsPadding=typeof options.boundsPaddding==="number"?options.boundsPaddding:.05;var zoomDoubleClickSpeed=typeof options.zoomDoubleClickSpeed==="number"?options.zoomDoubleClickSpeed:defaultDoubleTapZoomSpeed;var lastTouchEndTime=0;var touchInProgress=false;var panstartFired=false;var mouseX;var mouseY;var pinchZoomLength;var smoothScroll=kinetic(getRect,scroll);var moveByAnimation;var zoomToAnimation;var multitouch;listenForEvents();return{dispose:dispose,moveBy:internalMoveBy,moveTo:moveTo,centerOn:centerOn,zoomTo:publicZoomTo,zoomAbs:zoomToAbsoluteValue,getTransform:getTransformModel};function getTransformModel(){return transform}function getRect(){return{x:transform.x,y:transform.y}}function moveTo(x,y){transform.x=x;transform.y=y;keepTransformInsideBounds();triggerEvent("pan");makeDirty()}function moveBy(dx,dy){moveTo(transform.x+dx,transform.y+dy)}function keepTransformInsideBounds(){var boundingBox=getBoundingBox();if(!boundingBox)return;var adjusted=false;var clientRect=getClientRect();var diff=boundingBox.left-clientRect.right;if(diff>0){transform.x+=diff;adjusted=true}diff=boundingBox.right-clientRect.left;if(diff<0){transform.x+=diff;adjusted=true}diff=boundingBox.top-clientRect.bottom;if(diff>0){transform.y+=diff;adjusted=true}diff=boundingBox.bottom-clientRect.top;if(diff<0){transform.y+=diff;adjusted=true}return adjusted}function getBoundingBox(){if(!bounds)return;if(typeof bounds==="boolean"){var sceneWidth=owner.clientWidth;var sceneHeight=owner.clientHeight;return{left:sceneWidth*boundsPadding,top:sceneHeight*boundsPadding,right:sceneWidth*(1-boundsPadding),bottom:sceneHeight*(1-boundsPadding)}}return bounds}function getClientRect(){var bbox=svgElement.getBBox();var leftTop=client(bbox.x,bbox.y);return{left:leftTop.x,top:leftTop.y,right:bbox.width*transform.scale+leftTop.x,bottom:bbox.height*transform.scale+leftTop.y}}function client(x,y){return{x:x*transform.scale+transform.x,y:y*transform.scale+transform.y}}function moveTo(x,y){transform.x=x;transform.y=y;keepTransformInsideBounds();makeDirty()}function makeDirty(){isDirty=true;frameAnimation=window.requestAnimationFrame(frame)}function zoomByRatio(clientX,clientY,ratio){var newScale=transform.scale*ratio;if(newScale>maxZoom||newScalepinchZoomLength){delta=-1}var scaleMultiplier=getScaleMultiplier(delta);mouseX=(t1.clientX+t2.clientX)/2;mouseY=(t1.clientY+t2.clientY)/2;publicZoomTo(mouseX,mouseY,scaleMultiplier);pinchZoomLength=currentPinchLength;e.stopPropagation();e.preventDefault()}}function handleTouchEnd(e){if(e.touches.length>0){mouseX=e.touches[0].clientX;mouseY=e.touches[0].clientY}else{var now=new Date;if(now-lastTouchEndTime0){scaleMultiplier=1-speed}else if(delta<0){scaleMultiplier=1+speed}return scaleMultiplier}function triggerPanStart(){if(!panstartFired){triggerEvent("panstart");panstartFired=true;smoothScroll.start()}}function triggerPanEnd(){if(panstartFired){if(!multitouch)smoothScroll.stop();triggerEvent("panend")}}function triggerEvent(name){var event=createEvent(name);svgElement.dispatchEvent(event)}}function noop(){}function validateBounds(bounds){var boundsType=typeof bounds;if(boundsType==="undefined"||boundsType==="boolean")return;var validBounds=isNumber(bounds.left)&&isNumber(bounds.top)&&isNumber(bounds.bottom)&&isNumber(bounds.right);if(!validBounds)throw new Error("Bounds object is not valid. It can be: "+"undefined, boolean (true|false) or an object {left, top, right, bottom}")}function isNumber(x){return Number.isFinite(x)}},{"./lib/createEvent.js":2,"./lib/getSvgTransformMatrix.js":3,"./lib/kinetic.js":4,"./lib/textSlectionInterceptor.js":5,"./lib/transform.js":6,amator:7,wheel:9}],2:[function(require,module,exports){module.exports=createEvent;var isIE=typeof Event!=="function";function createEvent(name){if(isIE){var evt=document.createEvent("CustomEvent");evt.initCustomEvent(name,true,true,undefined);return evt}else{return new Event(name,{bubbles:true})}}},{}],3:[function(require,module,exports){module.exports=getSvgTransformMatrix;function getSvgTransformMatrix(svgElement){var baseVal=svgElement.transform.baseVal;if(baseVal.numberOfItems)return baseVal.getItem(0);var owner=svgElement.ownerSVGElement||svgElement;var transform=owner.createSVGTransform();svgElement.transform.baseVal.appendItem(transform);return transform}},{}],4:[function(require,module,exports){module.exports=kinetic;var minVelocity=10;var amplitude=.42;function kinetic(getRect,scroll){var lastRect;var timestamp;var timeConstant=342;var ticker;var vx,targetX,ax;var vy,targetY,ay;var raf;return{start:start,stop:stop,cancel:dispose};function dispose(){window.clearInterval(ticker);window.cancelAnimationFrame(raf)}function start(){lastRect=getRect();ax=ay=vx=vy=0;timestamp=new Date;window.clearInterval(ticker);window.cancelAnimationFrame(raf);ticker=window.setInterval(track,100)}function track(){var now=Date.now();var elapsed=now-timestamp;timestamp=now;var rect=getRect();var dx=rect.x-lastRect.x;var dy=rect.y-lastRect.y;lastRect=rect;var dt=1e3/(1+elapsed);vx=.8*dx*dt+.2*vx;vy=.8*dy*dt+.2*vy}function stop(){window.clearInterval(ticker);window.cancelAnimationFrame(raf);var rect=getRect();targetX=rect.x;targetY=rect.y;timestamp=Date.now();if(vx<-minVelocity||vx>minVelocity){ax=amplitude*vx;targetX+=ax}if(vy<-minVelocity||vy>minVelocity){ay=amplitude*vy;targetY+=ay}raf=window.requestAnimationFrame(autoScroll)}function autoScroll(){var elapsed=Date.now()-timestamp;var moving=false;var dx=0;var dy=0;if(ax){dx=-ax*Math.exp(-elapsed/timeConstant);if(dx>.5||dx<-.5)moving=true;else dx=ax=0}if(ay){dy=-ay*Math.exp(-elapsed/timeConstant);if(dy>.5||dy<-.5)moving=true;else dy=ay=0}if(moving){scroll(targetX+dx,targetY+dy);raf=window.requestAnimationFrame(autoScroll)}}}},{}],5:[function(require,module,exports){module.exports=createTextSelectionInterceptor;function createTextSelectionInterceptor(){var dragObject;var prevSelectStart;var prevDragStart;return{capture:capture,release:release};function capture(domObject){prevSelectStart=window.document.onselectstart;prevDragStart=window.document.ondragstart;window.document.onselectstart=disabled;dragObject=domObject;dragObject.ondragstart=disabled}function release(){window.document.onselectstart=prevSelectStart;if(dragObject)dragObject.ondragstart=prevDragStart}}function disabled(e){e.stopPropagation();return false}},{}],6:[function(require,module,exports){module.exports=Transform;function Transform(){this.x=0;this.y=0;this.scale=1}},{}],7:[function(require,module,exports){var BezierEasing=require("bezier-easing");var animations={ease:BezierEasing(.25,.1,.25,1),easeIn:BezierEasing(.42,0,1,1),easeOut:BezierEasing(0,0,.58,1),easeInOut:BezierEasing(.42,0,.58,1),linear:BezierEasing(0,0,1,1)};module.exports=animate;function animate(source,target,options){var start=Object.create(null);var diff=Object.create(null);options=options||{};var easing=typeof options.easing==="function"?options.easing:animations[options.easing];if(!easing){if(options.easing){console.warn("Unknown easing function in amator: "+options.easing)}easing=animations.ease}var step=typeof options.step==="function"?options.step:noop;var done=typeof options.done==="function"?options.done:noop;var scheduler=getScheduler(options.scheduler);var keys=Object.keys(target);keys.forEach(function(key){start[key]=source[key];diff[key]=target[key]-source[key]});var durationInMs=options.duration||400;var durationInFrames=Math.max(1,durationInMs*.06);var previousAnimationId;var frame=0;previousAnimationId=scheduler.next(loop);return{cancel:cancel};function cancel(){scheduler.cancel(previousAnimationId);previousAnimationId=0}function loop(){var t=easing(frame/durationInFrames);frame+=1;setValues(t);if(frame<=durationInFrames){previousAnimationId=scheduler.next(loop);step(source)}else{previousAnimationId=0;setTimeout(function(){done(source)},0)}}function setValues(t){keys.forEach(function(key){source[key]=diff[key]*t+start[key]})}}function noop(){}function getScheduler(scheduler){if(!scheduler){var canRaf=typeof window!=="undefined"&&window.requestAnimationFrame;return canRaf?rafScheduler():timeoutScheduler()}if(typeof scheduler.next!=="function")throw new Error("Scheduler is supposed to have next(cb) function");if(typeof scheduler.cancel!=="function")throw new Error("Scheduler is supposed to have cancel(handle) function");return scheduler}function rafScheduler(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function timeoutScheduler(){return{next:function(cb){return setTimeout(cb,1e3/60)},cancel:function(id){return clearTimeout(id)}}}},{"bezier-easing":8}],8:[function(require,module,exports){var NEWTON_ITERATIONS=4;var NEWTON_MIN_SLOPE=.001;var SUBDIVISION_PRECISION=1e-7;var SUBDIVISION_MAX_ITERATIONS=10;var kSplineTableSize=11;var kSampleStepSize=1/(kSplineTableSize-1);var float32ArraySupported=typeof Float32Array==="function";function A(aA1,aA2){return 1-3*aA2+3*aA1}function B(aA1,aA2){return 3*aA2-6*aA1}function C(aA1){return 3*aA1}function calcBezier(aT,aA1,aA2){return((A(aA1,aA2)*aT+B(aA1,aA2))*aT+C(aA1))*aT}function getSlope(aT,aA1,aA2){return 3*A(aA1,aA2)*aT*aT+2*B(aA1,aA2)*aT+C(aA1)}function binarySubdivide(aX,aA,aB,mX1,mX2){var currentX,currentT,i=0;do{currentT=aA+(aB-aA)/2;currentX=calcBezier(currentT,mX1,mX2)-aX;if(currentX>0){aB=currentT}else{aA=currentT}}while(Math.abs(currentX)>SUBDIVISION_PRECISION&&++i=NEWTON_MIN_SLOPE){return newtonRaphsonIterate(aX,guessForT,mX1,mX2)}else if(initialSlope===0){return guessForT}else{return binarySubdivide(aX,intervalStart,intervalStart+kSampleStepSize,mX1,mX2)}}return function BezierEasing(x){if(mX1===mY1&&mX2===mY2){return x}if(x===0){return 0}if(x===1){return 1}return calcBezier(getTForX(x),mY1,mY2)}}},{}],9:[function(require,module,exports){module.exports=addWheelListener;module.exports.addWheelListener=addWheelListener;module.exports.removeWheelListener=removeWheelListener;var prefix="",_addEventListener,_removeEventListener,onwheel,support;detectEventModel(typeof window!=="undefined"&&window,typeof document!=="undefined"&&document);function addWheelListener(elem,callback,useCapture){_addWheelListener(elem,support,callback,useCapture);if(support=="DOMMouseScroll"){_addWheelListener(elem,"MozMousePixelScroll",callback,useCapture)}}function removeWheelListener(elem,callback,useCapture){_removeWheelListener(elem,support,callback,useCapture);if(support=="DOMMouseScroll"){_removeWheelListener(elem,"MozMousePixelScroll",callback,useCapture)}}function _addWheelListener(elem,eventName,callback,useCapture){elem[_addEventListener](prefix+eventName,support=="wheel"?callback:function(originalEvent){!originalEvent&&(originalEvent=window.event);var event={originalEvent:originalEvent,target:originalEvent.target||originalEvent.srcElement,type:"wheel",deltaMode:originalEvent.type=="MozMousePixelScroll"?0:1,deltaX:0,delatZ:0,clientX:originalEvent.clientX,clientY:originalEvent.clientY,preventDefault:function(){originalEvent.preventDefault?originalEvent.preventDefault():originalEvent.returnValue=false},stopPropagation:function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation()},stopImmediatePropagation:function(){if(originalEvent.stopImmediatePropagation)originalEvent.stopImmediatePropagation()}};if(support=="mousewheel"){event.deltaY=-1/40*originalEvent.wheelDelta;originalEvent.wheelDeltaX&&(event.deltaX=-1/40*originalEvent.wheelDeltaX)}else{event.deltaY=originalEvent.detail}return callback(event)},useCapture||false)}function _removeWheelListener(elem,eventName,callback,useCapture){elem[_removeEventListener](prefix+eventName,callback,useCapture||false)}function detectEventModel(window,document){if(window&&window.addEventListener){_addEventListener="addEventListener";_removeEventListener="removeEventListener"}else{_addEventListener="attachEvent";_removeEventListener="detachEvent";prefix="on"}if(document){support="onwheel"in document.createElement("div")?"wheel":document.onmousewheel!==undefined?"mousewheel":"DOMMouseScroll"}else{support="wheel"}}},{}]},{},[1])(1)}); \ No newline at end of file diff --git a/app/dataviz/mark-twain-portrait/lib/query-state.min.js b/app/dataviz/mark-twain-portrait/lib/query-state.min.js new file mode 100644 index 00000000..2032fd48 --- /dev/null +++ b/app/dataviz/mark-twain-portrait/lib/query-state.min.js @@ -0,0 +1 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.queryState=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1){fireArguments=Array.prototype.splice.call(arguments,1)}for(var i=0;i bundle.js", + "watch": "watchify --debug index.js -o bundle.js -v", + "server": "http-server -c-1 -p 8082", + "dev": "concurrently --kill-others \"npm run watch\" \"npm run server\"" + } +} diff --git a/app/dataviz/package-manager/app.js b/app/dataviz/package-manager/app.js new file mode 100644 index 00000000..a3f10821 --- /dev/null +++ b/app/dataviz/package-manager/app.js @@ -0,0 +1,64 @@ +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n(181);var o=n(2),i=r(o),a=n(52),s=n(177),u=r(s),l=n(125),c=r(l),h=n(221);(0,a.render)(i.default.createElement(h.Router,{history:h.browserHistory},i.default.createElement(h.Route,{path:"/",component:u.default}),i.default.createElement(h.Route,{path:"/galaxy/:name",component:c.default})),document.getElementById("app"))},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(h===clearTimeout)return clearTimeout(e);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(e);try{return h(e)}catch(t){try{return h.call(null,e)}catch(t){return h.call(this,e)}}}function a(){m&&d&&(m=!1,d.length?f=d.concat(f):v=-1,f.length&&s())}function s(){if(!m){var e=o(a);m=!0;for(var t=f.length;t;){for(d=f,f=[];++v1)for(var n=1;n2?n-2:0),o=2;o when using tables, nesting tags like
,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",n,ee.getID(e)):V(!1)},_mountImageIntoNode:function(e,n,i,a){if(!n||n.nodeType!==W&&n.nodeType!==G&&n.nodeType!==q?"production"!==t.env.NODE_ENV?V(!1,"mountComponentIntoNode(...): Target container is not valid."):V(!1):void 0,i){var s=o(n);if(A.canReuseMarkup(e,s))return;var u=s.getAttribute(A.CHECKSUM_ATTR_NAME);s.removeAttribute(A.CHECKSUM_ATTR_NAME);var l=s.outerHTML;s.setAttribute(A.CHECKSUM_ATTR_NAME,u);var c=e;if("production"!==t.env.NODE_ENV){var h;n.nodeType===W?(h=document.createElement("div"),h.innerHTML=e,c=h.innerHTML):(h=document.createElement("iframe"),document.body.appendChild(h),h.contentDocument.write(e),c=h.contentDocument.documentElement.outerHTML,document.body.removeChild(h))}var p=r(c,l),d=" (client) "+c.substring(p-20,p+20)+"\n (server) "+l.substring(p-20,p+20);n.nodeType===G?"production"!==t.env.NODE_ENV?V(!1,"You're trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s",d):V(!1):void 0,"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?j(!1,"React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:\n%s",d):void 0)}if(n.nodeType===G?"production"!==t.env.NODE_ENV?V(!1,"You're trying to render a component to the document but you didn't use server rendering. We can't do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering."):V(!1):void 0,a.useCreateElement){for(;n.lastChild;)n.removeChild(n.lastChild);n.appendChild(e)}else I(n,e)},ownerDocumentContextKey:X,getReactRootID:i,getID:a,setID:u,getNode:l,getNodeFromInstance:c,isValid:h,purgeID:p};N.measureMethods(ee,"ReactMount",{_renderNewRootComponent:"_renderNewRootComponent",_mountImageIntoNode:"_mountImageIntoNode"}),e.exports=ee}).call(t,n(1))},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return a.default.createElement("div",{className:"container-fluid row"},a.default.createElement("div",{className:"hidden-xs"},a.default.createElement("div",{className:"col-xs-6"},a.default.createElement("a",{href:t,target:"_blank"},a.default.createElement("h4",{title:n},n))),a.default.createElement("div",{className:"col-xs-3"},a.default.createElement("div",{className:"row"},a.default.createElement("h2",{id:e.id,className:"in-degree"},e.inDegree)),a.default.createElement("div",{className:"row small"},e.inDegreeLabel)),a.default.createElement("div",{className:"col-xs-3"},a.default.createElement("div",{className:"row"},a.default.createElement("h2",{id:e.id,className:"out-degree"},e.outDegree)),a.default.createElement("div",{className:"row small"},e.outDegreeLabel))),a.default.createElement("div",{className:"visible-xs-block"},a.default.createElement("div",{className:"row info-block"},a.default.createElement("div",{className:"col-xs-6 no-overflow"},a.default.createElement("a",{href:t,target:"_blank"},n)),a.default.createElement("div",{id:e.id,className:"in-degree col-xs-3"},e.inDegree),a.default.createElement("div",{id:e.id,className:"out-degree col-xs-3"},e.outDegree))))}Object.defineProperty(t,"__esModule",{value:!0});var i=n(2),a=r(i);t.default=o,e.exports=t.default},function(e,t,n){(function(t){"use strict";var r=n(20),o=n(5),i=n(45),a="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,s={key:!0,ref:!0,__self:!0,__source:!0},u=function(e,n,r,o,s,u,l){var c={$$typeof:a,type:e,key:n,ref:r,props:l,_owner:u};return"production"!==t.env.NODE_ENV&&(c._store={},i?(Object.defineProperty(c._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(c,"_self",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.defineProperty(c,"_source",{configurable:!1,enumerable:!1,writable:!1,value:s})):(c._store.validated=!1,c._self=o,c._source=s),Object.freeze(c.props),Object.freeze(c)),c};u.createElement=function(e,t,n){var o,i={},a=null,l=null,c=null,h=null;if(null!=t){l=void 0===t.ref?null:t.ref,a=void 0===t.key?null:""+t.key,c=void 0===t.__self?null:t.__self,h=void 0===t.__source?null:t.__source;for(o in t)t.hasOwnProperty(o)&&!s.hasOwnProperty(o)&&(i[o]=t[o])}var p=arguments.length-2;if(1===p)i.children=n;else if(p>1){for(var d=Array(p),f=0;f1){for(var m=Array(f),v=0;v2?r-2:0);for(var o=2;o1&&(o=Array.prototype.splice.call(arguments,1));for(var i=0;i should not have a "'+t+'" prop')}t.__esModule=!0,t.falsy=r;var o=n(2),i=o.PropTypes.func,a=o.PropTypes.object,s=o.PropTypes.arrayOf,u=o.PropTypes.oneOfType,l=o.PropTypes.element,c=o.PropTypes.shape,h=o.PropTypes.string,p=c({listen:i.isRequired,pushState:i.isRequired,replaceState:i.isRequired,go:i.isRequired});t.history=p;var d=c({pathname:h.isRequired,search:h.isRequired,state:a,action:h.isRequired,key:h});t.location=d;var f=u([i,h]);t.component=f;var m=u([f,a]);t.components=m;var v=u([a,l]);t.route=v;var g=u([v,s(v)]);t.routes=g,t.default={falsy:r,history:p,location:d,component:f,components:m,route:v}},function(e,t,n){(function(t){"use strict";function r(e,t){return(e&t)===t}var o=n(3),i={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_SIDE_EFFECTS:4,HAS_BOOLEAN_VALUE:8,HAS_NUMERIC_VALUE:16,HAS_POSITIVE_NUMERIC_VALUE:48,HAS_OVERLOADED_BOOLEAN_VALUE:64,injectDOMPropertyConfig:function(e){var n=i,a=e.Properties||{},u=e.DOMAttributeNamespaces||{},l=e.DOMAttributeNames||{},c=e.DOMPropertyNames||{},h=e.DOMMutationMethods||{}; +e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var p in a){s.properties.hasOwnProperty(p)?"production"!==t.env.NODE_ENV?o(!1,"injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.",p):o(!1):void 0;var d=p.toLowerCase(),f=a[p],m={attributeName:d,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseAttribute:r(f,n.MUST_USE_ATTRIBUTE),mustUseProperty:r(f,n.MUST_USE_PROPERTY),hasSideEffects:r(f,n.HAS_SIDE_EFFECTS),hasBooleanValue:r(f,n.HAS_BOOLEAN_VALUE),hasNumericValue:r(f,n.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(f,n.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(f,n.HAS_OVERLOADED_BOOLEAN_VALUE)};if(m.mustUseAttribute&&m.mustUseProperty?"production"!==t.env.NODE_ENV?o(!1,"DOMProperty: Cannot require using both attribute and property: %s",p):o(!1):void 0,!m.mustUseProperty&&m.hasSideEffects?"production"!==t.env.NODE_ENV?o(!1,"DOMProperty: Properties that have side effects must use property: %s",p):o(!1):void 0,m.hasBooleanValue+m.hasNumericValue+m.hasOverloadedBooleanValue<=1?void 0:"production"!==t.env.NODE_ENV?o(!1,"DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s",p):o(!1),"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[d]=p),l.hasOwnProperty(p)){var v=l[p];m.attributeName=v,"production"!==t.env.NODE_ENV&&(s.getPossibleStandardName[v]=p)}u.hasOwnProperty(p)&&(m.attributeNamespace=u[p]),c.hasOwnProperty(p)&&(m.propertyName=c[p]),h.hasOwnProperty(p)&&(m.mutationMethod=h[p]),s.properties[p]=m}}},a={},s={ID_ATTRIBUTE_NAME:"data-reactid",properties:{},getPossibleStandardName:"production"!==t.env.NODE_ENV?{}:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t1){var t=e.indexOf(d,1);return t>-1?e.substr(0,t):e}return null},traverseEnterLeave:function(e,t,n,r,o){var i=l(e,t);i!==e&&c(e,i,n,r,!1,!0),i!==t&&c(i,t,n,o,!0,!1)},traverseTwoPhase:function(e,t,n){e&&(c("",e,t,n,!0,!1),c(e,"",t,n,!1,!0))},traverseTwoPhaseSkipTarget:function(e,t,n){e&&(c("",e,t,n,!0,!0),c(e,"",t,n,!0,!0))},traverseAncestors:function(e,t,n){c("",e,t,n,!0,!1)},getFirstCommonAncestorID:l,_getNextDescendantID:u,isAncestorIDOf:a,SEPARATOR:d};e.exports=v}).call(t,n(1))},function(e,t,n){var r=r||{},o={REVISION:"71"};e.exports=o,void 0===Math.sign&&(Math.sign=function(e){return e<0?-1:e>0?1:+e}),o.log=function(){console.log.apply(console,arguments)},o.warn=function(){console.warn.apply(console,arguments)},o.error=function(){console.error.apply(console,arguments)},o.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},o.CullFaceNone=0,o.CullFaceBack=1,o.CullFaceFront=2,o.CullFaceFrontBack=3,o.FrontFaceDirectionCW=0,o.FrontFaceDirectionCCW=1,o.BasicShadowMap=0,o.PCFShadowMap=1,o.PCFSoftShadowMap=2,o.FrontSide=0,o.BackSide=1,o.DoubleSide=2,o.NoShading=0,o.FlatShading=1,o.SmoothShading=2,o.NoColors=0,o.FaceColors=1,o.VertexColors=2,o.NoBlending=0,o.NormalBlending=1,o.AdditiveBlending=2,o.SubtractiveBlending=3,o.MultiplyBlending=4,o.CustomBlending=5,o.AddEquation=100,o.SubtractEquation=101,o.ReverseSubtractEquation=102,o.MinEquation=103,o.MaxEquation=104,o.ZeroFactor=200,o.OneFactor=201,o.SrcColorFactor=202,o.OneMinusSrcColorFactor=203,o.SrcAlphaFactor=204,o.OneMinusSrcAlphaFactor=205,o.DstAlphaFactor=206,o.OneMinusDstAlphaFactor=207,o.DstColorFactor=208,o.OneMinusDstColorFactor=209,o.SrcAlphaSaturateFactor=210,o.MultiplyOperation=0,o.MixOperation=1,o.AddOperation=2,o.UVMapping=300,o.CubeReflectionMapping=301,o.CubeRefractionMapping=302,o.EquirectangularReflectionMapping=303,o.EquirectangularRefractionMapping=304,o.SphericalReflectionMapping=305,o.RepeatWrapping=1e3,o.ClampToEdgeWrapping=1001,o.MirroredRepeatWrapping=1002,o.NearestFilter=1003,o.NearestMipMapNearestFilter=1004,o.NearestMipMapLinearFilter=1005,o.LinearFilter=1006,o.LinearMipMapNearestFilter=1007,o.LinearMipMapLinearFilter=1008,o.UnsignedByteType=1009,o.ByteType=1010,o.ShortType=1011,o.UnsignedShortType=1012,o.IntType=1013,o.UnsignedIntType=1014,o.FloatType=1015,o.HalfFloatType=1025,o.UnsignedShort4444Type=1016,o.UnsignedShort5551Type=1017,o.UnsignedShort565Type=1018,o.AlphaFormat=1019,o.RGBFormat=1020,o.RGBAFormat=1021,o.LuminanceFormat=1022,o.LuminanceAlphaFormat=1023,o.RGBEFormat=o.RGBAFormat,o.RGB_S3TC_DXT1_Format=2001,o.RGBA_S3TC_DXT1_Format=2002,o.RGBA_S3TC_DXT3_Format=2003,o.RGBA_S3TC_DXT5_Format=2004,o.RGB_PVRTC_4BPPV1_Format=2100,o.RGB_PVRTC_2BPPV1_Format=2101,o.RGBA_PVRTC_4BPPV1_Format=2102,o.RGBA_PVRTC_2BPPV1_Format=2103,o.Projector=function(){o.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(e,t){o.warn("THREE.Projector: .projectVector() is now vector.project()."),e.project(t)},this.unprojectVector=function(e,t){o.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),e.unproject(t)},this.pickingRay=function(e,t){o.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}},o.CanvasRenderer=function(){o.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElement("canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}},o.Color=function(e){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(e)},o.Color.prototype={constructor:o.Color,r:1,g:1,b:1,set:function(e){return e instanceof o.Color?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,n){return this.r=e,this.g=t,this.b=n,this},setHSL:function(e,t,n){if(0===t)this.r=this.g=this.b=n;else{var r=function(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e},o=n<=.5?n*(1+t):n+t-n*t,i=2*n-o;this.r=r(i,o,e+1/3),this.g=r(i,o,e),this.b=r(i,o,e-1/3)}return this},setStyle:function(e){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(e)){var t=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(e);return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(e)){var t=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(e);return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(e)){var t=/^\#([0-9a-f]{6})$/i.exec(e);return this.setHex(parseInt(t[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(e)){var t=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return this.setHex(parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3],16)),this}if(/^(\w+)$/i.test(e))return this.setHex(o.ColorKeywords[e]),this},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var n=t>0?1/t:1;return this.r=Math.pow(e.r,n),this.g=Math.pow(e.g,n),this.b=Math.pow(e.b,n),this},convertGammaToLinear:function(){var e=this.r,t=this.g,n=this.b;return this.r=e*e,this.g=t*t,this.b=n*n,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,n,r=e||{h:0,s:0,l:0},o=this.r,i=this.g,a=this.b,s=Math.max(o,i,a),u=Math.min(o,i,a),l=(u+s)/2;if(u===s)t=0,n=0;else{var c=s-u;switch(n=l<=.5?c/(s+u):c/(2-s-u),s){case o:t=(i-a)/c+(i0?(t=.5/Math.sqrt(p+1),this._w=.25/t,this._x=(c-u)*t,this._y=(i-l)*t,this._z=(a-o)*t):r>s&&r>h?(t=2*Math.sqrt(1+r-s-h),this._w=(c-u)/t,this._x=.25*t,this._y=(o+a)/t,this._z=(i+l)/t):s>h?(t=2*Math.sqrt(1+s-r-h),this._w=(i-l)/t,this._x=(o+a)/t,this._y=.25*t,this._z=(u+c)/t):(t=2*Math.sqrt(1+h-r-s),this._w=(a-o)/t,this._x=(i+l)/t,this._y=(u+c)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(){var e,t,n=1e-6;return function(r,i){return void 0===e&&(e=new o.Vector3),t=r.dot(i)+1,tMath.abs(r.z)?e.set(-r.y,r.x,0):e.set(0,-r.z,r.y)):e.crossVectors(r,i),this._x=e.x,this._y=e.y,this._z=e.z,this._w=t,this.normalize(),this}}(),inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(o.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var n=e._x,r=e._y,o=e._z,i=e._w,a=t._x,s=t._y,u=t._z,l=t._w;return this._x=n*l+i*a+r*u-o*s,this._y=r*l+i*s+o*a-n*u,this._z=o*l+i*u+n*s-r*a,this._w=i*l-n*a-r*s-o*u,this.onChangeCallback(),this},multiplyVector3:function(e){return o.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var n=this._x,r=this._y,o=this._z,i=this._w,a=i*e._w+n*e._x+r*e._y+o*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=i,this._x=n,this._y=r,this._z=o,this;var s=Math.acos(a),u=Math.sqrt(1-a*a);if(Math.abs(u)<.001)return this._w=.5*(i+this._w),this._x=.5*(n+this._x),this._y=.5*(r+this._y),this._z=.5*(o+this._z),this;var l=Math.sin((1-t)*s)/u,c=Math.sin(t*s)/u;return this._w=i*l+this._w*c,this._x=n*l+this._x*c,this._y=r*l+this._y*c,this._z=o*l+this._z*c,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new o.Quaternion(this._x,this._y,this._z,this._w)}},o.Quaternion.slerp=function(e,t,n,r){return n.copy(e).slerp(t,r)},o.Vector2=function(e,t){this.x=e||0,this.y=t||0},o.Vector2.prototype={constructor:o.Vector2,set:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(o.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},sub:function(e,t){return void 0!==t?(o.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t}else this.x=0,this.y=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this},clampScalar:function(){var e,t;return function(n,r){return void 0===e&&(e=new o.Vector2,t=new o.Vector2),e.set(n,n),t.set(r,r),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y;return t*t+n*n},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromAttribute:function(e,t,n){return void 0===n&&(n=0),t=t*e.itemSize+n,this.x=e.array[t],this.y=e.array[t+1],this},clone:function(){return new o.Vector2(this.x,this.y)}},o.Vector3=function(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0},o.Vector3.prototype={constructor:o.Vector3,set:function(e,t,n){return this.x=e,this.y=t,this.z=n,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(o.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},sub:function(e,t){return void 0!==t?(o.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(o.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(){var e;return function(t){return t instanceof o.Euler==!1&&o.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===e&&(e=new o.Quaternion),this.applyQuaternion(e.setFromEuler(t)),this}}(),applyAxisAngle:function(){var e;return function(t,n){return void 0===e&&(e=new o.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,n)),this}}(),applyMatrix3:function(e){var t=this.x,n=this.y,r=this.z,o=e.elements;return this.x=o[0]*t+o[3]*n+o[6]*r,this.y=o[1]*t+o[4]*n+o[7]*r,this.z=o[2]*t+o[5]*n+o[8]*r,this},applyMatrix4:function(e){var t=this.x,n=this.y,r=this.z,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*r+o[12],this.y=o[1]*t+o[5]*n+o[9]*r+o[13],this.z=o[2]*t+o[6]*n+o[10]*r+o[14],this},applyProjection:function(e){var t=this.x,n=this.y,r=this.z,o=e.elements,i=1/(o[3]*t+o[7]*n+o[11]*r+o[15]);return this.x=(o[0]*t+o[4]*n+o[8]*r+o[12])*i,this.y=(o[1]*t+o[5]*n+o[9]*r+o[13])*i,this.z=(o[2]*t+o[6]*n+o[10]*r+o[14])*i,this},applyQuaternion:function(e){var t=this.x,n=this.y,r=this.z,o=e.x,i=e.y,a=e.z,s=e.w,u=s*t+i*r-a*n,l=s*n+a*t-o*r,c=s*r+o*n-i*t,h=-o*t-i*n-a*r;return this.x=u*s+h*-o+l*-a-c*-i,this.y=l*s+h*-i+c*-o-u*-a,this.z=c*s+h*-a+u*-i-l*-o,this},project:function(){var e;return function(t){return void 0===e&&(e=new o.Matrix4),e.multiplyMatrices(t.projectionMatrix,e.getInverse(t.matrixWorld)),this.applyProjection(e)}}(),unproject:function(){var e;return function(t){return void 0===e&&(e=new o.Matrix4),e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyProjection(e)}}(),transformDirection:function(e){var t=this.x,n=this.y,r=this.z,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*r,this.y=o[1]*t+o[5]*n+o[9]*r,this.z=o[2]*t+o[6]*n+o[10]*r,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(){var e,t;return function(n,r){return void 0===e&&(e=new o.Vector3,t=new o.Vector3),e.set(n,n,n),t.set(r,r,r),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e),this},cross:function(e,t){if(void 0!==t)return o.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var n=this.x,r=this.y,i=this.z;return this.x=r*e.z-i*e.y,this.y=i*e.x-n*e.z,this.z=n*e.y-r*e.x,this},crossVectors:function(e,t){var n=e.x,r=e.y,o=e.z,i=t.x,a=t.y,s=t.z;return this.x=r*s-o*a,this.y=o*i-n*s,this.z=n*a-r*i,this},projectOnVector:function(){var e,t;return function(n){return void 0===e&&(e=new o.Vector3),e.copy(n).normalize(),t=this.dot(e),this.copy(e).multiplyScalar(t)}}(),projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new o.Vector3),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new o.Vector3),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/(this.length()*e.length());return Math.acos(o.Math.clamp(t,-1,1))},distanceTo:function(e){ +return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r},setEulerFromRotationMatrix:function(e,t){o.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){o.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return o.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return o.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return o.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),n=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),r=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=n,this.z=r,this},setFromMatrixColumn:function(e,t){var n=4*e,r=t.elements;return this.x=r[n],this.y=r[n+1],this.z=r[n+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,n){return void 0===n&&(n=0),t=t*e.itemSize+n,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this},clone:function(){return new o.Vector3(this.x,this.y,this.z)}},o.Vector4=function(e,t,n,r){this.x=e||0,this.y=t||0,this.z=n||0,this.w=void 0!==r?r:1},o.Vector4.prototype={constructor:o.Vector4,set:function(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(o.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},sub:function(e,t){return void 0!==t?(o.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,n=this.y,r=this.z,o=this.w,i=e.elements;return this.x=i[0]*t+i[4]*n+i[8]*r+i[12]*o,this.y=i[1]*t+i[5]*n+i[9]*r+i[13]*o,this.z=i[2]*t+i[6]*n+i[10]*r+i[14]*o,this.w=i[3]*t+i[7]*n+i[11]*r+i[15]*o,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t,this.w*=t}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,n,r,o,i=.01,a=.1,s=e.elements,u=s[0],l=s[4],c=s[8],h=s[1],p=s[5],d=s[9],f=s[2],m=s[6],v=s[10];if(Math.abs(l-h)y&&g>_?g_?ye.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this.w>e.w&&(this.w=e.w),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this.wt.w&&(this.w=t.w),this},clampScalar:function(){var e,t;return function(n,r){return void 0===e&&(e=new o.Vector4,t=new o.Vector4),e.set(n,n,n,n),t.set(r,r,r,r),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,n){return this.subVectors(t,e).multiplyScalar(n).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromAttribute:function(e,t,n){return void 0===n&&(n=0),t=t*e.itemSize+n,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this.w=e.array[t+3],this},clone:function(){return new o.Vector4(this.x,this.y,this.z,this.w)}},o.Euler=function(e,t,n,r){this._x=e||0,this._y=t||0,this._z=n||0,this._order=r||o.Euler.DefaultOrder},o.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],o.Euler.DefaultOrder="XYZ",o.Euler.prototype={constructor:o.Euler,_x:0,_y:0,_z:0,_order:o.Euler.DefaultOrder,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get order(){return this._order},set order(e){this._order=e,this.onChangeCallback()},set:function(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._order=r||this._order,this.onChangeCallback(),this},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,n){var r=o.Math.clamp,i=e.elements,a=i[0],s=i[4],u=i[8],l=i[1],c=i[5],h=i[9],p=i[2],d=i[6],f=i[10];return t=t||this._order,"XYZ"===t?(this._y=Math.asin(r(u,-1,1)),Math.abs(u)<.99999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-s,a)):(this._x=Math.atan2(d,c),this._z=0)):"YXZ"===t?(this._x=Math.asin(-r(h,-1,1)),Math.abs(h)<.99999?(this._y=Math.atan2(u,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-p,a),this._z=0)):"ZXY"===t?(this._x=Math.asin(r(d,-1,1)),Math.abs(d)<.99999?(this._y=Math.atan2(-p,f),this._z=Math.atan2(-s,c)):(this._y=0,this._z=Math.atan2(l,a))):"ZYX"===t?(this._y=Math.asin(-r(p,-1,1)),Math.abs(p)<.99999?(this._x=Math.atan2(d,f),this._z=Math.atan2(l,a)):(this._x=0,this._z=Math.atan2(-s,c))):"YZX"===t?(this._z=Math.asin(r(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-p,a)):(this._x=0,this._y=Math.atan2(u,f))):"XZY"===t?(this._z=Math.asin(-r(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(d,c),this._y=Math.atan2(u,a)):(this._x=Math.atan2(-h,f),this._y=0)):o.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,n!==!1&&this.onChangeCallback(),this},setFromQuaternion:function(){var e;return function(t,n,r){return void 0===e&&(e=new o.Matrix4),e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,n,r),this}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:function(){var e=new o.Quaternion;return function(t){e.setFromEuler(this),this.setFromQuaternion(e,t)}}(),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new o.Vector3(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new o.Euler(this._x,this._y,this._z,this._order)}},o.Line3=function(e,t){this.start=void 0!==e?e:new o.Vector3,this.end=void 0!==t?t:new o.Vector3},o.Line3.prototype={constructor:o.Line3,set:function(e,t){return this.start.copy(e),this.end.copy(t),this},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},center:function(e){var t=e||new o.Vector3;return t.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){var t=e||new o.Vector3;return t.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var n=t||new o.Vector3;return this.delta(n).multiplyScalar(e).add(this.start)},closestPointToPointParameter:function(){var e=new o.Vector3,t=new o.Vector3;return function(n,r){e.subVectors(n,this.start),t.subVectors(this.end,this.start);var i=t.dot(t),a=t.dot(e),s=a/i;return r&&(s=o.Math.clamp(s,0,1)),s}}(),closestPointToPoint:function(e,t,n){var r=this.closestPointToPointParameter(e,t),i=n||new o.Vector3;return this.delta(i).multiplyScalar(r).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)},clone:function(){return(new o.Line3).copy(this)}},o.Box2=function(e,t){this.min=void 0!==e?e:new o.Vector2(1/0,1/0),this.max=void 0!==t?t:new o.Vector2(-(1/0),-(1/0))},o.Box2.prototype={constructor:o.Box2,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,n=e.length;tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){var n=t||new o.Vector2;return n.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){var n=t||new o.Vector2;return n.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new o.Vector2;return function(t){var n=e.copy(t).clamp(this.min,this.max);return n.sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new o.Box2).copy(this)}},o.Box3=function(e,t){this.min=void 0!==e?e:new o.Vector3(1/0,1/0,1/0),this.max=void 0!==t?t:new o.Vector3(-(1/0),-(1/0),-(1/0))},o.Box3.prototype={constructor:o.Box3,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){var n=t||new o.Vector3;return n.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},clampPoint:function(e,t){var n=t||new o.Vector3;return n.copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new o.Vector3;return function(t){var n=e.copy(t).clamp(this.min,this.max);return n.sub(t).length()}}(),getBoundingSphere:function(){var e=new o.Vector3;return function(t){var n=t||new o.Sphere;return n.center=this.center(),n.radius=.5*this.size(e).length(),n}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:function(){var e=[new o.Vector3,new o.Vector3,new o.Vector3,new o.Vector3,new o.Vector3,new o.Vector3,new o.Vector3,new o.Vector3];return function(t){return e[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),e[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),e[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),e[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),e[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),e[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),e[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),e[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.makeEmpty(),this.setFromPoints(e),this}}(),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new o.Box3).copy(this)}},o.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&o.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},o.Matrix3.prototype={constructor:o.Matrix3,set:function(e,t,n,r,o,i,a,s,u){var l=this.elements;return l[0]=e,l[3]=t,l[6]=n,l[1]=r,l[4]=o,l[7]=i,l[2]=a,l[5]=s,l[8]=u,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]),this},multiplyVector3:function(e){return o.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(e){return o.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new o.Vector3;return function(t,n,r){void 0===n&&(n=0),void 0===r&&(r=t.length);for(var o=0,i=n;o0&&o.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},o.Matrix4.prototype={constructor:o.Matrix4,set:function(e,t,n,r,o,i,a,s,u,l,c,h,p,d,f,m){var v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=r,v[1]=o,v[5]=i,v[9]=a,v[13]=s,v[2]=u,v[6]=l,v[10]=c,v[14]=h,v[3]=p,v[7]=d,v[11]=f,v[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},extractPosition:function(e){return o.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},copyPosition:function(e){var t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this},extractBasis:function(e,t,n){var r=this.elements;return e.set(r[0],r[1],r[2]),t.set(r[4],r[5],r[6]),n.set(r[8],r[9],r[10]),this},makeBasis:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this},extractRotation:function(){var e=new o.Vector3;return function(t){var n=this.elements,r=t.elements,o=1/e.set(r[0],r[1],r[2]).length(),i=1/e.set(r[4],r[5],r[6]).length(),a=1/e.set(r[8],r[9],r[10]).length();return n[0]=r[0]*o,n[1]=r[1]*o,n[2]=r[2]*o,n[4]=r[4]*i,n[5]=r[5]*i,n[6]=r[6]*i,n[8]=r[8]*a,n[9]=r[9]*a,n[10]=r[10]*a,this}}(),makeRotationFromEuler:function(e){e instanceof o.Euler==!1&&o.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,n=e.x,r=e.y,i=e.z,a=Math.cos(n),s=Math.sin(n),u=Math.cos(r),l=Math.sin(r),c=Math.cos(i),h=Math.sin(i);if("XYZ"===e.order){var p=a*c,d=a*h,f=s*c,m=s*h;t[0]=u*c,t[4]=-u*h,t[8]=l,t[1]=d+f*l,t[5]=p-m*l,t[9]=-s*u,t[2]=m-p*l,t[6]=f+d*l,t[10]=a*u}else if("YXZ"===e.order){var v=u*c,g=u*h,y=l*c,_=l*h;t[0]=v+_*s,t[4]=y*s-g,t[8]=a*l,t[1]=a*h,t[5]=a*c,t[9]=-s,t[2]=g*s-y,t[6]=_+v*s,t[10]=a*u}else if("ZXY"===e.order){var v=u*c,g=u*h,y=l*c,_=l*h;t[0]=v-_*s,t[4]=-a*h,t[8]=y+g*s,t[1]=g+y*s,t[5]=a*c,t[9]=_-v*s,t[2]=-a*l,t[6]=s,t[10]=a*u}else if("ZYX"===e.order){var p=a*c,d=a*h,f=s*c,m=s*h;t[0]=u*c,t[4]=f*l-d,t[8]=p*l+m,t[1]=u*h,t[5]=m*l+p,t[9]=d*l-f,t[2]=-l,t[6]=s*u,t[10]=a*u}else if("YZX"===e.order){var b=a*u,x=a*l,w=s*u,E=s*l;t[0]=u*c,t[4]=E-b*h,t[8]=w*h+x,t[1]=h,t[5]=a*c,t[9]=-s*c,t[2]=-l*c,t[6]=x*h+w,t[10]=b-E*h}else if("XZY"===e.order){var b=a*u,x=a*l,w=s*u,E=s*l;t[0]=u*c,t[4]=-h,t[8]=l*c,t[1]=b*h+E,t[5]=a*c,t[9]=x*h-w,t[2]=w*h-x,t[6]=s*c,t[10]=E*h+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},setRotationFromQuaternion:function(e){return o.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},makeRotationFromQuaternion:function(e){var t=this.elements,n=e.x,r=e.y,o=e.z,i=e.w,a=n+n,s=r+r,u=o+o,l=n*a,c=n*s,h=n*u,p=r*s,d=r*u,f=o*u,m=i*a,v=i*s,g=i*u;return t[0]=1-(p+f),t[4]=c-g,t[8]=h+v,t[1]=c+g,t[5]=1-(l+f),t[9]=d-m,t[2]=h-v,t[6]=d+m,t[10]=1-(l+p),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:function(){var e=new o.Vector3,t=new o.Vector3,n=new o.Vector3;return function(r,o,i){var a=this.elements;return n.subVectors(r,o).normalize(),0===n.length()&&(n.z=1),e.crossVectors(i,n).normalize(),0===e.length()&&(n.x+=1e-4,e.crossVectors(i,n).normalize()),t.crossVectors(n,e),a[0]=e.x,a[4]=t.x,a[8]=n.x,a[1]=e.y,a[5]=t.y,a[9]=n.y,a[2]=e.z,a[6]=t.z,a[10]=n.z,this}}(),multiply:function(e,t){return void 0!==t?(o.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var n=e.elements,r=t.elements,o=this.elements,i=n[0],a=n[4],s=n[8],u=n[12],l=n[1],c=n[5],h=n[9],p=n[13],d=n[2],f=n[6],m=n[10],v=n[14],g=n[3],y=n[7],_=n[11],b=n[15],x=r[0],w=r[4],E=r[8],M=r[12],C=r[1],S=r[5],T=r[9],A=r[13],N=r[2],P=r[6],R=r[10],D=r[14],O=r[3],L=r[7],k=r[11],F=r[15];return o[0]=i*x+a*C+s*N+u*O,o[4]=i*w+a*S+s*P+u*L,o[8]=i*E+a*T+s*R+u*k,o[12]=i*M+a*A+s*D+u*F,o[1]=l*x+c*C+h*N+p*O,o[5]=l*w+c*S+h*P+p*L,o[9]=l*E+c*T+h*R+p*k,o[13]=l*M+c*A+h*D+p*F,o[2]=d*x+f*C+m*N+v*O,o[6]=d*w+f*S+m*P+v*L,o[10]=d*E+f*T+m*R+v*k,o[14]=d*M+f*A+m*D+v*F,o[3]=g*x+y*C+_*N+b*O,o[7]=g*w+y*S+_*P+b*L,o[11]=g*E+y*T+_*R+b*k,o[15]=g*M+y*A+_*D+b*F,this},multiplyToArray:function(e,t,n){var r=this.elements;return this.multiplyMatrices(e,t),n[0]=r[0],n[1]=r[1],n[2]=r[2],n[3]=r[3],n[4]=r[4],n[5]=r[5],n[6]=r[6],n[7]=r[7],n[8]=r[8],n[9]=r[9],n[10]=r[10],n[11]=r[11],n[12]=r[12],n[13]=r[13],n[14]=r[14],n[15]=r[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},multiplyVector3:function(e){return o.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),e.applyProjection(this)},multiplyVector4:function(e){return o.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(e){return o.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new o.Vector3;return function(t,n,r){void 0===n&&(n=0),void 0===r&&(r=t.length);for(var o=0,i=n;o0)if(s=p*f-d,u=p*d-f,c=h*v,s>=0)if(u>=-c)if(u<=c){var g=1/v;s*=g,u*=g,l=s*(s+p*u+2*d)+u*(p*s+u+2*f)+m}else u=h,s=Math.max(0,-(p*u+d)),l=-s*s+u*(u+2*f)+m;else u=-h,s=Math.max(0,-(p*u+d)),l=-s*s+u*(u+2*f)+m;else u<=-c?(s=Math.max(0,-(-p*h+d)),u=s>0?-h:Math.min(Math.max(-h,-f),h),l=-s*s+u*(u+2*f)+m):u<=c?(s=0,u=Math.min(Math.max(-h,-f),h),l=u*(u+2*f)+m):(s=Math.max(0,-(p*h+d)),u=s>0?h:Math.min(Math.max(-h,-f),h),l=-s*s+u*(u+2*f)+m);else u=p>0?-h:h,s=Math.max(0,-(p*u+d)),l=-s*s+u*(u+2*f)+m;return i&&i.copy(this.direction).multiplyScalar(s).add(this.origin),a&&a.copy(t).multiplyScalar(u).add(e),l}}(),isIntersectionSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},intersectSphere:function(){var e=new o.Vector3;return function(t,n){e.subVectors(t.center,this.origin);var r=e.dot(this.direction),o=e.dot(e)-r*r,i=t.radius*t.radius;if(o>i)return null;var a=Math.sqrt(i-o),s=r-a,u=r+a;return s<0&&u<0?null:s<0?this.at(u,n):this.at(s,n)}}(),isIntersectionPlane:function(e){var t=e.distanceToPoint(this.origin);if(0===t)return!0;var n=e.normal.dot(this.direction);return n*t<0},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null},intersectPlane:function(e,t){var n=this.distanceToPlane(e);return null===n?null:this.at(n,t)},isIntersectionBox:function(){var e=new o.Vector3;return function(t){return null!==this.intersectBox(t,e)}}(),intersectBox:function(e,t){var n,r,o,i,a,s,u=1/this.direction.x,l=1/this.direction.y,c=1/this.direction.z,h=this.origin;return u>=0?(n=(e.min.x-h.x)*u,r=(e.max.x-h.x)*u):(n=(e.max.x-h.x)*u,r=(e.min.x-h.x)*u),l>=0?(o=(e.min.y-h.y)*l,i=(e.max.y-h.y)*l):(o=(e.max.y-h.y)*l,i=(e.min.y-h.y)*l),n>i||o>r?null:((o>n||n!==n)&&(n=o),(i=0?(a=(e.min.z-h.z)*c,s=(e.max.z-h.z)*c):(a=(e.max.z-h.z)*c,s=(e.min.z-h.z)*c),n>s||a>r?null:((a>n||n!==n)&&(n=a),(s=0?n:r,t)))},intersectTriangle:function(){var e=new o.Vector3,t=new o.Vector3,n=new o.Vector3,r=new o.Vector3;return function(o,i,a,s,u){t.subVectors(i,o),n.subVectors(a,o),r.crossVectors(t,n);var l,c=this.direction.dot(r);if(c>0){if(s)return null;l=1}else{if(!(c<0))return null;l=-1,c=-c}e.subVectors(this.origin,o);var h=l*this.direction.dot(n.crossVectors(e,n));if(h<0)return null;var p=l*this.direction.dot(t.cross(e));if(p<0)return null;if(h+p>c)return null;var d=-l*e.dot(r);return d<0?null:this.at(d/c,u)}}(),applyMatrix4:function(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)},clone:function(){return(new o.Ray).copy(this)}},o.Sphere=function(e,t){this.center=void 0!==e?e:new o.Vector3,this.radius=void 0!==t?t:0},o.Sphere.prototype={constructor:o.Sphere,set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:function(){var e=new o.Box3;return function(t,n){var r=this.center;void 0!==n?r.copy(n):e.setFromPoints(t).center(r);for(var o=0,i=0,a=t.length;ithis.radius*this.radius&&(r.sub(this.center).normalize(),r.multiplyScalar(this.radius).add(this.center)),r},getBoundingBox:function(e){var t=e||new o.Box3;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius},clone:function(){return(new o.Sphere).copy(this)}},o.Frustum=function(e,t,n,r,i,a){this.planes=[void 0!==e?e:new o.Plane,void 0!==t?t:new o.Plane,void 0!==n?n:new o.Plane,void 0!==r?r:new o.Plane,void 0!==i?i:new o.Plane,void 0!==a?a:new o.Plane]},o.Frustum.prototype={constructor:o.Frustum,set:function(e,t,n,r,o,i){var a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(n),a[3].copy(r),a[4].copy(o),a[5].copy(i),this},copy:function(e){for(var t=this.planes,n=0;n<6;n++)t[n].copy(e.planes[n]);return this},setFromMatrix:function(e){var t=this.planes,n=e.elements,r=n[0],o=n[1],i=n[2],a=n[3],s=n[4],u=n[5],l=n[6],c=n[7],h=n[8],p=n[9],d=n[10],f=n[11],m=n[12],v=n[13],g=n[14],y=n[15];return t[0].setComponents(a-r,c-s,f-h,y-m).normalize(),t[1].setComponents(a+r,c+s,f+h,y+m).normalize(),t[2].setComponents(a+o,c+u,f+p,y+v).normalize(),t[3].setComponents(a-o,c-u,f-p,y-v).normalize(),t[4].setComponents(a-i,c-l,f-d,y-g).normalize(),t[5].setComponents(a+i,c+l,f+d,y+g).normalize(),this},intersectsObject:function(){var e=new o.Sphere;return function(t){var n=t.geometry;return null===n.boundingSphere&&n.computeBoundingSphere(),e.copy(n.boundingSphere),e.applyMatrix4(t.matrixWorld),this.intersectsSphere(e)}}(),intersectsSphere:function(e){for(var t=this.planes,n=e.center,r=-e.radius,o=0;o<6;o++){var i=t[o].distanceToPoint(n);if(i0?n.min.x:n.max.x,t.x=i.normal.x>0?n.max.x:n.min.x,e.y=i.normal.y>0?n.min.y:n.max.y,t.y=i.normal.y>0?n.max.y:n.min.y,e.z=i.normal.z>0?n.min.z:n.max.z,t.z=i.normal.z>0?n.max.z:n.min.z;var a=i.distanceToPoint(e),s=i.distanceToPoint(t);if(a<0&&s<0)return!1}return!0}}(),containsPoint:function(e){for(var t=this.planes,n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0},clone:function(){return(new o.Frustum).copy(this)}},o.Plane=function(e,t){this.normal=void 0!==e?e:new o.Vector3(1,0,0),this.constant=void 0!==t?t:0},o.Plane.prototype={constructor:o.Plane,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new o.Vector3,t=new o.Vector3;return function(n,r,o){var i=e.subVectors(o,r).cross(t.subVectors(n,r)).normalize();return this.setFromNormalAndCoplanarPoint(i,n),this}}(),copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return this.orthoPoint(e,t).sub(e).negate()},orthoPoint:function(e,t){var n=this.distanceToPoint(e),r=t||new o.Vector3;return r.copy(this.normal).multiplyScalar(n)},isIntersectionLine:function(e){var t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0},intersectLine:function(){var e=new o.Vector3;return function(t,n){var r=n||new o.Vector3,i=t.delta(e),a=this.normal.dot(i);if(0!=a){var s=-(t.start.dot(this.normal)+this.constant)/a;if(!(s<0||s>1))return r.copy(i).multiplyScalar(s).add(t.start)}else if(0==this.distanceToPoint(t.start))return r.copy(t.start)}}(),coplanarPoint:function(e){var t=e||new o.Vector3;return t.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new o.Vector3,t=new o.Vector3,n=new o.Matrix3;return function(r,o){var i=o||n.getNormalMatrix(r),a=e.copy(this.normal).applyMatrix3(i),s=this.coplanarPoint(t);return s.applyMatrix4(r),this.setFromNormalAndCoplanarPoint(a,s),this}}(),translate:function(e){return this.constant=this.constant-e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant==this.constant},clone:function(){return(new o.Plane).copy(this)}},o.Math={generateUUID:function(){var e,t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=new Array(36),r=0;return function(){for(var o=0;o<36;o++)8==o||13==o||18==o||23==o?n[o]="-":14==o?n[o]="4":(r<=2&&(r=33554432+16777216*Math.random()|0),e=15&r,r>>=4,n[o]=t[19==o?3&e|8:e]);return n.join("")}}(),clamp:function(e,t,n){return en?n:e},clampBottom:function(e,t){return e=n?1:(e=(e-t)/(n-t),e*e*(3-2*e))},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t),e*e*e*(e*(6*e-15)+10))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(e,t){return Math.floor(this.randFloat(e,t))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:function(){var e=Math.PI/180;return function(t){return t*e}}(),radToDeg:function(){var e=180/Math.PI;return function(t){return t*e}}(),isPowerOfTwo:function(e){return 0===(e&e-1)&&0!==e},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e}},o.Spline=function(e){function t(e,t,n,r,o,i,a){var s=.5*(n-e),u=.5*(r-t);return(2*(t-n)+s+u)*a+(-3*(t-n)-2*s-u)*i+s*o+t}this.points=e;var n,r,i,a,s,u,l,c,h,p=[],d={x:0,y:0,z:0};this.initFromArray=function(e){this.points=[];for(var t=0;tthis.points.length-2?this.points.length-1:r+1,p[3]=r>this.points.length-3?this.points.length-1:r+2,u=this.points[p[0]],l=this.points[p[1]],c=this.points[p[2]],h=this.points[p[3]],a=i*i,s=i*a,d.x=t(u.x,l.x,c.x,h.x,i,a,s),d.y=t(u.y,l.y,c.y,h.y,i,a,s),d.z=t(u.z,l.z,c.z,h.z,i,a,s),d},this.getControlPointsArray=function(){var e,t,n=this.points.length,r=[];for(e=0;e0?a.multiplyScalar(1/Math.sqrt(s)):a.set(0,0,0)}}(),o.Triangle.barycoordFromPoint=function(){var e=new o.Vector3,t=new o.Vector3,n=new o.Vector3;return function(r,i,a,s,u){e.subVectors(s,i),t.subVectors(a,i),n.subVectors(r,i);var l=e.dot(e),c=e.dot(t),h=e.dot(n),p=t.dot(t),d=t.dot(n),f=l*p-c*c,m=u||new o.Vector3;if(0==f)return m.set(-2,-1,-1);var v=1/f,g=(p*h-c*d)*v,y=(l*d-c*h)*v;return m.set(1-g-y,y,g)}}(),o.Triangle.containsPoint=function(){var e=new o.Vector3;return function(t,n,r,i){var a=o.Triangle.barycoordFromPoint(t,n,r,i,e);return a.x>=0&&a.y>=0&&a.x+a.y<=1}}(),o.Triangle.prototype={constructor:o.Triangle,set:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this},setFromPointsAndIndices:function(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new o.Vector3,t=new o.Vector3;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){var t=e||new o.Vector3;return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return o.Triangle.normal(this.a,this.b,this.c,e)},plane:function(e){var t=e||new o.Plane;return t.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return o.Triangle.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return o.Triangle.containsPoint(e,this.a,this.b,this.c)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)},clone:function(){return(new o.Triangle).copy(this)}},o.Clock=function(e){this.autoStart=void 0===e||e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},o.Clock.prototype={constructor:o.Clock,start:function(){this.startTime=void 0!==r.performance&&void 0!==r.performance.now?r.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var e=0;if(this.autoStart&&!this.running&&this.start(),this.running){var t=void 0!==r.performance&&void 0!==r.performance.now?r.performance.now():Date.now();e=.001*(t-this.oldTime),this.oldTime=t,this.elapsedTime+=e}return e}},o.EventDispatcher=function(){},o.EventDispatcher.prototype={constructor:o.EventDispatcher,apply:function(e){e.addEventListener=o.EventDispatcher.prototype.addEventListener,e.hasEventListener=o.EventDispatcher.prototype.hasEventListener,e.removeEventListener=o.EventDispatcher.prototype.removeEventListener,e.dispatchEvent=o.EventDispatcher.prototype.dispatchEvent},addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var n=this._listeners;void 0===n[e]&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)},hasEventListener:function(e,t){if(void 0===this._listeners)return!1;var n=this._listeners;return void 0!==n[e]&&n[e].indexOf(t)!==-1},removeEventListener:function(e,t){if(void 0!==this._listeners){var n=this._listeners,r=n[e];if(void 0!==r){var o=r.indexOf(t);o!==-1&&r.splice(o,1)}}},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners,n=t[e.type];if(void 0!==n){e.target=this;for(var r=[],o=n.length,i=0;i1){for(var t=0;t1)for(var t=0;t0){t.children=[];for(var r=0;r0,u=3==r[0].vertexNormals.length,l=new Float32Array(3*r.length*3);this.addAttribute("position",new o.BufferAttribute(l,3));var c=new Float32Array(3*r.length*3);if(this.addAttribute("normal",new o.BufferAttribute(c,3)),a!==o.NoColors){var h=new Float32Array(3*r.length*3);this.addAttribute("color",new o.BufferAttribute(h,3))}if(s===!0){var p=new Float32Array(3*r.length*2);this.addAttribute("uv",new o.BufferAttribute(p,2))}for(var d=0,f=0,m=0;d0?this.offsets:[{start:0,count:f.length,index:0}],v=0,g=m.length;vu.index+e){var _={start:i,count:0,index:a};s.push(_),u=_;for(var b=0;b<6;b+=2){var x=h[b+1];x>-1&&x0&&(e.data.offsets=JSON.parse(JSON.stringify(n))),null!==r&&(e.data.boundingSphere={center:r.center.toArray(),radius:r.radius}),e},clone:function(){var e=new o.BufferGeometry;for(var t in this.attributes){var n=this.attributes[t];e.addAttribute(t,n.clone())}for(var r=0,i=this.offsets.length;r0)for(var h=0;h0&&(e+=t[n].distanceTo(t[n-1])),this.lineDistances[n]=e},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new o.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new o.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(e,t,n){if(e instanceof o.Geometry==!1)return void o.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);var r,i=this.vertices.length,a=this.vertices,s=e.vertices,u=this.faces,l=e.faces,c=this.faceVertexUvs[0],h=e.faceVertexUvs[0];void 0===n&&(n=0),void 0!==t&&(r=(new o.Matrix3).getNormalMatrix(t));for(var p=0,d=s.length;p=0;n--){var v=d[n];for(this.faces.splice(v,1),a=0,s=this.faceVertexUvs.length;a0,w=g.vertexNormals.length>0,E=1!==g.color.r||1!==g.color.g||1!==g.color.b,M=g.vertexColors.length>0,C=0;if(C=e(C,0,0),C=e(C,1,y),C=e(C,2,_),C=e(C,3,b),C=e(C,4,x),C=e(C,5,w),C=e(C,6,E),C=e(C,7,M),c.push(C),c.push(g.a,g.b,g.c),b){var S=this.faceVertexUvs[0][u];c.push(r(S[0]),r(S[1]),r(S[2]))}if(x&&c.push(t(g.normal)),w){var T=g.vertexNormals;c.push(t(T[0]),t(T[1]),t(T[2]))}if(E&&c.push(n(g.color)),M){var A=g.vertexColors;c.push(n(A[0]),n(A[1]),n(A[2]))}}return o.data={},o.data.vertices=s,o.data.normals=h,d.length>0&&(o.data.colors=d),m.length>0&&(o.data.uvs=[m]),o.data.faces=c,o},clone:function(){for(var e=new o.Geometry,t=this.vertices,n=0,r=t.length;n1?e.skinWeights[n+1]:0,u=t>2?e.skinWeights[n+2]:0,l=t>3?e.skinWeights[n+3]:0;a.skinWeights.push(new o.Vector4(i,s,u,l))}if(e.skinIndices)for(var n=0,r=e.skinIndices.length;n1?e.skinIndices[n+1]:0,p=t>2?e.skinIndices[n+2]:0,d=t>3?e.skinIndices[n+3]:0;a.skinIndices.push(new o.Vector4(c,h,p,d))}a.bones=e.bones,a.bones&&a.bones.length>0&&(a.skinWeights.length!==a.skinIndices.length||a.skinIndices.length!==a.vertices.length)&&o.warn("THREE.JSONLoader: When skinning, number of vertices ("+a.vertices.length+"), skinIndices ("+a.skinIndices.length+"), and skinWeights ("+a.skinWeights.length+") should match."),a.animation=e.animation,a.animations=e.animations}function i(t){if(void 0!==e.morphTargets){var n,r,i,s,u,l;for(n=0,r=e.morphTargets.length;n0){var i=new o.LoadingManager(t),a=new o.ImageLoader(i);a.setCrossOrigin(this.crossOrigin);for(var s=function(e){return n.manager.itemStart(e),a.load(e,function(){n.manager.itemEnd(e)})},u=0,l=e.length;us)){var S=t.origin.distanceTo(p);Sr.far||i.push({distance:S,point:h.clone().applyMatrix4(this.matrixWorld),index:w,offsetIndex:y,face:null,faceIndex:null,object:this})}}}else for(var v=f.position.array,w=0;ws)){var S=t.origin.distanceTo(p);Sr.far||i.push({distance:S,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}}else if(u instanceof o.Geometry)for(var T=u.vertices,A=T.length,w=0;ws)){var S=t.origin.distanceTo(p);Sr.far||i.push({distance:S,point:h.clone().applyMatrix4(this.matrixWorld),index:w,face:null,faceIndex:null,object:this})}}}}}(),o.Line.prototype.clone=function(e){return void 0===e&&(e=new o.Line(this.geometry,this.material,this.mode)),o.Object3D.prototype.clone.call(this,e),e},o.Mesh=function(e,t){o.Object3D.call(this),this.type="Mesh",this.geometry=void 0!==e?e:new o.Geometry,this.material=void 0!==t?t:new o.MeshBasicMaterial({color:16777215*Math.random()}),this.updateMorphTargets()},o.Mesh.prototype=Object.create(o.Object3D.prototype),o.Mesh.prototype.constructor=o.Mesh,o.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&this.geometry.morphTargets.length>0){this.morphTargetBase=-1,this.morphTargetForcedOrder=[],this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var e=0,t=this.geometry.morphTargets.length;es.far||u.push({distance:T,point:S,face:new o.Face3(h,p,d,o.Triangle.normal(r,i,a)),faceIndex:null,object:this})}}}else for(var g=f.position.array,M=0,A=0,C=g.length;Ms.far||u.push({distance:T,point:S,face:new o.Face3(h,p,d,o.Triangle.normal(r,i,a)),faceIndex:null,object:this})}}}else if(l instanceof o.Geometry)for(var h,p,d,N=this.material instanceof o.MeshFaceMaterial,P=N===!0?this.material.materials:null,m=s.precision,R=l.vertices,D=0,O=l.faces.length;Ds.far||u.push({distance:T,point:S,face:L,faceIndex:D,object:this})}}}}}(),o.Mesh.prototype.clone=function(e,t){return void 0===e&&(e=new o.Mesh(this.geometry,this.material)),o.Object3D.prototype.clone.call(this,e,t),e},o.Bone=function(e){o.Object3D.call(this),this.type="Bone",this.skin=e},o.Bone.prototype=Object.create(o.Object3D.prototype),o.Bone.prototype.constructor=o.Bone,o.Skeleton=function(e,t,n){if(this.useVertexTexture=void 0===n||n,this.identityMatrix=new o.Matrix4,e=e||[],this.bones=e.slice(0),this.useVertexTexture){var r;r=this.bones.length>256?64:this.bones.length>64?32:this.bones.length>16?16:8,this.boneTextureWidth=r,this.boneTextureHeight=r,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new o.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,o.RGBAFormat,o.FloatType),this.boneTexture.minFilter=o.NearestFilter,this.boneTexture.magFilter=o.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1}else this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{o.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[];for(var i=0,a=this.bones.length;i1){var u=s[1];n[u]||(n[u]={start:1/0,end:-(1/0)});var l=n[u];ol.end&&(l.end=o),t||(t=u)}}e.firstAnimation=t},o.MorphAnimMesh.prototype.setAnimationLabel=function(e,t,n){this.geometry.animations||(this.geometry.animations={}),this.geometry.animations[e]={start:t,end:n}},o.MorphAnimMesh.prototype.playAnimation=function(e,t){var n=this.geometry.animations[e];n?(this.setFrameRange(n.start,n.end),this.duration=1e3*((n.end-n.start)/t),this.time=0):o.warn("THREE.MorphAnimMesh: animation["+e+"] undefined in .playAnimation()")},o.MorphAnimMesh.prototype.updateAnimation=function(e){var t=this.duration/this.length;this.time+=this.direction*e,this.mirroredLoop?(this.time>this.duration||this.time<0)&&(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),this.time<0&&(this.time=0,this.directionBackwards=!1)):(this.time=this.time%this.duration,this.time<0&&(this.time+=this.duration));var n=this.startKeyframe+o.Math.clamp(Math.floor(this.time/t),0,this.length-1);n!==this.currentKeyframe&&(this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[n]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=n);var r=this.time%t/t;this.directionBackwards&&(r=1-r),this.morphTargetInfluences[this.currentKeyframe]=r,this.morphTargetInfluences[this.lastKeyframe]=1-r},o.MorphAnimMesh.prototype.interpolateTargets=function(e,t,n){for(var r=this.morphTargetInfluences,o=0,i=r.length;o-1&&(r[e]=1-n),t>-1&&(r[t]=n)},o.MorphAnimMesh.prototype.clone=function(e){return void 0===e&&(e=new o.MorphAnimMesh(this.geometry,this.material)),e.duration=this.duration,e.mirroredLoop=this.mirroredLoop,e.time=this.time,e.lastKeyframe=this.lastKeyframe,e.currentKeyframe=this.currentKeyframe,e.direction=this.direction,e.directionBackwards=this.directionBackwards,o.Mesh.prototype.clone.call(this,e),e},o.LOD=function(){o.Object3D.call(this),this.objects=[]},o.LOD.prototype=Object.create(o.Object3D.prototype),o.LOD.prototype.constructor=o.LOD,o.LOD.prototype.addLevel=function(e,t){void 0===t&&(t=0),t=Math.abs(t);for(var n=0;n1){e.setFromMatrixPosition(n.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var r=e.distanceTo(t);this.objects[0].object.visible=!0;for(var o=1,i=this.objects.length;o=this.objects[o].distance;o++)this.objects[o-1].object.visible=!1,this.objects[o].object.visible=!0;for(;othis.scale.x||n.push({distance:r,point:this.position,face:null,object:this})}}(),o.Sprite.prototype.clone=function(e){return void 0===e&&(e=new o.Sprite(this.material)),o.Object3D.prototype.clone.call(this,e),e},o.Particle=o.Sprite,o.LensFlare=function(e,t,n,r,i){o.Object3D.call(this),this.lensFlares=[],this.positionScreen=new o.Vector3,this.customUpdateCallback=void 0,void 0!==e&&this.add(e,t,n,r,i)},o.LensFlare.prototype=Object.create(o.Object3D.prototype),o.LensFlare.prototype.constructor=o.LensFlare,o.LensFlare.prototype.add=function(e,t,n,r,i,a){void 0===t&&(t=-1),void 0===n&&(n=0),void 0===a&&(a=1),void 0===i&&(i=new o.Color(16777215)),void 0===r&&(r=o.NormalBlending),n=Math.min(n,Math.max(0,n)),this.lensFlares.push({texture:e,size:t,distance:n,x:0,y:0,z:0,scale:1,rotation:1,opacity:a,color:i,blending:r})},o.LensFlare.prototype.updateLensFlares=function(){var e,t,n=this.lensFlares.length,r=2*-this.positionScreen.x,o=2*-this.positionScreen.y;for(e=0;e 0.0 ) {\n\t return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );\n\t}\n\treturn 1.0;\n}\n\nvec3 inputToLinear( in vec3 a ) {\n#ifdef GAMMA_INPUT\n\treturn pow( a, vec3( float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\nvec3 linearToOutput( in vec3 a ) {\n#ifdef GAMMA_OUTPUT\n\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\n",o.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n\n#endif\n",o.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * attenuation;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * attenuation;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * attenuation * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * attenuation * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront += ambientLightColor;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack += ambientLightColor;\n\n#endif\n",o.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform vec4 offsetRepeat;\n\tuniform sampler2D map;\n\n#endif\n",o.ShaderChunk.default_vertex="#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\n#elif defined( USE_MORPHTARGETS )\n\n\tvec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;\n",o.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif",o.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n";o.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n\tuniform float logDepthBufFC;\n\n#endif";o.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\n#endif",o.ShaderChunk.lights_phong_fragment="#ifndef FLAT_SHADED\n\n\tvec3 normal = normalize( vNormal );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n\t#endif\n\n#else\n\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n\n#endif\n\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef USE_NORMALMAP\n\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\nvec3 totalDiffuseLight = vec3( 0.0 );\nvec3 totalSpecularLight = vec3( 0.0 );\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += pointLightColor[ i ] * pointDiffuseWeight * attenuation;\n\n\t\t\t\t// specular\n\n\t\tvec3 pointHalfVector = normalize( lVector + viewPosition );\n\t\tfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n\t\tfloat pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * attenuation * specularNormalization;\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\t// diffuse\n\n\t\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tfloat spotDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\t\tfloat spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\t\tvec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n\t\t\t#else\n\n\t\t\t\tfloat spotDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t\t#endif\n\n\t\t\ttotalDiffuseLight += spotLightColor[ i ] * spotDiffuseWeight * attenuation * spotEffect;\n\n\t\t\t// specular\n\n\t\t\tvec3 spotHalfVector = normalize( lVector + viewPosition );\n\t\t\tfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n\t\t\tfloat spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n\t\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n\t\t\ttotalSpecularLight += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * attenuation * specularNormalization * spotEffect;\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\t\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, dirVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += directionalLightColor[ i ] * dirDiffuseWeight;\n\n\t\t// specular\n\n\t\tvec3 dirHalfVector = normalize( dirVector + viewPosition );\n\t\tfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n\t\tfloat dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n\t\t/*\n\t\t// fresnel term from skin shader\n\t\tconst float F0 = 0.128;\n\n\t\tfloat base = 1.0 - dot( viewPosition, dirHalfVector );\n\t\tfloat exponential = pow( base, 5.0 );\n\n\t\tfloat fresnel = exponential + F0 * ( 1.0 - exponential );\n\t\t*/\n\n\t\t/*\n\t\t// fresnel term from fresnel shader\n\t\tconst float mFresnelBias = 0.08;\n\t\tconst float mFresnelScale = 0.3;\n\t\tconst float mFresnelPower = 5.0;\n\n\t\tfloat fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n\t\t*/\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t// \t\tdirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n\t\tvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\ttotalDiffuseLight += hemiColor;\n\n\t\t// specular (sky light)\n\n\t\tvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n\t\tfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n\t\tfloat hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n\t\t// specular (ground light)\n\n\t\tvec3 lVectorGround = -lVector;\n\n\t\tvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n\t\tfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n\t\tfloat hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n\t\tfloat dotProductGround = dot( normal, lVectorGround );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n\t\tvec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n\t}\n\n#endif\n\n#ifdef METAL\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) * specular + totalSpecularLight + emissive;\n\n#else\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) + totalSpecularLight + emissive;\n\n#endif\n", +o.ShaderChunk.fog_pars_fragment="#ifdef USE_FOG\n\n\tuniform vec3 fogColor;\n\n\t#ifdef FOG_EXP2\n\n\t\tuniform float fogDensity;\n\n\t#else\n\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n\n#endif",o.ShaderChunk.morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\n\tvec3 morphedNormal = vec3( 0.0 );\n\n\tmorphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tmorphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tmorphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tmorphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n\n\tmorphedNormal += normal;\n\n#endif",o.ShaderChunk.envmap_pars_fragment="#ifdef USE_ENVMAP\n\n\tuniform float reflectivity;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tuniform float refractionRatio;\n\n\t#else\n\n\t\tvarying vec3 vReflect;\n\n\t#endif\n\n#endif\n",o.ShaderChunk.logdepthbuf_fragment="#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n#endif",o.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\n\t}\n\n#endif\n",o.ShaderChunk.lights_phong_pars_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n",o.ShaderChunk.lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\tuniform sampler2D lightMap;\n\n#endif",o.ShaderChunk.shadowmap_vertex="#ifdef USE_SHADOWMAP\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n\n\t}\n\n#endif",o.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvWorldPosition = worldPosition.xyz;\n\n#endif",o.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n\tvec4 texelColor = texture2D( map, vUv );\n\n\ttexelColor.xyz = inputToLinear( texelColor.xyz );\n\n\tdiffuseColor *= texelColor;\n\n#endif",o.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n\tvUv2 = uv2;\n\n#endif",o.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n\tdiffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\n#endif\n",o.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif\n",o.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n\tvColor.xyz = inputToLinear( color.xyz );\n\n#endif",o.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n\t#ifdef USE_MORPHTARGETS\n\n\tvec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\tvec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\tskinned = bindMatrixInverse * skinned;\n\n#endif\n",o.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvarying vec3 vReflect;\n\n\tuniform float refractionRatio;\n\n#endif\n",o.ShaderChunk.linear_to_gamma_fragment="\n\toutgoingLight = linearToOutput( outgoingLight );\n",o.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif",o.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n",o.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n\n#endif\n",o.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n\t\t// Transforming Normal Vectors with the Inverse Transformation\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n\t\t#else\n\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t\t#endif\n\n\t#else\n\n\t\tvec3 reflectVec = vReflect;\n\n\t#endif\n\n\t#ifdef DOUBLE_SIDED\n\t\tfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\t#else\n\t\tfloat flipNormal = 1.0;\n\t#endif\n\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#endif\n\n\tenvColor.xyz = inputToLinear( envColor.xyz );\n\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\n\t#endif\n\n#endif\n",o.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n\tuniform sampler2D specularMap;\n\n#endif",o.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n\t#endif\n\n#endif",o.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n\t#ifndef USE_MORPHNORMALS\n\n\tuniform float morphTargetInfluences[ 8 ];\n\n\t#else\n\n\tuniform float morphTargetInfluences[ 4 ];\n\n\t#endif\n\n#endif",o.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n\n#else\n\n\tspecularStrength = 1.0;\n\n#endif",o.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n\t#else\n\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\n\t#endif\n\n\t#ifdef FOG_EXP2\n\n\t\tfloat fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );\n\t\tfogFactor = whiteCompliment( fogFactor );\n\n\t#else\n\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n\n\t#endif\n\t\n\toutgoingLight = mix( outgoingLight, fogColor, fogFactor );\n\n#endif",o.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n\tvec2 dHdxy_fwd() {\n\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n\t\treturn vec2( dBx, dBy );\n\n\t}\n\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n\t\tvec3 vSigmaX = dFdx( surf_pos );\n\t\tvec3 vSigmaY = dFdy( surf_pos );\n\t\tvec3 vN = surf_norm;\t\t// normalized\n\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n#endif\n",o.ShaderChunk.defaultnormal_vertex="#ifdef USE_SKINNING\n\n\tvec3 objectNormal = skinnedNormal.xyz;\n\n#elif defined( USE_MORPHNORMALS )\n\n\tvec3 objectNormal = morphedNormal;\n\n#else\n\n\tvec3 objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n\tobjectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;\n",o.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n",o.ShaderChunk.skinbase_vertex="#ifdef USE_SKINNING\n\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n\n#endif",o.ShaderChunk.map_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n\n#endif",o.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n\toutgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;\n\n#endif",o.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\tuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif",o.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n\tdiffuseColor.rgb *= vColor;\n\n#endif",o.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n\tvec3 morphed = vec3( 0.0 );\n\tmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\tmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\tmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\tmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n\t#ifndef USE_MORPHNORMALS\n\n\tmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\tmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\tmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\tmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n\t#endif\n\n\tmorphed += position;\n\n#endif",o.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvec3 worldNormal = transformDirection( objectNormal, modelMatrix );\n\n\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\n\t#else\n\n\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t#endif\n\n#endif\n",o.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n\t#ifdef SHADOWMAP_DEBUG\n\n\t\tvec3 frustumColors[3];\n\t\tfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n\t\tfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n\t\tfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n\t#endif\n\n\t#ifdef SHADOWMAP_CASCADE\n\n\t\tint inFrustumCount = 0;\n\n\t#endif\n\n\tfloat fDepth;\n\tvec3 shadowColor = vec3( 1.0 );\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n\t\t\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\n\t\t\t\t// if ( all( something, something ) ) using this instead\n\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\n\t\t\t\t// don't shadow pixels outside of light frustum\n\t\t\t\t// use just first frustum (for cascades)\n\t\t\t\t// don't shadow pixels behind far plane of light frustum\n\n\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\tinFrustumCount += int( inFrustum );\n\t\t\tbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n\t\t#else\n\n\t\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n\t\t#endif\n\n\t\tbool frustumTest = all( frustumTestVec );\n\n\t\tif ( frustumTest ) {\n\n\t\t\tshadowCoord.z += shadowBias[ i ];\n\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t/*\n\t\t\t\t\t\t// nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n\t\t\t\t\t\t// must enroll loop manually\n\n\t\t\t\tfor ( float y = -1.25; y <= 1.25; y += 1.25 )\n\t\t\t\t\tfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n\t\t\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n\t\t\t\t\t\t\t\t// doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n\t\t\t\t\t\t\t\t//vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n\t\t\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\t\t\tif ( fDepth < shadowCoord.z )\n\t\t\t\t\t\t\tshadow += 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tshadow /= 9.0;\n\n\t\t*/\n\n\t\t\t\tconst float shadowDelta = 1.0 / 9.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.25 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.25 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.25 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.25 * yPixelOffset;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.0 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.0 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.0 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.0 * yPixelOffset;\n\n\t\t\t\tmat3 shadowKernel;\n\t\t\t\tmat3 depthKernel;\n\n\t\t\t\tdepthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tdepthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tdepthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tdepthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tdepthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tdepthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tdepthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tdepthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tdepthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n\t\t\t\tvec3 shadowZ = vec3( shadowCoord.z );\n\t\t\t\tshadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n\t\t\t\tshadowKernel[0] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n\t\t\t\tshadowKernel[1] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n\t\t\t\tshadowKernel[2] *= vec3(0.25);\n\n\t\t\t\tvec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n\t\t\t\tshadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n\t\t\t\tshadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n\t\t\t\tvec4 shadowValues;\n\t\t\t\tshadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n\t\t\t\tshadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n\t\t\t\tshadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n\t\t\t\tshadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n\t\t\t\tshadow = dot( shadowValues, vec4( 1.0 ) );\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#else\n\n\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\tif ( fDepth < shadowCoord.z )\n\n\t\t// spot with multiple shadows is darker\n\n\t\t\t\t\tshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n\t\t// spot with multiple shadows has the same color as single shadow spot\n\n\t\t// \t\t\t\t\tshadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n\t\t\t#endif\n\n\t\t}\n\n\n\t\t#ifdef SHADOWMAP_DEBUG\n\n\t\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\t\tif ( inFrustum && inFrustumCount == 1 ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#else\n\n\t\t\t\tif ( inFrustum ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t}\n\n\t// NOTE: I am unsure if this is correct in linear space. -bhouston, Dec 29, 2014\n\tshadowColor = inputToLinear( shadowColor );\n\n\toutgoingLight = outgoingLight * shadowColor;\n\n#endif\n",o.ShaderChunk.worldpos_vertex="#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\n\t#ifdef USE_SKINNING\n\n\t\tvec4 worldPosition = modelMatrix * skinned;\n\n\t#elif defined( USE_MORPHTARGETS )\n\n\t\tvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n#endif\n",o.ShaderChunk.shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\n\tuniform sampler2D shadowMap[ MAX_SHADOWS ];\n\tuniform vec2 shadowMapSize[ MAX_SHADOWS ];\n\n\tuniform float shadowDarkness[ MAX_SHADOWS ];\n\tuniform float shadowBias[ MAX_SHADOWS ];\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\n\tfloat unpackDepth( const in vec4 rgba_depth ) {\n\n\t\tconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\t\tfloat depth = dot( rgba_depth, bit_shift );\n\t\treturn depth;\n\n\t}\n\n#endif",o.ShaderChunk.skinning_pars_vertex="#ifdef USE_SKINNING\n\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\n\t#ifdef BONE_TEXTURE\n\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureWidth;\n\t\tuniform int boneTextureHeight;\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureWidth ) );\n\t\t\tfloat y = floor( j / float( boneTextureWidth ) );\n\n\t\t\tfloat dx = 1.0 / float( boneTextureWidth );\n\t\t\tfloat dy = 1.0 / float( boneTextureHeight );\n\n\t\t\ty = dy * ( y + 0.5 );\n\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t#else\n\n\t\tuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tmat4 bone = boneGlobalMatrices[ int(i) ];\n\t\t\treturn bone;\n\n\t\t}\n\n\t#endif\n\n#endif\n",o.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n\tuniform float logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\t#extension GL_EXT_frag_depth : enable\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n#endif",o.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n",o.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap;\n\n#endif\n",o.UniformsUtils={merge:function(e){for(var t={},n=0;n dashSize ) {","\t\tdiscard;","\t}","\tvec3 outgoingLight = vec3( 0.0 );","\tvec4 diffuseColor = vec4( diffuse, opacity );",o.ShaderChunk.logdepthbuf_fragment,o.ShaderChunk.color_fragment,"\toutgoingLight = diffuseColor.rgb;",o.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );","}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2e3},opacity:{type:"f",value:1}},vertexShader:[o.ShaderChunk.common,o.ShaderChunk.morphtarget_pars_vertex,o.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",o.ShaderChunk.morphtarget_vertex,o.ShaderChunk.default_vertex,o.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","uniform float opacity;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",o.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;","\t#else","\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;","\t#endif","\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );","\tgl_FragColor = vec4( vec3( color ), opacity );","}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",o.ShaderChunk.common,o.ShaderChunk.morphtarget_pars_vertex,o.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvNormal = normalize( normalMatrix * normal );",o.ShaderChunk.morphtarget_vertex,o.ShaderChunk.default_vertex,o.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;","varying vec3 vNormal;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",o.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",o.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",o.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",o.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;","uniform float tFlip;","varying vec3 vWorldPosition;",o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","vec3 direction = normalize( vWorldPosition );","vec2 sampleUV;","sampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );","sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;","gl_FragColor = texture2D( tEquirect, sampleUV );",o.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[o.ShaderChunk.common,o.ShaderChunk.morphtarget_pars_vertex,o.ShaderChunk.skinning_pars_vertex,o.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",o.ShaderChunk.skinbase_vertex,o.ShaderChunk.morphtarget_vertex,o.ShaderChunk.skinning_vertex,o.ShaderChunk.default_vertex,o.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[o.ShaderChunk.common,o.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {","\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );","\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );","\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );","\tres -= res.xxyz * bit_mask;","\treturn res;","}","void main() {",o.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );","\t#else","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );","\t#endif","}"].join("\n")}},o.WebGLRenderer=function(e){function t(e){e.__webglVertexBuffer=Re.createBuffer(),e.__webglColorBuffer=Re.createBuffer(),De.info.memory.geometries++}function n(e){e.__webglVertexBuffer=Re.createBuffer(),e.__webglColorBuffer=Re.createBuffer(),e.__webglLineDistanceBuffer=Re.createBuffer(),De.info.memory.geometries++}function r(e){e.__webglVertexBuffer=Re.createBuffer(),e.__webglNormalBuffer=Re.createBuffer(),e.__webglTangentBuffer=Re.createBuffer(),e.__webglColorBuffer=Re.createBuffer(),e.__webglUVBuffer=Re.createBuffer(),e.__webglUV2Buffer=Re.createBuffer(),e.__webglSkinIndicesBuffer=Re.createBuffer(),e.__webglSkinWeightsBuffer=Re.createBuffer(),e.__webglFaceBuffer=Re.createBuffer(),e.__webglLineBuffer=Re.createBuffer();var t=e.numMorphTargets;if(t){e.__webglMorphTargetsBuffers=[];for(var n=0,r=t;n1&&(e.__uv2Array=new Float32Array(2*o)),n.hasTangents&&(e.__tangentArray=new Float32Array(4*o)),t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*o),e.__skinWeightArray=new Float32Array(4*o));var u=null!==et.get("OES_element_index_uint")&&i>21845?Uint32Array:Uint16Array;e.__typeArray=u,e.__faceArray=new u(3*i),e.__lineArray=new u(2*a);var c=e.numMorphTargets;if(c){e.__morphTargetsArrays=[];for(var h=0,p=c;h0&&(Re.bindBuffer(Re.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),Re.bufferData(Re.ARRAY_BUFFER,fe,n),Re.bindBuffer(Re.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),Re.bufferData(Re.ARRAY_BUFFER,me,n))}if(Te){for(a=0,s=Pe.length;a0&&(Re.bindBuffer(Re.ARRAY_BUFFER,e.__webglColorBuffer),Re.bufferData(Re.ARRAY_BUFFER,de,n))}if(Se&&xe.hasTangents){for(a=0,s=Pe.length;a0&&(Re.bindBuffer(Re.ARRAY_BUFFER,e.__webglUVBuffer),Re.bufferData(Re.ARRAY_BUFFER,le,n))}if(Me&&Le){for(a=0,s=Pe.length;a0&&(Re.bindBuffer(Re.ARRAY_BUFFER,e.__webglUV2Buffer),Re.bufferData(Re.ARRAY_BUFFER,ce,n))}if(Ee){for(a=0,s=Pe.length;a=0){var h=o[l];if(void 0!==h){var p=h.itemSize;Re.bindBuffer(Re.ARRAY_BUFFER,h.buffer),$e.enableAttribute(c),Re.vertexAttribPointer(c,p,Re.FLOAT,!1,0,r*p*4)}else void 0!==e.defaultAttributeValues&&(2===e.defaultAttributeValues[l].length?Re.vertexAttrib2fv(c,e.defaultAttributeValues[l]):3===e.defaultAttributeValues[l].length&&Re.vertexAttrib3fv(c,e.defaultAttributeValues[l]))}}$e.disableUnusedAttributes()}function m(e,t,n){var r=e.program.attributes;if(n.morphTargetBase!==-1&&r.position>=0?(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[n.morphTargetBase]),$e.enableAttribute(r.position),Re.vertexAttribPointer(r.position,3,Re.FLOAT,!1,0,0)):r.position>=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglVertexBuffer),$e.enableAttribute(r.position),Re.vertexAttribPointer(r.position,3,Re.FLOAT,!1,0,0)),n.morphTargetForcedOrder.length)for(var o,i=0,a=n.morphTargetForcedOrder,s=n.morphTargetInfluences;i=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[a[i]]),$e.enableAttribute(o),Re.vertexAttribPointer(o,3,Re.FLOAT,!1,0,0)),o=r["morphNormal"+i],o>=0&&e.morphNormals&&(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[a[i]]),$e.enableAttribute(o),Re.vertexAttribPointer(o,3,Re.FLOAT,!1,0,0)),n.__webglMorphTargetInfluences[i]=s[a[i]],i++;else{var u=[],s=n.morphTargetInfluences,l=n.geometry.morphTargets;s.length>l.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),s.length=l.length);for(var c=0,h=s.length;ce.numSupportedMorphTargets?(u.sort(y),u.length=e.numSupportedMorphTargets):u.length>e.numSupportedMorphNormals?u.sort(y):0===u.length&&u.push([0,0]);for(var o,i=0,d=e.numSupportedMorphTargets;i=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[f]),$e.enableAttribute(o),Re.vertexAttribPointer(o,3,Re.FLOAT,!1,0,0)),o=r["morphNormal"+i],o>=0&&e.morphNormals&&(Re.bindBuffer(Re.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[f]),$e.enableAttribute(o),Re.vertexAttribPointer(o,3,Re.FLOAT,!1,0,0)),n.__webglMorphTargetInfluences[i]=s[f]}else n.__webglMorphTargetInfluences[i]=0}null!==e.program.uniforms.morphTargetInfluences&&Re.uniform1fv(e.program.uniforms.morphTargetInfluences,n.__webglMorphTargetInfluences)}function v(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function g(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function y(e,t){return t[0]-e[0]}function _(e){if(e.visible!==!1){if(e instanceof o.Scene||e instanceof o.Group);else if(M(e),e instanceof o.Light)Me.push(e);else if(e instanceof o.Sprite)Ne.push(e);else if(e instanceof o.LensFlare)Pe.push(e);else{var t=Ce[e.id];if(t&&(e.frustumCulled===!1||qe.intersectsObject(e)===!0))for(var n=0,r=t.length;no&&(i[d].counter+=1,n=i[d].hash+"_"+i[d].counter,n in u||(r={id:Rt++,faces3:[],materialIndex:d,vertices:0,numMorphTargets:a,numMorphNormals:s},u[n]=r,l.push(r))),u[n].faces3.push(c),u[n].vertices+=3}return l}function S(e,t){var n=e.material,i=!1;void 0!==Pt[t.id]&&t.groupsNeedUpdate!==!0||(delete Ce[e.id],Pt[t.id]=C(t,n instanceof o.MeshFaceMaterial),t.groupsNeedUpdate=!1);for(var a=Pt[t.id],s=0,l=a.length;s=0;n--)e[n].object===t&&e.splice(n,1)}function L(e,t,n,r){e.addEventListener("dispose",Mt);var i=Dt[e.type];if(i){var a=o.ShaderLib[i];e.__webglShader={uniforms:o.UniformsUtils.clone(a.uniforms),vertexShader:a.vertexShader,fragmentShader:a.fragmentShader}}else e.__webglShader={uniforms:e.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader};var s=le(t),u=ce(t),l=ue(r),c={precision:fe,supportsVertexTextures:ut,map:!!e.map,envMap:!!e.envMap,envMapMode:e.envMap&&e.envMap.mapping,lightMap:!!e.lightMap,bumpMap:!!e.bumpMap,normalMap:!!e.normalMap,specularMap:!!e.specularMap,alphaMap:!!e.alphaMap,combine:e.combine,vertexColors:e.vertexColors,fog:n,useFog:e.fog,fogExp:n instanceof o.FogExp2,flatShading:e.shading===o.FlatShading,sizeAttenuation:e.sizeAttenuation,logarithmicDepthBuffer:xe,skinning:e.skinning,maxBones:l,useVertexTexture:lt&&r&&r.skeleton&&r.skeleton.useVertexTexture,morphTargets:e.morphTargets,morphNormals:e.morphNormals,maxMorphTargets:De.maxMorphTargets,maxMorphNormals:De.maxMorphNormals,maxDirLights:s.directional,maxPointLights:s.point,maxSpotLights:s.spot,maxHemiLights:s.hemi,maxShadows:u,shadowMapEnabled:De.shadowMapEnabled&&r.receiveShadow&&u>0,shadowMapType:De.shadowMapType,shadowMapDebug:De.shadowMapDebug,shadowMapCascade:De.shadowMapCascade,alphaTest:e.alphaTest,metal:e.metal,wrapAround:e.wrapAround,doubleSided:e.side===o.DoubleSide,flipSided:e.side===o.BackSide},h=[];if(i?h.push(i):(h.push(e.fragmentShader),h.push(e.vertexShader)),void 0!==e.defines)for(var p in e.defines)h.push(p),h.push(e.defines[p]);for(var p in c)h.push(p),h.push(c[p]);for(var d,f=h.join(),m=0,v=Oe.length;m=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;var _,b="morphNormal";for(x=0;x=0&&e.numSupportedMorphNormals++}e.uniformsList=[];for(var w in e.__webglShader.uniforms){var E=e.program.uniforms[w];E&&e.uniformsList.push([e.__webglShader.uniforms[w],E])}}function k(e){e.transparent===!0?$e.setBlending(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha):$e.setBlending(o.NoBlending),$e.setDepthTest(e.depthTest),$e.setDepthWrite(e.depthWrite),$e.setColorWrite(e.colorWrite),$e.setPolygonOffset(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits)}function F(e,t,n,r,i){Ue=0,r.needsUpdate&&(r.program&&Nt(r),L(r,t,n,i),r.needsUpdate=!1),r.morphTargets&&(i.__webglMorphTargetInfluences||(i.__webglMorphTargetInfluences=new Float32Array(De.maxMorphTargets)));var a=!1,s=!1,u=!1,l=r.program,c=l.uniforms,h=r.__webglShader.uniforms;if(l.id!==Le&&(Re.useProgram(l.program),Le=l.id,a=!0,s=!0,u=!0),r.id!==Fe&&(Fe===-1&&(u=!0),Fe=r.id,s=!0),(a||e!==Ie)&&(Re.uniformMatrix4fv(c.projectionMatrix,!1,e.projectionMatrix.elements),xe&&Re.uniform1f(c.logDepthBufFC,2/(Math.log(e.far+1)/Math.LN2)),e!==Ie&&(Ie=e),(r instanceof o.ShaderMaterial||r instanceof o.MeshPhongMaterial||r.envMap)&&null!==c.cameraPosition&&(Ke.setFromMatrixPosition(e.matrixWorld),Re.uniform3f(c.cameraPosition,Ke.x,Ke.y,Ke.z)),(r instanceof o.MeshPhongMaterial||r instanceof o.MeshLambertMaterial||r instanceof o.MeshBasicMaterial||r instanceof o.ShaderMaterial||r.skinning)&&null!==c.viewMatrix&&Re.uniformMatrix4fv(c.viewMatrix,!1,e.matrixWorldInverse.elements)),r.skinning)if(i.bindMatrix&&null!==c.bindMatrix&&Re.uniformMatrix4fv(c.bindMatrix,!1,i.bindMatrix.elements),i.bindMatrixInverse&&null!==c.bindMatrixInverse&&Re.uniformMatrix4fv(c.bindMatrixInverse,!1,i.bindMatrixInverse.elements),lt&&i.skeleton&&i.skeleton.useVertexTexture){if(null!==c.boneTexture){var p=K();Re.uniform1i(c.boneTexture,p),De.setTexture(i.skeleton.boneTexture,p)}null!==c.boneTextureWidth&&Re.uniform1i(c.boneTextureWidth,i.skeleton.boneTextureWidth),null!==c.boneTextureHeight&&Re.uniform1i(c.boneTextureHeight,i.skeleton.boneTextureHeight)}else i.skeleton&&i.skeleton.boneMatrices&&null!==c.boneGlobalMatrices&&Re.uniformMatrix4fv(c.boneGlobalMatrices,!1,i.skeleton.boneMatrices);return s&&(n&&r.fog&&j(h,n),(r instanceof o.MeshPhongMaterial||r instanceof o.MeshLambertMaterial||r.lights)&&(Qe&&(u=!0,J(t),Qe=!1),u?(W(h,Ze),G(h,!0)):G(h,!1)),(r instanceof o.MeshBasicMaterial||r instanceof o.MeshLambertMaterial||r instanceof o.MeshPhongMaterial)&&V(h,r),r instanceof o.LineBasicMaterial?I(h,r):r instanceof o.LineDashedMaterial?(I(h,r),U(h,r)):r instanceof o.PointCloudMaterial?B(h,r):r instanceof o.MeshPhongMaterial?z(h,r):r instanceof o.MeshLambertMaterial?H(h,r):r instanceof o.MeshDepthMaterial?(h.mNear.value=e.near,h.mFar.value=e.far,h.opacity.value=r.opacity):r instanceof o.MeshNormalMaterial&&(h.opacity.value=r.opacity),i.receiveShadow&&!r._shadowPass&&q(h,t),Y(r.uniformsList)),X(c,i),null!==c.modelMatrix&&Re.uniformMatrix4fv(c.modelMatrix,!1,i.matrixWorld.elements),l}function V(e,t){e.opacity.value=t.opacity,e.diffuse.value=t.color,e.map.value=t.map,e.lightMap.value=t.lightMap,e.specularMap.value=t.specularMap,e.alphaMap.value=t.alphaMap,t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale));var n;if(t.map?n=t.map:t.specularMap?n=t.specularMap:t.normalMap?n=t.normalMap:t.bumpMap?n=t.bumpMap:t.alphaMap&&(n=t.alphaMap),void 0!==n){var r=n.offset,i=n.repeat;e.offsetRepeat.value.set(r.x,r.y,i.x,i.y)}e.envMap.value=t.envMap,e.flipEnvMap.value=t.envMap instanceof o.WebGLRenderTargetCube?1:-1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio}function I(e,t){e.diffuse.value=t.color,e.opacity.value=t.opacity}function U(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function B(e,t){if(e.psColor.value=t.color,e.opacity.value=t.opacity,e.size.value=t.size,e.scale.value=he.height/2,e.map.value=t.map,null!==t.map){var n=t.map.offset,r=t.map.repeat;e.offsetRepeat.value.set(n.x,n.y,r.x,r.y)}}function j(e,t){e.fogColor.value=t.color,t instanceof o.Fog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t instanceof o.FogExp2&&(e.fogDensity.value=t.density)}function z(e,t){e.shininess.value=t.shininess,e.emissive.value=t.emissive,e.specular.value=t.specular,t.wrapAround&&e.wrapRGB.value.copy(t.wrapRGB)}function H(e,t){e.emissive.value=t.emissive,t.wrapAround&&e.wrapRGB.value.copy(t.wrapRGB)}function W(e,t){e.ambientLightColor.value=t.ambient,e.directionalLightColor.value=t.directional.colors,e.directionalLightDirection.value=t.directional.positions,e.pointLightColor.value=t.point.colors,e.pointLightPosition.value=t.point.positions,e.pointLightDistance.value=t.point.distances,e.pointLightDecay.value=t.point.decays,e.spotLightColor.value=t.spot.colors,e.spotLightPosition.value=t.spot.positions,e.spotLightDistance.value=t.spot.distances,e.spotLightDirection.value=t.spot.directions,e.spotLightAngleCos.value=t.spot.anglesCos,e.spotLightExponent.value=t.spot.exponents,e.spotLightDecay.value=t.spot.decays,e.hemisphereLightSkyColor.value=t.hemi.skyColors,e.hemisphereLightGroundColor.value=t.hemi.groundColors,e.hemisphereLightDirection.value=t.hemi.positions}function G(e,t){e.ambientLightColor.needsUpdate=t,e.directionalLightColor.needsUpdate=t,e.directionalLightDirection.needsUpdate=t,e.pointLightColor.needsUpdate=t,e.pointLightPosition.needsUpdate=t,e.pointLightDistance.needsUpdate=t,e.pointLightDecay.needsUpdate=t,e.spotLightColor.needsUpdate=t,e.spotLightPosition.needsUpdate=t,e.spotLightDistance.needsUpdate=t,e.spotLightDirection.needsUpdate=t,e.spotLightAngleCos.needsUpdate=t,e.spotLightExponent.needsUpdate=t,e.spotLightDecay.needsUpdate=t,e.hemisphereLightSkyColor.needsUpdate=t,e.hemisphereLightGroundColor.needsUpdate=t,e.hemisphereLightDirection.needsUpdate=t}function q(e,t){if(e.shadowMatrix)for(var n=0,r=0,i=t.length;r=ot&&o.warn("WebGLRenderer: trying to use "+e+" texture units while this GPU supports only "+ot),Ue+=1,e}function Y(e){for(var t,n,r,i=0,a=e.length;i1||t.__currentAnisotropy)&&(Re.texParameterf(e,r.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,De.getMaxAnisotropy())),t.__currentAnisotropy=t.anisotropy)}function ee(e,t){if(e.width>t||e.height>t){var n=t/Math.max(e.width,e.height),r=document.createElement("canvas");r.width=Math.floor(e.width*n),r.height=Math.floor(e.height*n);var i=r.getContext("2d");return i.drawImage(e,0,0,e.width,e.height,0,0,r.width,r.height),o.warn("THREE.WebGLRenderer: image is too big ("+e.width+"x"+e.height+"). Resized to "+r.width+"x"+r.height,e),r}return e}function te(e,t){if(6===e.image.length)if(e.needsUpdate){e.image.__webglTextureCube||(e.addEventListener("dispose",wt),e.image.__webglTextureCube=Re.createTexture(),De.info.memory.textures++),Re.activeTexture(Re.TEXTURE0+t),Re.bindTexture(Re.TEXTURE_CUBE_MAP,e.image.__webglTextureCube),Re.pixelStorei(Re.UNPACK_FLIP_Y_WEBGL,e.flipY);for(var n=e instanceof o.CompressedTexture,r=e.image[0]instanceof o.DataTexture,i=[],a=0;a<6;a++)!De.autoScaleCubemaps||n||r?i[a]=r?e.image[a].image:e.image[a]:i[a]=ee(e.image[a],st);var s=i[0],u=o.Math.isPowerOfTwo(s.width)&&o.Math.isPowerOfTwo(s.height),l=se(e.format),c=se(e.type);$(Re.TEXTURE_CUBE_MAP,e,u);for(var a=0;a<6;a++)if(n)for(var h,p=i[a].mipmaps,d=0,f=p.length;d-1?Re.compressedTexImage2D(Re.TEXTURE_CUBE_MAP_POSITIVE_X+a,d,l,h.width,h.height,0,h.data):o.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):Re.texImage2D(Re.TEXTURE_CUBE_MAP_POSITIVE_X+a,d,l,h.width,h.height,0,l,c,h.data);else r?Re.texImage2D(Re.TEXTURE_CUBE_MAP_POSITIVE_X+a,0,l,i[a].width,i[a].height,0,l,c,i[a].data):Re.texImage2D(Re.TEXTURE_CUBE_MAP_POSITIVE_X+a,0,l,l,c,i[a]);e.generateMipmaps&&u&&Re.generateMipmap(Re.TEXTURE_CUBE_MAP),e.needsUpdate=!1,e.onUpdate&&e.onUpdate()}else Re.activeTexture(Re.TEXTURE0+t),Re.bindTexture(Re.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}function ne(e,t){Re.activeTexture(Re.TEXTURE0+t),Re.bindTexture(Re.TEXTURE_CUBE_MAP,e.__webglTexture)}function re(e,t,n){Re.bindFramebuffer(Re.FRAMEBUFFER,e),Re.framebufferTexture2D(Re.FRAMEBUFFER,Re.COLOR_ATTACHMENT0,n,t.__webglTexture,0)}function oe(e,t){Re.bindRenderbuffer(Re.RENDERBUFFER,e),t.depthBuffer&&!t.stencilBuffer?(Re.renderbufferStorage(Re.RENDERBUFFER,Re.DEPTH_COMPONENT16,t.width,t.height),Re.framebufferRenderbuffer(Re.FRAMEBUFFER,Re.DEPTH_ATTACHMENT,Re.RENDERBUFFER,e)):t.depthBuffer&&t.stencilBuffer?(Re.renderbufferStorage(Re.RENDERBUFFER,Re.DEPTH_STENCIL,t.width,t.height),Re.framebufferRenderbuffer(Re.FRAMEBUFFER,Re.DEPTH_STENCIL_ATTACHMENT,Re.RENDERBUFFER,e)):Re.renderbufferStorage(Re.RENDERBUFFER,Re.RGBA4,t.width,t.height)}function ie(e){e instanceof o.WebGLRenderTargetCube?(Re.bindTexture(Re.TEXTURE_CUBE_MAP,e.__webglTexture),Re.generateMipmap(Re.TEXTURE_CUBE_MAP),Re.bindTexture(Re.TEXTURE_CUBE_MAP,null)):(Re.bindTexture(Re.TEXTURE_2D,e.__webglTexture),Re.generateMipmap(Re.TEXTURE_2D),Re.bindTexture(Re.TEXTURE_2D,null))}function ae(e){return e===o.NearestFilter||e===o.NearestMipMapNearestFilter||e===o.NearestMipMapLinearFilter?Re.NEAREST:Re.LINEAR}function se(e){var t;if(e===o.RepeatWrapping)return Re.REPEAT;if(e===o.ClampToEdgeWrapping)return Re.CLAMP_TO_EDGE;if(e===o.MirroredRepeatWrapping)return Re.MIRRORED_REPEAT;if(e===o.NearestFilter)return Re.NEAREST;if(e===o.NearestMipMapNearestFilter)return Re.NEAREST_MIPMAP_NEAREST;if(e===o.NearestMipMapLinearFilter)return Re.NEAREST_MIPMAP_LINEAR;if(e===o.LinearFilter)return Re.LINEAR;if(e===o.LinearMipMapNearestFilter)return Re.LINEAR_MIPMAP_NEAREST;if(e===o.LinearMipMapLinearFilter)return Re.LINEAR_MIPMAP_LINEAR;if(e===o.UnsignedByteType)return Re.UNSIGNED_BYTE;if(e===o.UnsignedShort4444Type)return Re.UNSIGNED_SHORT_4_4_4_4;if(e===o.UnsignedShort5551Type)return Re.UNSIGNED_SHORT_5_5_5_1;if(e===o.UnsignedShort565Type)return Re.UNSIGNED_SHORT_5_6_5;if(e===o.ByteType)return Re.BYTE;if(e===o.ShortType)return Re.SHORT;if(e===o.UnsignedShortType)return Re.UNSIGNED_SHORT;if(e===o.IntType)return Re.INT;if(e===o.UnsignedIntType)return Re.UNSIGNED_INT;if(e===o.FloatType)return Re.FLOAT;if(t=et.get("OES_texture_half_float"),null!==t&&e===o.HalfFloatType)return t.HALF_FLOAT_OES;if(e===o.AlphaFormat)return Re.ALPHA;if(e===o.RGBFormat)return Re.RGB;if(e===o.RGBAFormat)return Re.RGBA;if(e===o.LuminanceFormat)return Re.LUMINANCE;if(e===o.LuminanceAlphaFormat)return Re.LUMINANCE_ALPHA;if(e===o.AddEquation)return Re.FUNC_ADD;if(e===o.SubtractEquation)return Re.FUNC_SUBTRACT;if(e===o.ReverseSubtractEquation)return Re.FUNC_REVERSE_SUBTRACT;if(e===o.ZeroFactor)return Re.ZERO;if(e===o.OneFactor)return Re.ONE;if(e===o.SrcColorFactor)return Re.SRC_COLOR;if(e===o.OneMinusSrcColorFactor)return Re.ONE_MINUS_SRC_COLOR;if(e===o.SrcAlphaFactor)return Re.SRC_ALPHA;if(e===o.OneMinusSrcAlphaFactor)return Re.ONE_MINUS_SRC_ALPHA;if(e===o.DstAlphaFactor)return Re.DST_ALPHA;if(e===o.OneMinusDstAlphaFactor)return Re.ONE_MINUS_DST_ALPHA;if(e===o.DstColorFactor)return Re.DST_COLOR;if(e===o.OneMinusDstColorFactor)return Re.ONE_MINUS_DST_COLOR;if(e===o.SrcAlphaSaturateFactor)return Re.SRC_ALPHA_SATURATE;if(t=et.get("WEBGL_compressed_texture_s3tc"),null!==t){if(e===o.RGB_S3TC_DXT1_Format)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===o.RGBA_S3TC_DXT1_Format)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===o.RGBA_S3TC_DXT3_Format)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===o.RGBA_S3TC_DXT5_Format)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(t=et.get("WEBGL_compressed_texture_pvrtc"),null!==t){if(e===o.RGB_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===o.RGB_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===o.RGBA_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===o.RGBA_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(t=et.get("EXT_blend_minmax"),null!==t){if(e===o.MinEquation)return t.MIN_EXT;if(e===o.MaxEquation)return t.MAX_EXT}return 0}function ue(e){if(lt&&e&&e.skeleton&&e.skeleton.useVertexTexture)return 1024;var t=Re.getParameter(Re.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((t-20)/4),r=n;return void 0!==e&&e instanceof o.SkinnedMesh&&(r=Math.min(e.skeleton.bones.length,r),r0,lt=ut&&et.get("OES_texture_float"),ct=Re.getShaderPrecisionFormat(Re.VERTEX_SHADER,Re.HIGH_FLOAT),ht=Re.getShaderPrecisionFormat(Re.VERTEX_SHADER,Re.MEDIUM_FLOAT),pt=Re.getShaderPrecisionFormat(Re.FRAGMENT_SHADER,Re.HIGH_FLOAT),dt=Re.getShaderPrecisionFormat(Re.FRAGMENT_SHADER,Re.MEDIUM_FLOAT),ft=function(){var e;return function(){if(void 0!==e)return e;if(e=[],et.get("WEBGL_compressed_texture_pvrtc")||et.get("WEBGL_compressed_texture_s3tc"))for(var t=Re.getParameter(Re.COMPRESSED_TEXTURE_FORMATS),n=0;n0&&pt.precision>0,vt=ht.precision>0&&dt.precision>0;"highp"!==fe||mt||(vt?(fe="mediump",o.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(fe="lowp",o.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp."))),"mediump"!==fe||vt||(fe="lowp",o.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var gt=new o.ShadowMapPlugin(this,Me,Ce,Se),yt=new o.SpritePlugin(this,Ne),_t=new o.LensFlarePlugin(this,Pe);this.getContext=function(){return Re},this.forceContextLoss=function(){et.get("WEBGL_lose_context").loseContext()},this.supportsVertexTextures=function(){return ut},this.supportsFloatTextures=function(){return et.get("OES_texture_float")},this.supportsHalfFloatTextures=function(){return et.get("OES_texture_half_float")},this.supportsStandardDerivatives=function(){return et.get("OES_standard_derivatives")},this.supportsCompressedTextureS3TC=function(){return et.get("WEBGL_compressed_texture_s3tc")},this.supportsCompressedTexturePVRTC=function(){return et.get("WEBGL_compressed_texture_pvrtc")},this.supportsBlendMinMax=function(){return et.get("EXT_blend_minmax")},this.getMaxAnisotropy=function(){var e;return function(){if(void 0!==e)return e;var t=et.get("EXT_texture_filter_anisotropic");return e=null!==t?Re.getParameter(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}(),this.getPrecision=function(){return fe},this.getPixelRatio=function(){return de},this.setPixelRatio=function(e){de=e},this.setSize=function(e,t,n){he.width=e*de,he.height=t*de,n!==!1&&(he.style.width=e+"px",he.style.height=t+"px"),this.setViewport(0,0,e,t)},this.setViewport=function(e,t,n,r){Be=e*de,je=t*de,ze=n*de,He=r*de,Re.viewport(Be,je,ze,He)},this.setScissor=function(e,t,n,r){Re.scissor(e*de,t*de,n*de,r*de)},this.enableScissorTest=function(e){e?Re.enable(Re.SCISSOR_TEST):Re.disable(Re.SCISSOR_TEST)},this.getClearColor=function(){return we},this.setClearColor=function(e,t){we.set(e),Ee=void 0!==t?t:1,tt(we.r,we.g,we.b,Ee)},this.getClearAlpha=function(){return Ee},this.setClearAlpha=function(e){Ee=e,tt(we.r,we.g,we.b,Ee)},this.clear=function(e,t,n){var r=0;(void 0===e||e)&&(r|=Re.COLOR_BUFFER_BIT),(void 0===t||t)&&(r|=Re.DEPTH_BUFFER_BIT),(void 0===n||n)&&(r|=Re.STENCIL_BUFFER_BIT),Re.clear(r)},this.clearColor=function(){Re.clear(Re.COLOR_BUFFER_BIT)},this.clearDepth=function(){Re.clear(Re.DEPTH_BUFFER_BIT)},this.clearStencil=function(){Re.clear(Re.STENCIL_BUFFER_BIT)},this.clearTarget=function(e,t,n,r){this.setRenderTarget(e),this.clear(t,n,r)},this.resetGLState=rt;var bt=function(e){var t=e.target;t.traverse(function(e){e.removeEventListener("remove",bt),D(e)})},xt=function(e){var t=e.target;t.removeEventListener("dispose",xt),St(t)},wt=function(e){var t=e.target;t.removeEventListener("dispose",wt),Tt(t),De.info.memory.textures--},Et=function(e){var t=e.target;t.removeEventListener("dispose",Et),At(t),De.info.memory.textures--},Mt=function(e){var t=e.target;t.removeEventListener("dispose",Mt),Nt(t)},Ct=function(e){for(var t=["__webglVertexBuffer","__webglNormalBuffer","__webglTangentBuffer","__webglColorBuffer","__webglUVBuffer","__webglUV2Buffer","__webglSkinIndicesBuffer","__webglSkinWeightsBuffer","__webglFaceBuffer","__webglLineBuffer","__webglLineDistanceBuffer"],n=0,r=t.length;n1&&(u=!0);for(var g=0,y=v.length;g1&&(u=!0);for(var g=0,y=v.length;g=0?l&&(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglVertexBuffer),$e.enableAttribute(u.position),Re.vertexAttribPointer(u.position,3,Re.FLOAT,!1,0,0)):a.morphTargetBase&&m(r,i,a),l){if(i.__webglCustomAttributesList)for(var p=0,d=i.__webglCustomAttributesList.length;p=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,f.buffer),$e.enableAttribute(u[f.buffer.belongsToAttribute]),Re.vertexAttribPointer(u[f.buffer.belongsToAttribute],f.size,Re.FLOAT,!1,0,0))}u.color>=0&&(a.geometry.colors.length>0||a.geometry.faces.length>0?(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglColorBuffer),$e.enableAttribute(u.color),Re.vertexAttribPointer(u.color,3,Re.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&Re.vertexAttrib3fv(u.color,r.defaultAttributeValues.color)),u.normal>=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglNormalBuffer),$e.enableAttribute(u.normal),Re.vertexAttribPointer(u.normal,3,Re.FLOAT,!1,0,0)),u.tangent>=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglTangentBuffer),$e.enableAttribute(u.tangent),Re.vertexAttribPointer(u.tangent,4,Re.FLOAT,!1,0,0)),u.uv>=0&&(a.geometry.faceVertexUvs[0]?(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglUVBuffer),$e.enableAttribute(u.uv),Re.vertexAttribPointer(u.uv,2,Re.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&Re.vertexAttrib2fv(u.uv,r.defaultAttributeValues.uv)),u.uv2>=0&&(a.geometry.faceVertexUvs[1]?(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglUV2Buffer),$e.enableAttribute(u.uv2),Re.vertexAttribPointer(u.uv2,2,Re.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&Re.vertexAttrib2fv(u.uv2,r.defaultAttributeValues.uv2)),r.skinning&&u.skinIndex>=0&&u.skinWeight>=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglSkinIndicesBuffer),$e.enableAttribute(u.skinIndex),Re.vertexAttribPointer(u.skinIndex,4,Re.FLOAT,!1,0,0),Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglSkinWeightsBuffer),$e.enableAttribute(u.skinWeight),Re.vertexAttribPointer(u.skinWeight,4,Re.FLOAT,!1,0,0)),u.lineDistance>=0&&(Re.bindBuffer(Re.ARRAY_BUFFER,i.__webglLineDistanceBuffer),$e.enableAttribute(u.lineDistance),Re.vertexAttribPointer(u.lineDistance,1,Re.FLOAT,!1,0,0))}if($e.disableUnusedAttributes(),a instanceof o.Mesh){var v=i.__typeArray===Uint32Array?Re.UNSIGNED_INT:Re.UNSIGNED_SHORT;r.wireframe?($e.setLineWidth(r.wireframeLinewidth*de),l&&Re.bindBuffer(Re.ELEMENT_ARRAY_BUFFER,i.__webglLineBuffer),Re.drawElements(Re.LINES,i.__webglLineCount,v,0)):(l&&Re.bindBuffer(Re.ELEMENT_ARRAY_BUFFER,i.__webglFaceBuffer),Re.drawElements(Re.TRIANGLES,i.__webglFaceCount,v,0)),De.info.render.calls++,De.info.render.vertices+=i.__webglFaceCount,De.info.render.faces+=i.__webglFaceCount/3}else if(a instanceof o.Line){var g=a.mode===o.LineStrip?Re.LINE_STRIP:Re.LINES;$e.setLineWidth(r.linewidth*de),Re.drawArrays(g,0,i.__webglLineCount),De.info.render.calls++}else a instanceof o.PointCloud&&(Re.drawArrays(Re.POINTS,0,i.__webglParticleCount),De.info.render.calls++,De.info.render.points+=i.__webglParticleCount)}},this.render=function(e,t,n,r){if(t instanceof o.Camera==!1)return void o.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");var i=e.fog;Ve="",Fe=-1,Ie=null,Qe=!0,e.autoUpdate===!0&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),e.traverse(function(e){e instanceof o.SkinnedMesh&&e.skeleton.update()}),t.matrixWorldInverse.getInverse(t.matrixWorld),Xe.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),qe.setFromMatrix(Xe),Me.length=0,Te.length=0,Ae.length=0,Ne.length=0,Pe.length=0,_(e),De.sortObjects===!0&&(Te.sort(v),Ae.sort(g)),gt.render(e,t),De.info.render.calls=0,De.info.render.vertices=0,De.info.render.faces=0,De.info.render.points=0,this.setRenderTarget(n),(this.autoClear||r)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);for(var a=0,s=Se.length;a0&&n){for(var u=0,l=s.length;u-1?Re.compressedTexImage2D(Re.TEXTURE_2D,u,r,a.width,a.height,0,a.data):o.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Re.texImage2D(Re.TEXTURE_2D,u,r,a.width,a.height,0,r,i,a.data);else if(s.length>0&&n){for(var u=0,l=s.length;u0?i.gammaFactor:1,M=t(h),C=c.createProgram();s instanceof o.RawShaderMaterial?(x="",w=""):(x=["precision "+u.precision+" float;","precision "+u.precision+" int;",M,u.supportsVertexTextures?"#define VERTEX_TEXTURES":"",l.gammaInput?"#define GAMMA_INPUT":"",l.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+E,"#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,"#define MAX_SPOT_LIGHTS "+u.maxSpotLights,"#define MAX_HEMI_LIGHTS "+u.maxHemiLights,"#define MAX_SHADOWS "+u.maxShadows,"#define MAX_BONES "+u.maxBones,u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":"",u.envMap?"#define "+_:"",u.lightMap?"#define USE_LIGHTMAP":"",u.bumpMap?"#define USE_BUMPMAP":"",u.normalMap?"#define USE_NORMALMAP":"",u.specularMap?"#define USE_SPECULARMAP":"",u.alphaMap?"#define USE_ALPHAMAP":"",u.vertexColors?"#define USE_COLOR":"",u.flatShading?"#define FLAT_SHADED":"",u.skinning?"#define USE_SKINNING":"",u.useVertexTexture?"#define BONE_TEXTURE":"",u.morphTargets?"#define USE_MORPHTARGETS":"",u.morphNormals?"#define USE_MORPHNORMALS":"",u.wrapAround?"#define WRAP_AROUND":"",u.doubleSided?"#define DOUBLE_SIDED":"",u.flipSided?"#define FLIP_SIDED":"",u.shadowMapEnabled?"#define USE_SHADOWMAP":"",u.shadowMapEnabled?"#define "+g:"",u.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",u.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",u.sizeAttenuation?"#define USE_SIZEATTENUATION":"",u.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif",""].join("\n"),w=["precision "+u.precision+" float;","precision "+u.precision+" int;",u.bumpMap||u.normalMap||u.flatShading?"#extension GL_OES_standard_derivatives : enable":"",M,"#define MAX_DIR_LIGHTS "+u.maxDirLights,"#define MAX_POINT_LIGHTS "+u.maxPointLights,"#define MAX_SPOT_LIGHTS "+u.maxSpotLights,"#define MAX_HEMI_LIGHTS "+u.maxHemiLights,"#define MAX_SHADOWS "+u.maxShadows,u.alphaTest?"#define ALPHATEST "+u.alphaTest:"",l.gammaInput?"#define GAMMA_INPUT":"",l.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+E,u.useFog&&u.fog?"#define USE_FOG":"",u.useFog&&u.fogExp?"#define FOG_EXP2":"",u.map?"#define USE_MAP":"",u.envMap?"#define USE_ENVMAP":"",u.envMap?"#define "+y:"",u.envMap?"#define "+_:"",u.envMap?"#define "+b:"",u.lightMap?"#define USE_LIGHTMAP":"",u.bumpMap?"#define USE_BUMPMAP":"",u.normalMap?"#define USE_NORMALMAP":"",u.specularMap?"#define USE_SPECULARMAP":"",u.alphaMap?"#define USE_ALPHAMAP":"",u.vertexColors?"#define USE_COLOR":"",u.flatShading?"#define FLAT_SHADED":"",u.metal?"#define METAL":"",u.wrapAround?"#define WRAP_AROUND":"",u.doubleSided?"#define DOUBLE_SIDED":"",u.flipSided?"#define FLIP_SIDED":"",u.shadowMapEnabled?"#define USE_SHADOWMAP":"",u.shadowMapEnabled?"#define "+g:"",u.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",u.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",u.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",""].join("\n"));var S=new o.WebGLShader(c,c.VERTEX_SHADER,x+f),T=new o.WebGLShader(c,c.FRAGMENT_SHADER,w+m);c.attachShader(C,S),c.attachShader(C,T),void 0!==v&&c.bindAttribLocation(C,0,v),c.linkProgram(C);var A=c.getProgramInfoLog(C);c.getProgramParameter(C,c.LINK_STATUS)===!1&&o.error("THREE.WebGLProgram: shader error: "+c.getError(),"gl.VALIDATE_STATUS",c.getProgramParameter(C,c.VALIDATE_STATUS),"gl.getPRogramInfoLog",A),""!==A&&o.warn("THREE.WebGLProgram: gl.getProgramInfoLog()"+A),c.deleteShader(S),c.deleteShader(T);var N=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences","bindMatrix","bindMatrixInverse"];u.useVertexTexture?(N.push("boneTexture"),N.push("boneTextureWidth"),N.push("boneTextureHeight")):N.push("boneGlobalMatrices"),u.logarithmicDepthBuffer&&N.push("logDepthBufFC");for(var P in p)N.push(P);this.uniforms=n(c,C,N),N=["position","normal","uv","uv2","tangent","color","skinIndex","skinWeight","lineDistance"];for(var R=0;R0;var o;o=l?{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")}:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["precision mediump float;","uniform lowp int renderType;","uniform sampler2D map;","uniform sampler2D occlusionMap;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","float visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;","visibility = ( 1.0 - visibility / 4.0 );","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * visibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},a=n(o),s={vertex:p.getAttribLocation(a,"position"),uv:p.getAttribLocation(a,"uv")},u={renderType:p.getUniformLocation(a,"renderType"),map:p.getUniformLocation(a,"map"),occlusionMap:p.getUniformLocation(a,"occlusionMap"),opacity:p.getUniformLocation(a,"opacity"),color:p.getUniformLocation(a,"color"),scale:p.getUniformLocation(a,"scale"),rotation:p.getUniformLocation(a,"rotation"),screenPosition:p.getUniformLocation(a,"screenPosition")}};this.render=function(n,f,m,v){if(0!==t.length){var g=new o.Vector3,y=v/m,_=.5*m,b=.5*v,x=16/v,w=new o.Vector2(x*y,x),E=new o.Vector3(1,1,0),M=new o.Vector2(1,1);void 0===a&&d(),p.useProgram(a),p.enableVertexAttribArray(s.vertex),p.enableVertexAttribArray(s.uv),p.uniform1i(u.occlusionMap,0),p.uniform1i(u.map,1),p.bindBuffer(p.ARRAY_BUFFER,r),p.vertexAttribPointer(s.vertex,2,p.FLOAT,!1,16,0),p.vertexAttribPointer(s.uv,2,p.FLOAT,!1,16,8),p.bindBuffer(p.ELEMENT_ARRAY_BUFFER,i),p.disable(p.CULL_FACE),p.depthMask(!1);for(var C=0,S=t.length;C0&&M.x0&&M.y.001&&P.scale>.001&&(E.x=P.x,E.y=P.y,E.z=P.z,x=P.size*P.scale/v,w.x=x*y,w.y=x,p.uniform3f(u.screenPosition,E.x,E.y,E.z),p.uniform2f(u.scale,w.x,w.y),p.uniform1f(u.rotation,P.rotation),p.uniform1f(u.opacity,P.opacity),p.uniform3f(u.color,P.color.r,P.color.g,P.color.b),e.state.setBlending(P.blending,P.blendEquation,P.blendSrc,P.blendDst),e.setTexture(P.texture,1),p.drawElements(p.TRIANGLES,6,p.UNSIGNED_SHORT,0))}}}p.enable(p.CULL_FACE),p.enable(p.DEPTH_TEST),p.depthMask(!0),e.resetGLState()}}},o.ShadowMapPlugin=function(e,t,n,r){function i(e,t,r){if(t.visible){var o=n[t.id];if(o&&t.castShadow&&(t.frustumCulled===!1||m.intersectsObject(t)===!0))for(var a=0,s=o.length;ay.x&&(y.x=a.x),a.yy.y&&(y.y=a.y),a.zy.z&&(y.z=a.z)}n.left=g.x,n.right=y.x,n.top=y.y,n.bottom=g.y,n.updateProjectionMatrix()}function l(e){return e.material instanceof o.MeshFaceMaterial?e.material.materials[0]:e.material}var c,h,p,d,f=e.context,m=new o.Frustum,v=new o.Matrix4,g=new o.Vector3,y=new o.Vector3,_=new o.Vector3,b=[],x=o.ShaderLib.depthRGBA,w=o.UniformsUtils.clone(x.uniforms); +c=new o.ShaderMaterial({uniforms:w,vertexShader:x.vertexShader,fragmentShader:x.fragmentShader}),h=new o.ShaderMaterial({uniforms:w,vertexShader:x.vertexShader,fragmentShader:x.fragmentShader,morphTargets:!0}),p=new o.ShaderMaterial({uniforms:w,vertexShader:x.vertexShader,fragmentShader:x.fragmentShader,skinning:!0}),d=new o.ShaderMaterial({uniforms:w,vertexShader:x.vertexShader,fragmentShader:x.fragmentShader,morphTargets:!0,skinning:!0}),c._shadowPass=!0,h._shadowPass=!0,p._shadowPass=!0,d._shadowPass=!0,this.render=function(n,g){if(e.shadowMapEnabled!==!1){var y,x,w,E,M,C,S,T,A,N,P,R,D,O=[],L=0,k=null;for(f.clearColor(1,1,1,1),f.disable(f.BLEND),f.enable(f.CULL_FACE),f.frontFace(f.CCW),e.shadowMapCullFace===o.CullFaceFront?f.cullFace(f.FRONT):f.cullFace(f.BACK),e.state.setDepthTest(!0),y=0,x=t.length;y0&&B.morphTargets,z=R instanceof o.SkinnedMesh&&B.skinning,N=R.customDepthMaterial?R.customDepthMaterial:z?j?d:p:j?h:c,e.setMaterialFaces(B),A instanceof o.BufferGeometry?e.renderBufferDirect(T,t,k,N,A,R):e.renderBuffer(T,t,k,N,A,R);for(w=0,E=r.length;w 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),h.compileShader(n),h.compileShader(r),h.attachShader(t,n),h.attachShader(t,r),h.linkProgram(t),t}function r(e,t){return e.z!==t.z?t.z-e.z:t.id-e.id}var i,a,s,u,l,c,h=e.context,p=new o.Vector3,d=new o.Quaternion,f=new o.Vector3,m=function(){var e=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),t=new Uint16Array([0,1,2,0,2,3]);i=h.createBuffer(),a=h.createBuffer(),h.bindBuffer(h.ARRAY_BUFFER,i),h.bufferData(h.ARRAY_BUFFER,e,h.STATIC_DRAW),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,a),h.bufferData(h.ELEMENT_ARRAY_BUFFER,t,h.STATIC_DRAW),s=n(),u={position:h.getAttribLocation(s,"position"),uv:h.getAttribLocation(s,"uv")},l={uvOffset:h.getUniformLocation(s,"uvOffset"),uvScale:h.getUniformLocation(s,"uvScale"),rotation:h.getUniformLocation(s,"rotation"),scale:h.getUniformLocation(s,"scale"),color:h.getUniformLocation(s,"color"),map:h.getUniformLocation(s,"map"),opacity:h.getUniformLocation(s,"opacity"),modelViewMatrix:h.getUniformLocation(s,"modelViewMatrix"),projectionMatrix:h.getUniformLocation(s,"projectionMatrix"),fogType:h.getUniformLocation(s,"fogType"),fogDensity:h.getUniformLocation(s,"fogDensity"),fogNear:h.getUniformLocation(s,"fogNear"),fogFar:h.getUniformLocation(s,"fogFar"),fogColor:h.getUniformLocation(s,"fogColor"),alphaTest:h.getUniformLocation(s,"alphaTest")};var r=document.createElement("canvas");r.width=8,r.height=8;var p=r.getContext("2d");p.fillStyle="white",p.fillRect(0,0,8,8),c=new o.Texture(r),c.needsUpdate=!0};this.render=function(n,v){if(0!==t.length){void 0===s&&m(),h.useProgram(s),h.enableVertexAttribArray(u.position),h.enableVertexAttribArray(u.uv),h.disable(h.CULL_FACE),h.enable(h.BLEND),h.bindBuffer(h.ARRAY_BUFFER,i),h.vertexAttribPointer(u.position,2,h.FLOAT,!1,16,0),h.vertexAttribPointer(u.uv,2,h.FLOAT,!1,16,8),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,a),h.uniformMatrix4fv(l.projectionMatrix,!1,v.projectionMatrix.elements),h.activeTexture(h.TEXTURE0),h.uniform1i(l.map,0);var g=0,y=0,_=n.fog;_?(h.uniform3f(l.fogColor,_.color.r,_.color.g,_.color.b),_ instanceof o.Fog?(h.uniform1f(l.fogNear,_.near),h.uniform1f(l.fogFar,_.far),h.uniform1i(l.fogType,1),g=1,y=1):_ instanceof o.FogExp2&&(h.uniform1f(l.fogDensity,_.density),h.uniform1i(l.fogType,2),g=2,y=2)):(h.uniform1i(l.fogType,0),g=0,y=0);for(var b=0,x=t.length;ba-1?a-1:d+1,v=p-1<0?0:p-1,g=p+1>i-1?i-1:p+1,y=[],_=[0,0,l[4*(d*i+p)]/255*t];y.push([-1,0,l[4*(d*i+v)]/255*t]),y.push([-1,-1,l[4*(f*i+v)]/255*t]),y.push([0,-1,l[4*(f*i+p)]/255*t]),y.push([1,-1,l[4*(f*i+g)]/255*t]),y.push([1,0,l[4*(d*i+g)]/255*t]),y.push([1,1,l[4*(m*i+g)]/255*t]),y.push([0,1,l[4*(m*i+p)]/255*t]),y.push([-1,1,l[4*(m*i+v)]/255*t]);for(var b=[],x=y.length,w=0;w0)for(s=0;s2;){if(d--<=0)return o.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()"),t?h:l;if(a=s,p<=a&&(a=0),s=a+1,p<=s&&(s=0),u=s+1,p<=u&&(u=0),i(e,a,s,u,p,c)){var f,m,v,g,y;for(f=c[a],m=c[s],v=c[u],l.push([e[f],e[m],e[v]]),h.push([c[a],c[s],c[u]]),g=s,y=s+1;y(c-u)*(d-l)-(h-l)*(p-u))return!1;var v,g,y,_,b,x,w,E,M,C,S,T,A,N,P;for(v=p-c,g=d-h,y=u-p,_=l-d,b=c-u,x=h-l,s=0;s=-t&&N>=-t&&A>=-t))return!1;return!0};return e.Triangulate=n,e.Triangulate.area=r,e}(o.FontUtils),r._typeface_js={faces:o.FontUtils.faces,loadFace:o.FontUtils.loadFace},o.typeface_js=r._typeface_js,o.Audio=function(e){o.Object3D.call(this),this.type="Audio",this.context=e.context,this.source=this.context.createBufferSource(),this.source.onended=this.onEnded.bind(this),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.panner=this.context.createPanner(),this.panner.connect(this.gain),this.autoplay=!1,this.startTime=0,this.isPlaying=!1},o.Audio.prototype=Object.create(o.Object3D.prototype),o.Audio.prototype.constructor=o.Audio,o.Audio.prototype.load=function(e){var t=this,n=new XMLHttpRequest;return n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(e){t.context.decodeAudioData(this.response,function(e){t.source.buffer=e,t.autoplay&&t.play()})},n.send(),this},o.Audio.prototype.play=function(){if(this.isPlaying===!0)return void o.warn("THREE.Audio: Audio is already playing.");var e=this.context.createBufferSource();e.buffer=this.source.buffer,e.loop=this.source.loop,e.onended=this.source.onended,e.connect(this.panner),e.start(0,this.startTime),this.isPlaying=!0,this.source=e},o.Audio.prototype.pause=function(){this.source.stop(),this.startTime=this.context.currentTime},o.Audio.prototype.stop=function(){this.source.stop(),this.startTime=0},o.Audio.prototype.onEnded=function(){this.isPlaying=!1},o.Audio.prototype.setLoop=function(e){this.source.loop=e},o.Audio.prototype.setRefDistance=function(e){this.panner.refDistance=e},o.Audio.prototype.setRolloffFactor=function(e){this.panner.rolloffFactor=e},o.Audio.prototype.setVolume=function(e){this.gain.gain.value=e},o.Audio.prototype.updateMatrixWorld=function(){var e=new o.Vector3;return function(t){o.Object3D.prototype.updateMatrixWorld.call(this,t),e.setFromMatrixPosition(this.matrixWorld),this.panner.setPosition(e.x,e.y,e.z)}}(),o.AudioListener=function(){o.Object3D.call(this),this.type="AudioListener",this.context=new(window.AudioContext||window.webkitAudioContext)},o.AudioListener.prototype=Object.create(o.Object3D.prototype),o.AudioListener.prototype.constructor=o.AudioListener,o.AudioListener.prototype.updateMatrixWorld=function(){var e=new o.Vector3,t=new o.Quaternion,n=new o.Vector3,r=new o.Vector3,i=new o.Vector3,a=new o.Vector3;return function(s){o.Object3D.prototype.updateMatrixWorld.call(this,s);var u=this.context.listener,l=this.up;this.matrixWorld.decompose(e,t,n),r.set(0,0,-1).applyQuaternion(t),i.subVectors(e,a),u.setPosition(e.x,e.y,e.z),u.setOrientation(r.x,r.y,r.z,l.x,l.y,l.z),u.setVelocity(i.x,i.y,i.z),a.copy(e)}}(),o.Curve=function(){},o.Curve.prototype.getPoint=function(e){return o.warn("THREE.Curve: Warning, getPoint() not implemented!"),null},o.Curve.prototype.getPointAt=function(e){var t=this.getUtoTmapping(e);return this.getPoint(t)},o.Curve.prototype.getPoints=function(e){e||(e=5);var t,n=[];for(t=0;t<=e;t++)n.push(this.getPoint(t/e));return n},o.Curve.prototype.getSpacedPoints=function(e){e||(e=5);var t,n=[];for(t=0;t<=e;t++)n.push(this.getPointAt(t/e));return n},o.Curve.prototype.getLength=function(){var e=this.getLengths();return e[e.length-1]},o.Curve.prototype.getLengths=function(e){if(e||(e=this.__arcLengthDivisions?this.__arcLengthDivisions:200),this.cacheArcLengths&&this.cacheArcLengths.length==e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,n,r=[],o=this.getPoint(0),i=0;for(r.push(0),n=1;n<=e;n++)t=this.getPoint(n/e),i+=t.distanceTo(o),r.push(i),o=t;return this.cacheArcLengths=r,r},o.Curve.prototype.updateArcLengths=function(){this.needsUpdate=!0,this.getLengths()},o.Curve.prototype.getUtoTmapping=function(e,t){var n,r=this.getLengths(),o=0,i=r.length;n=t?t:e*r[i-1];for(var a,s=0,u=i-1;s<=u;)if(o=Math.floor(s+(u-s)/2),a=r[o]-n,a<0)s=o+1;else{if(!(a>0)){u=o;break}u=o-1}if(o=u,r[o]==n){var l=o/(i-1);return l}var c=r[o],h=r[o+1],p=h-c,d=(n-c)/p,l=(o+d)/(i-1);return l},o.Curve.prototype.getTangent=function(e){var t=1e-4,n=e-t,r=e+t;n<0&&(n=0),r>1&&(r=1);var o=this.getPoint(n),i=this.getPoint(r),a=i.clone().sub(o);return a.normalize()},o.Curve.prototype.getTangentAt=function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},o.Curve.Utils={tangentQuadraticBezier:function(e,t,n,r){return 2*(1-e)*(n-t)+2*e*(r-n)},tangentCubicBezier:function(e,t,n,r,o){return-3*t*(1-e)*(1-e)+3*n*(1-e)*(1-e)-6*e*n*(1-e)+6*e*r*(1-e)-3*e*e*r+3*e*e*o},tangentSpline:function(e,t,n,r,o){var i=6*e*e-6*e,a=3*e*e-4*e+1,s=-6*e*e+6*e,u=3*e*e-2*e;return i+a+s+u},interpolate:function(e,t,n,r,o){var i=.5*(n-e),a=.5*(r-t),s=o*o,u=o*s;return(2*t-2*n+i+a)*u+(-3*t+3*n-2*i-a)*s+i*o+t}},o.Curve.create=function(e,t){return e.prototype=Object.create(o.Curve.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},o.CurvePath=function(){this.curves=[],this.bends=[],this.autoClose=!1},o.CurvePath.prototype=Object.create(o.Curve.prototype),o.CurvePath.prototype.constructor=o.CurvePath,o.CurvePath.prototype.add=function(e){this.curves.push(e)},o.CurvePath.prototype.checkConnection=function(){},o.CurvePath.prototype.closePath=function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new o.LineCurve(t,e))},o.CurvePath.prototype.getPoint=function(e){for(var t,n,r=e*this.getLength(),o=this.getCurveLengths(),i=0;i=r){t=o[i]-r,n=this.curves[i];var a=1-t/n.getLength();return n.getPointAt(a)}i++}return null},o.CurvePath.prototype.getLength=function(){var e=this.getCurveLengths();return e[e.length-1]},o.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var e,t=[],n=0,r=this.curves.length;for(e=0;ee?e=u.x:u.xt?t=u.y:u.yn?n=u.z:u.z0?(v=x[x.length-1],f=v.x,m=v.y):(v=this.actions[n-1].args,f=v[v.length-2],m=v[v.length-1]),g=1;g<=e;g++)y=g/e,_=o.Shape.Utils.b2(y,f,p,u),b=o.Shape.Utils.b2(y,m,d,l),x.push(new o.Vector2(_,b));break;case o.PathActions.BEZIER_CURVE_TO:for(u=s[4],l=s[5],p=s[0],d=s[1],c=s[2],h=s[3],x.length>0?(v=x[x.length-1],f=v.x,m=v.y):(v=this.actions[n-1].args,f=v[v.length-2],m=v[v.length-1]),g=1;g<=e;g++)y=g/e,_=o.Shape.Utils.b3(y,f,p,c,u),b=o.Shape.Utils.b3(y,m,d,h,l),x.push(new o.Vector2(_,b));break;case o.PathActions.CSPLINE_THRU:v=this.actions[n-1].args;var w=new o.Vector2(v[v.length-2],v[v.length-1]),E=[w],M=e*s[0].length;E=E.concat(s[0]);var C=new o.SplineCurve(E);for(g=1;g<=M;g++)x.push(C.getPointAt(g/M));break;case o.PathActions.ARC:var S,T=s[0],A=s[1],N=s[2],P=s[3],R=s[4],D=!!s[5],O=R-P,L=2*e;for(g=1;g<=L;g++)y=g/L,D||(y=1-y),S=P+y*O,_=T+N*Math.cos(S),b=A+N*Math.sin(S),x.push(new o.Vector2(_,b));break;case o.PathActions.ELLIPSE:var S,T=s[0],A=s[1],k=s[2],F=s[3],P=s[4],R=s[5],D=!!s[6],O=R-P,L=2*e;for(g=1;g<=L;g++)y=g/L,D||(y=1-y),S=P+y*O,_=T+k*Math.cos(S),b=A+F*Math.sin(S),x.push(new o.Vector2(_,b))}var V=x[x.length-1],I=1e-10;return Math.abs(V.x-x[0].x)n){if(c<0&&(s=t[a],l=-l,u=t[i],c=-c),e.yu.y)continue;if(e.y==s.y){if(e.x==s.x)return!0}else{var h=c*(e.x-s.x)-l*(e.y-s.y);if(0==h)return!0;if(h<0)continue;o=!o}}else{if(e.y!=s.y)continue;if(u.x<=e.x&&e.x<=s.x||s.x<=e.x&&e.x<=u.x)return!0}}return o}var a=n(this.actions);if(0==a.length)return[];if(t===!0)return r(a);var s,u,l,c=[];if(1==a.length)return u=a[0],l=new o.Shape,l.actions=u.actions,l.curves=u.curves,c.push(l),c;var h=!o.Shape.Utils.isClockWise(a[0].getPoints());h=e?!h:h;var p,d=[],f=[],m=[],v=0;f[v]=void 0,m[v]=[];var g,y;for(g=0,y=a.length;g1){for(var _=!1,b=[],x=0,w=f.length;x0&&(_||(m=d))}var A,N,P;for(g=0,y=f.length;ga){var m;if(d>0){if(f<0||f>d)return[];if(m=c*h-l*p,m<0||m>d)return[]}else{if(f>0||f0||mS?[]:x==S?i?[]:[_]:w<=S?[_,b]:[_,M]}function i(e,t,n,r){var o=1e-10,i=t.x-e.x,a=t.y-e.y,s=n.x-e.x,u=n.y-e.y,l=r.x-e.x,c=r.y-e.y,h=i*u-a*s,p=i*c-a*l;if(Math.abs(h)>o){var d=l*u-c*s;return h>0?p>=0&&d>=0:p>=0||d>=0}return p>0}function a(e,t){function n(e,t){var n=y.length-1,r=e-1;r<0&&(r=n);var o=e+1;o>n&&(o=0);var a=i(y[e],y[r],y[o],s[t]);if(!a)return!1;var u=s.length-1,l=t-1;l<0&&(l=u);var c=t+1;return c>u&&(c=0),a=i(s[t],s[l],s[c],y[e]),!!a}function o(e,t){var n,o,i;for(n=0;n0)return!0;return!1}function a(e,n){var o,i,a,s,u;for(o=0;o<_.length;o++)for(i=t[_[o]],a=0;a0)return!0;return!1}for(var s,u,l,c,h,p,d,f,m,v,g,y=e.concat(),_=[],b=[],x=0,w=t.length;x0;){if(M--,M<0){console.log("Infinite Loop! Holes left:"+_.length+", Probably Hole outside Shape!"); +break}for(l=E;l=0)break;b[d]=!0}if(u>=0)break}}return y}for(var s,u,l,c,h,p,d={},f=e.concat(),m=0,v=t.length;mt.length-2?t.length-1:r+1],l=t[r>t.length-3?t.length-1:r+2],c=new o.Vector2;return c.x=o.Curve.Utils.interpolate(a.x,s.x,u.x,l.x,i),c.y=o.Curve.Utils.interpolate(a.y,s.y,u.y,l.y,i),c},o.EllipseCurve=function(e,t,n,r,o,i,a){this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=o,this.aEndAngle=i,this.aClockwise=a},o.EllipseCurve.prototype=Object.create(o.Curve.prototype),o.EllipseCurve.prototype.constructor=o.EllipseCurve,o.EllipseCurve.prototype.getPoint=function(e){var t=this.aEndAngle-this.aStartAngle;t<0&&(t+=2*Math.PI),t>2*Math.PI&&(t-=2*Math.PI);var n;n=this.aClockwise===!0?this.aEndAngle+(1-e)*(2*Math.PI-t):this.aStartAngle+e*t;var r=new o.Vector2;return r.x=this.aX+this.xRadius*Math.cos(n),r.y=this.aY+this.yRadius*Math.sin(n),r},o.ArcCurve=function(e,t,n,r,i,a){o.EllipseCurve.call(this,e,t,n,n,r,i,a)},o.ArcCurve.prototype=Object.create(o.EllipseCurve.prototype),o.ArcCurve.prototype.constructor=o.ArcCurve,o.LineCurve3=o.Curve.create(function(e,t){this.v1=e,this.v2=t},function(e){var t=new o.Vector3;return t.subVectors(this.v2,this.v1),t.multiplyScalar(e),t.add(this.v1),t}),o.QuadraticBezierCurve3=o.Curve.create(function(e,t,n){this.v0=e,this.v1=t,this.v2=n},function(e){var t=new o.Vector3;return t.x=o.Shape.Utils.b2(e,this.v0.x,this.v1.x,this.v2.x),t.y=o.Shape.Utils.b2(e,this.v0.y,this.v1.y,this.v2.y),t.z=o.Shape.Utils.b2(e,this.v0.z,this.v1.z,this.v2.z),t}),o.CubicBezierCurve3=o.Curve.create(function(e,t,n,r){this.v0=e,this.v1=t,this.v2=n,this.v3=r},function(e){var t=new o.Vector3;return t.x=o.Shape.Utils.b3(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),t.y=o.Shape.Utils.b3(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y),t.z=o.Shape.Utils.b3(e,this.v0.z,this.v1.z,this.v2.z,this.v3.z),t}),o.SplineCurve3=o.Curve.create(function(e){this.points=void 0==e?[]:e},function(e){var t=this.points,n=(t.length-1)*e,r=Math.floor(n),i=n-r,a=t[0==r?r:r-1],s=t[r],u=t[r>t.length-2?t.length-1:r+1],l=t[r>t.length-3?t.length-1:r+2],c=new o.Vector3;return c.x=o.Curve.Utils.interpolate(a.x,s.x,u.x,l.x,i),c.y=o.Curve.Utils.interpolate(a.y,s.y,u.y,l.y,i),c.z=o.Curve.Utils.interpolate(a.z,s.z,u.z,l.z,i),c}),o.ClosedSplineCurve3=o.Curve.create(function(e){this.points=void 0==e?[]:e},function(e){var t=this.points,n=(t.length-0)*e,r=Math.floor(n),i=n-r;r+=r>0?0:(Math.floor(Math.abs(r)/t.length)+1)*t.length;var a=t[(r-1)%t.length],s=t[r%t.length],u=t[(r+1)%t.length],l=t[(r+2)%t.length],c=new o.Vector3;return c.x=o.Curve.Utils.interpolate(a.x,s.x,u.x,l.x,i),c.y=o.Curve.Utils.interpolate(a.y,s.y,u.y,l.y,i),c.z=o.Curve.Utils.interpolate(a.z,s.z,u.z,l.z,i),c}),o.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){o.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){o.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){o.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(e){if(e.initialized===!0)return e;for(var t=0;tu.index;)u=l,l=this.getNextKeyWith(s,e,l.index+1);i.prevKey[s]=u,i.nextKey[s]=l}}},resetBlendWeights:function(){for(var e=0,t=this.hierarchy.length;ee.length-2?r:r+1,p[3]=r>e.length-3?r:r+2,u=e[p[0]],l=e[p[1]],c=e[p[2]],h=e[p[3]],i=o*o,s=o*i,d[0]=a(u[0],l[0],c[0],h[0],o,i,s),d[1]=a(u[1],l[1],c[1],h[1],o,i,s),d[2]=a(u[2],l[2],c[2],h[2],o,i,s),d},a=function(e,t,n,r,o,i,a){var s=.5*(n-e),u=.5*(r-t);return(2*(t-n)+s+u)*a+(-3*(t-n)-2*s-u)*i+s*o+t};return function(a){if(this.isPlaying!==!1&&(this.currentTime+=a*this.timeScale,0!==this.weight)){var s=this.data.length;(this.currentTime>s||this.currentTime<0)&&(this.loop?(this.currentTime%=s,this.currentTime<0&&(this.currentTime+=s),this.reset()):this.stop());for(var u=0,l=this.hierarchy.length;u0&&v.time<=this.currentTime||this.timeScale<0&&m.time>=this.currentTime){for(m=this.data.hierarchy[u].keys[0],v=this.getNextKeyWith(f,u,1);v.timem.index;)m=v,v=this.getNextKeyWith(f,u,v.index+1);h.prevKey[f]=m,h.nextKey[f]=v}var g=(this.currentTime-m.time)/(v.time-m.time),y=m[f],_=v[f];if(g<0&&(g=0),g>1&&(g=1),"pos"===f){if(this.interpolationType===o.AnimationHandler.LINEAR){n.x=y[0]+(_[0]-y[0])*g,n.y=y[1]+(_[1]-y[1])*g,n.z=y[2]+(_[2]-y[2])*g;var b=this.weight/(this.weight+p.positionWeight);c.position.lerp(n,b),p.positionWeight+=this.weight}else if(this.interpolationType===o.AnimationHandler.CATMULLROM||this.interpolationType===o.AnimationHandler.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",u,m.index-1).pos,e[1]=y,e[2]=_,e[3]=this.getNextKeyWith("pos",u,v.index+1).pos,g=.33*g+.33;var x=i(e,g),b=this.weight/(this.weight+p.positionWeight);p.positionWeight+=this.weight;var w=c.position;if(w.x=w.x+(x[0]-w.x)*b,w.y=w.y+(x[1]-w.y)*b,w.z=w.z+(x[2]-w.z)*b,this.interpolationType===o.AnimationHandler.CATMULLROM_FORWARD){var E=i(e,1.01*g);t.set(E[0],E[1],E[2]),t.sub(w),t.y=0,t.normalize();var M=Math.atan2(t.x,t.z);c.rotation.set(0,M,0)}}}else if("rot"===f)if(o.Quaternion.slerp(y,_,r,g),0===p.quaternionWeight)c.quaternion.copy(r),p.quaternionWeight=this.weight;else{var b=this.weight/(this.weight+p.quaternionWeight);o.Quaternion.slerp(c.quaternion,r,c.quaternion,b),p.quaternionWeight+=this.weight}else if("scl"===f){n.x=y[0]+(_[0]-y[0])*g,n.y=y[1]+(_[1]-y[1])*g,n.z=y[2]+(_[2]-y[2])*g;var b=this.weight/(this.weight+p.scaleWeight);c.scale.lerp(n,b),p.scaleWeight+=this.weight}}return!0}}}(),getNextKeyWith:function(e,t,n){var r=this.data.hierarchy[t].keys;for(this.interpolationType===o.AnimationHandler.CATMULLROM||this.interpolationType===o.AnimationHandler.CATMULLROM_FORWARD?n=n0?n:0:n>=0?n:n+r.length;n>=0;n--)if(void 0!==r[n][e])return r[n];return this.data.hierarchy[t].keys[r.length-1]}},o.KeyFrameAnimation=function(e){this.root=e.node,this.data=o.AnimationHandler.init(e),this.hierarchy=o.AnimationHandler.parse(this.root),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var t=0,n=this.hierarchy.length;tt&&(this.currentTime%=t),this.currentTime=Math.min(this.currentTime,t);for(var n=0,r=this.hierarchy.length;nu.index;)u=l,l=a[u.index+1];s.prevKey=u,s.nextKey=l}l.time>=this.currentTime?u.interpolate(l,this.currentTime):u.interpolate(l,l.time),this.data.hierarchy[n].node.updateMatrix(),o.matrixWorldNeedsUpdate=!0}}}},getNextKeyWith:function(e,t,n){var r=this.data.hierarchy[t].keys;for(n%=r.length;n=0?n:n+r.length;n>=0;n--)if(r[n].hasTarget(e))return r[n];return r[r.length-1]}},o.MorphAnimation=function(e){this.mesh=e,this.frames=e.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.lastFrame=0,this.currentFrame=0,this.isPlaying=!1},o.MorphAnimation.prototype={constructor:o.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(e){if(this.isPlaying!==!1){this.currentTime+=e,this.loop===!0&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var t=this.duration/this.frames,n=Math.floor(this.currentTime/t),r=this.mesh.morphTargetInfluences;n!=this.currentFrame&&(r[this.lastFrame]=0,r[this.currentFrame]=1,r[n]=0,this.lastFrame=this.currentFrame,this.currentFrame=n),r[n]=this.currentTime%t/t,r[this.lastFrame]=1-r[n]}}},o.BoxGeometry=function(e,t,n,r,i,a){function s(e,t,n,r,i,a,s,l){var c,h,p,d=u.widthSegments,f=u.heightSegments,m=i/2,v=a/2,g=u.vertices.length;"x"===e&&"y"===t||"y"===e&&"x"===t?c="z":"x"===e&&"z"===t||"z"===e&&"x"===t?(c="y",f=u.depthSegments):("z"===e&&"y"===t||"y"===e&&"z"===t)&&(c="x",d=u.depthSegments);var y=d+1,_=f+1,b=i/d,x=a/f,w=new o.Vector3;for(w[c]=s>0?1:-1,p=0;p<_;p++)for(h=0;h0)for(this.vertices.push(new o.Vector3(0,h,0)),l=0;l0)for(this.vertices.push(new o.Vector3(0,-h,0)),l=0;la){var f=Math.sqrt(p),m=Math.sqrt(c*c+h*h),v=t.x-l/f,g=t.y+u/f,y=n.x-h/m,_=n.y+c/m,b=((y-v)*h-(_-g)*c)/(u*h-l*c);r=v+u*b-e.x,i=g+l*b-e.y;var x=r*r+i*i;if(x<=2)return new o.Vector2(r,i);s=Math.sqrt(x/2)}else{var w=!1;u>a?c>a&&(w=!0):u<-a?c<-a&&(w=!0):Math.sign(l)==Math.sign(h)&&(w=!0),w?(r=-l,i=u,s=Math.sqrt(p)):(r=u,i=l,s=Math.sqrt(p/2))}return new o.Vector2(r/s,i/s)}function i(){if(b){var e=0,t=G*e;for(K=0;K=0;){n=K,r=K-1,r<0&&(r=e.length-1);var o=0,i=w+2*_;for(o=0;o=0;U--){for(j=U/_,z=g*(1-j),B=y*Math.sin(j*Math.PI/2),K=0,Y=I.length;K65535?Uint32Array:Uint16Array)(s*u*6),y=0;y_&&(v.normalize(),i=Math.acos(o.Math.clamp(d[c-1].dot(d[c]),-1,1)),f[c].applyMatrix4(g.makeRotationAxis(v,i))),m[c].crossVectors(d[c],f[c]);if(n)for(i=Math.acos(o.Math.clamp(f[0].dot(f[y-1]),-1,1)),i/=y-1,d[0].dot(v.crossVectors(f[0],f[y-1]))>0&&(i=-i),c=1;c.9&&S<.1&&(w<.2&&(x[0].x+=1),E<.2&&(x[1].x+=1),M<.2&&(x[2].x+=1))}for(var p=0,d=this.vertices.length;p.99999?this.quaternion.set(0,0,0,1):n.y<-.99999?this.quaternion.set(1,0,0,0):(t.set(n.z,0,-n.x).normalize(),e=Math.acos(n.y),this.quaternion.setFromAxisAngle(t,e))}}(),o.ArrowHelper.prototype.setLength=function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,e-t,1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()},o.ArrowHelper.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},o.BoxHelper=function(e){var t=new o.BufferGeometry;t.addAttribute("position",new o.BufferAttribute(new Float32Array(72),3)),o.Line.call(this,t,new o.LineBasicMaterial({color:16776960}),o.LinePieces),void 0!==e&&this.update(e)},o.BoxHelper.prototype=Object.create(o.Line.prototype),o.BoxHelper.prototype.constructor=o.BoxHelper,o.BoxHelper.prototype.update=function(e){var t=e.geometry;null===t.boundingBox&&t.computeBoundingBox();var n=t.boundingBox.min,r=t.boundingBox.max,o=this.geometry.attributes.position.array;o[0]=r.x,o[1]=r.y,o[2]=r.z,o[3]=n.x,o[4]=r.y,o[5]=r.z,o[6]=n.x,o[7]=r.y,o[8]=r.z,o[9]=n.x,o[10]=n.y,o[11]=r.z,o[12]=n.x,o[13]=n.y,o[14]=r.z,o[15]=r.x,o[16]=n.y,o[17]=r.z,o[18]=r.x,o[19]=n.y,o[20]=r.z,o[21]=r.x,o[22]=r.y,o[23]=r.z,o[24]=r.x,o[25]=r.y,o[26]=n.z,o[27]=n.x,o[28]=r.y,o[29]=n.z,o[30]=n.x,o[31]=r.y,o[32]=n.z,o[33]=n.x,o[34]=n.y,o[35]=n.z,o[36]=n.x,o[37]=n.y,o[38]=n.z,o[39]=r.x,o[40]=n.y,o[41]=n.z,o[42]=r.x,o[43]=n.y,o[44]=n.z,o[45]=r.x,o[46]=r.y,o[47]=n.z,o[48]=r.x,o[49]=r.y,o[50]=r.z,o[51]=r.x,o[52]=r.y,o[53]=n.z,o[54]=n.x,o[55]=r.y,o[56]=r.z,o[57]=n.x,o[58]=r.y,o[59]=n.z,o[60]=n.x,o[61]=n.y,o[62]=r.z,o[63]=n.x,o[64]=n.y,o[65]=n.z,o[66]=r.x,o[67]=n.y,o[68]=r.z,o[69]=r.x,o[70]=n.y,o[71]=n.z,this.geometry.attributes.position.needsUpdate=!0,this.geometry.computeBoundingSphere(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},o.BoundingBoxHelper=function(e,t){var n=void 0!==t?t:8947848;this.object=e,this.box=new o.Box3,o.Mesh.call(this,new o.BoxGeometry(1,1,1),new o.MeshBasicMaterial({color:n,wireframe:!0}))},o.BoundingBoxHelper.prototype=Object.create(o.Mesh.prototype),o.BoundingBoxHelper.prototype.constructor=o.BoundingBoxHelper,o.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.center(this.position)},o.CameraHelper=function(e){function t(e,t,r){n(e,r),n(t,r)}function n(e,t){r.vertices.push(new o.Vector3),r.colors.push(new o.Color(t)),void 0===a[e]&&(a[e]=[]),a[e].push(r.vertices.length-1)}var r=new o.Geometry,i=new o.LineBasicMaterial({color:16777215,vertexColors:o.FaceColors}),a={},s=16755200,u=16711680,l=43775,c=16777215,h=3355443;t("n1","n2",s),t("n2","n4",s),t("n4","n3",s),t("n3","n1",s),t("f1","f2",s),t("f2","f4",s),t("f4","f3",s),t("f3","f1",s),t("n1","f1",s),t("n2","f2",s),t("n3","f3",s),t("n4","f4",s),t("p","n1",u),t("p","n2",u),t("p","n3",u),t("p","n4",u),t("u1","u2",l),t("u2","u3",l),t("u3","u1",l),t("c","t",c),t("p","c",h),t("cn1","cn2",h),t("cn3","cn4",h),t("cf1","cf2",h),t("cf3","cf4",h),o.Line.call(this,r,i,o.LinePieces),this.camera=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()},o.CameraHelper.prototype=Object.create(o.Line.prototype),o.CameraHelper.prototype.constructor=o.CameraHelper,o.CameraHelper.prototype.update=function(){var e,t,n=new o.Vector3,r=new o.Camera,i=function(o,i,a,s){n.set(i,a,s).unproject(r);var u=t[o];if(void 0!==u)for(var l=0,c=u.length;l1){var l=u[1];r[l]||(r[l]={start:1/0,end:-(1/0)});var c=r[l];ic.end&&(c.end=i),t||(t=l)}}for(var l in r){var c=r[l];this.createAnimation(l,c.start,c.end,e)}this.firstAnimation=t},o.MorphBlendMesh.prototype.setAnimationDirectionForward=function(e){var t=this.animationsMap[e];t&&(t.direction=1,t.directionBackwards=!1)},o.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(e){var t=this.animationsMap[e];t&&(t.direction=-1,t.directionBackwards=!0)},o.MorphBlendMesh.prototype.setAnimationFPS=function(e,t){var n=this.animationsMap[e];n&&(n.fps=t,n.duration=(n.end-n.start)/n.fps)},o.MorphBlendMesh.prototype.setAnimationDuration=function(e,t){var n=this.animationsMap[e];n&&(n.duration=t,n.fps=(n.end-n.start)/n.duration)},o.MorphBlendMesh.prototype.setAnimationWeight=function(e,t){var n=this.animationsMap[e];n&&(n.weight=t)},o.MorphBlendMesh.prototype.setAnimationTime=function(e,t){var n=this.animationsMap[e];n&&(n.time=t)},o.MorphBlendMesh.prototype.getAnimationTime=function(e){var t=0,n=this.animationsMap[e];return n&&(t=n.time),t},o.MorphBlendMesh.prototype.getAnimationDuration=function(e){var t=-1,n=this.animationsMap[e];return n&&(t=n.duration),t},o.MorphBlendMesh.prototype.playAnimation=function(e){var t=this.animationsMap[e];t?(t.time=0,t.active=!0):o.warn("THREE.MorphBlendMesh: animation["+e+"] undefined in .playAnimation()")},o.MorphBlendMesh.prototype.stopAnimation=function(e){var t=this.animationsMap[e];t&&(t.active=!1)},o.MorphBlendMesh.prototype.update=function(e){for(var t=0,n=this.animationsList.length;tr.duration||r.time<0)&&(r.direction*=-1,r.time>r.duration&&(r.time=r.duration,r.directionBackwards=!0),r.time<0&&(r.time=0,r.directionBackwards=!1)):(r.time=r.time%r.duration,r.time<0&&(r.time+=r.duration));var a=r.startFrame+o.Math.clamp(Math.floor(r.time/i),0,r.length-1),s=r.weight;a!==r.currentFrame&&(this.morphTargetInfluences[r.lastFrame]=0,this.morphTargetInfluences[r.currentFrame]=1*s,this.morphTargetInfluences[a]=0,r.lastFrame=r.currentFrame,r.currentFrame=a);var u=r.time%i/i;r.directionBackwards&&(u=1-u),this.morphTargetInfluences[r.currentFrame]=u*s,this.morphTargetInfluences[r.lastFrame]=(1-u)*s}}},"undefined"!=typeof e&&e.exports&&(t=e.exports=o),t.THREE=o},function(e,t,n){(function(t){"use strict";var n={};"production"!==t.env.NODE_ENV&&Object.freeze(n),e.exports=n}).call(t,n(1))},function(e,t){"use strict";t.__esModule=!0;var n="PUSH";t.PUSH=n;var r="REPLACE";t.REPLACE=r;var o="POP";t.POP=o,t.default={PUSH:n,REPLACE:r,POP:o}},function(e,t,n){(function(e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function i(e){return o(e).replace(/\/+/g,"/+")}function a(e){for(var t="",n=[],r=[],o=void 0,a=0,s=/:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)/g;o=s.exec(e);)o.index!==a&&(r.push(e.slice(a,o.index)),t+=i(e.slice(a,o.index))),o[1]?(t+="([^/?#]+)",n.push(o[1])):"**"===o[0]?(t+="([\\s\\S]*)",n.push("splat")):"*"===o[0]?(t+="([\\s\\S]*?)",n.push("splat")):"("===o[0]?t+="(?:":")"===o[0]&&(t+=")?"),r.push(o[0]),a=s.lastIndex;return a!==e.length&&(r.push(e.slice(a,e.length)),t+=i(e.slice(a,e.length))),{pattern:e,regexpSource:t,paramNames:n,tokens:r}}function s(e){return e in f||(f[e]=a(e)),f[e]}function u(e,t){"/"!==e.charAt(0)&&(e="/"+e),"/"!==t.charAt(0)&&(t="/"+t);var n=s(e),r=n.regexpSource,o=n.paramNames,i=n.tokens;r+="/*";var a="*"!==i[i.length-1];a&&(r+="([\\s\\S]*?)");var u=t.match(new RegExp("^"+r+"$","i")),l=void 0,c=void 0; +if(null!=u){if(a){l=u.pop();var h=u[0].substr(0,u[0].length-l.length);if(l&&"/"!==h.charAt(h.length-1))return{remainingPathname:null,paramNames:o,paramValues:null}}else l="";c=u.slice(1).map(function(e){return null!=e?decodeURIComponent(e):e})}else l=c=null;return{remainingPathname:l,paramNames:o,paramValues:c}}function l(e){return s(e).paramNames}function c(e,t){var n=u(e,t),r=n.paramNames,o=n.paramValues;return null!=o?r.reduce(function(e,t,n){return e[t]=o[n],e},{}):null}function h(t,n){n=n||{};for(var r=s(t),o=r.tokens,i=0,a="",u=0,l=void 0,c=void 0,h=void 0,p=0,f=o.length;p0?void 0:"production"!==e.env.NODE_ENV?d.default(!1,'Missing splat #%s for path "%s"',u,t):d.default(!1),null!=h&&(a+=encodeURI(h))):"("===l?i+=1:")"===l?i-=1:":"===l.charAt(0)?(c=l.substring(1),h=n[c],null!=h||i>0?void 0:"production"!==e.env.NODE_ENV?d.default(!1,'Missing "%s" parameter for path "%s"',c,t):d.default(!1),null!=h&&(a+=encodeURIComponent(h))):a+=l;return a.replace(/\/+/g,"/")}t.__esModule=!0,t.compilePattern=s,t.matchPattern=u,t.getParamNames=l,t.getParams=c,t.formatPattern=h;var p=n(15),d=r(p),f={}}).call(t,n(1))},function(e,t,n){(function(t){"use strict";function r(){var e=v&&v.traverseTwoPhase&&v.traverseEnterLeave;"production"!==t.env.NODE_ENV?c(e,"InstanceHandle not injected before use!"):void 0}var o=n(94),i=n(233),a=n(107),s=n(116),u=n(117),l=n(3),c=n(6),h={},p=null,d=function(e,t){e&&(i.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},f=function(e){return d(e,!0)},m=function(e){return d(e,!1)},v=null,g={injection:{injectMount:i.injection.injectMount,injectInstanceHandle:function(e){v=e,"production"!==t.env.NODE_ENV&&r()},getInstanceHandle:function(){return"production"!==t.env.NODE_ENV&&r(),v},injectEventPluginOrder:o.injectEventPluginOrder,injectEventPluginsByName:o.injectEventPluginsByName},eventNameDispatchConfigs:o.eventNameDispatchConfigs,registrationNameModules:o.registrationNameModules,putListener:function(e,n,r){"function"!=typeof r?"production"!==t.env.NODE_ENV?l(!1,"Expected %s listener to be a function, instead got type %s",n,typeof r):l(!1):void 0;var i=h[n]||(h[n]={});i[e]=r;var a=o.registrationNameModules[n];a&&a.didPutListener&&a.didPutListener(e,n,r)},getListener:function(e,t){var n=h[t];return n&&n[e]},deleteListener:function(e,t){var n=o.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var r=h[t];r&&delete r[e]},deleteAllListeners:function(e){for(var t in h)if(h[t][e]){var n=o.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t),delete h[t][e]}},extractEvents:function(e,t,n,r,i){for(var a,u=o.plugins,l=0;l":">","<":"<",'"':""","'":"'"},i=/[&><"']/g;e.exports=r},function(e,t,n){"use strict";var r=n(8),o=/^[ \r\n\t\f]/,i=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,a=function(e,t){e.innerHTML=t};if("undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction&&(a=function(e,t){MSApp.execUnsafeLocalFunction(function(){e.innerHTML=t})}),r.canUseDOM){var s=document.createElement("div");s.innerHTML=" ",""===s.innerHTML&&(a=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),o.test(t)||"<"===t[0]&&i.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t})}e.exports=a},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){function e(){return E.scale}function t(){return E.manifestVersion}function n(){return E.maxVisibleDistance*E.maxVisibleDistance*E.scale}function r(){return E.pos}function o(){d(!E.showLinks)}function s(){return E.lookAt}function l(){return E.showLinks}function h(){var e=x(window.location.hash),t=!b(e.pos,E.pos)||!b(e.lookAt,E.lookAt),n=E.showLinks!==e.showLinks;t&&(g(e.pos,e.lookAt),M.fire("camera")),n&&d(e.showLinks),v(e.manifestVersion)}function d(e){e!==E.showLinks&&(E.showLinks=e,M.fire("showLinks"),y())}function v(e){if(e!==E.manifestVersion){E=x(window.location.hash),E.manifestVersion=e,y();var t=p.default.getGraphName();u.default.downloadGraphRequested.fire(t)}}function g(e,t){b(e,E.pos)&&b(t,E.lookAt)&&t.w===E.lookAt.w||(E.pos.x=e.x,E.pos.y=e.y,E.pos.z=e.z,E.lookAt.x=t.x,E.lookAt.y=t.y,E.lookAt.z=t.z,E.lookAt.w=t.w,y())}function y(){var e=p.default.getGraphName(),t=E.pos,n=E.lookAt,r="#/galaxy/"+e+"?cx="+Math.round(t.x)+"&cy="+Math.round(t.y)+"&cz="+Math.round(t.z)+"&lx="+n.x.toFixed(4)+"&ly="+n.y.toFixed(4)+"&lz="+n.z.toFixed(4)+"&lw="+n.w.toFixed(4)+"&ml="+E.maxVisibleDistance+"&s="+E.scale+"&l="+(E.showLinks?"1":"0")+"&v="+E.manifestVersion;_(r)}function _(e){w&&window.clearTimeout(w),w=setTimeout(function(){window.history?window.history.replaceState(void 0,void 0,e):window.location.replace(e),w=null},400)}function b(e,t){return!(!e||!t)&&(e.x===t.x&&e.y===t.y&&e.z===t.z)}function x(e){if(!e)return m;var t=f.default.parse(e.split("?")[1]),n={x:t.cx||0,y:t.cy||0,z:t.cz||0},r={x:t.lx||0,y:t.ly||0,z:t.lz||0,w:a(t.lw||1)},o="1"===t.l;return{pos:i(n),lookAt:i(r),showLinks:o,maxVisibleDistance:a(t.ml,m.maxVisibleDistance),scale:a(t.s,m.scale),manifestVersion:t.v||m.manifestVersion}}var w,E=x(window.location.hash),M={getCameraPosition:r,getCameraLookAt:s,getShowLinks:l,getScaleFactor:e,getMaxVisibleEdgeLength:n,setCameraConfig:g,setShowLinks:d,getManifestVersion:t,setManifestVersion:v};return u.default.toggleLinks.on(o),u.default.queryChanged.on(h),(0,c.default)(M),M}function i(e){return e?(e.x=a(e.x),e.y=a(e.y),e.z=a(e.z),e):e}function a(e,t){return void 0===t&&(t=0),e=parseFloat(e),isNaN(e)?t:e}Object.defineProperty(t,"__esModule",{value:!0});var s=n(7),u=r(s),l=n(18),c=r(l),h=n(12),p=r(h),d=n(204),f=r(d),m={pos:{x:0,y:0,z:0},lookAt:{x:0,y:0,z:0,w:1},showLinks:!0,maxVisibleDistance:150,scale:1.75,manifestVersion:0};t.default=o(),e.exports=t.default},function(e,t){"use strict";t.__esModule=!0;var n=!("undefined"==typeof window||!window.document||!window.document.createElement);t.canUseDOM=n},function(e,t){"use strict";function n(e){return e}t.__esModule=!0,t.default=n,e.exports=t.default},function(e,t,n){(function(r){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t,n){var o=e(t,n);e.length<2?n(o):"production"!==r.env.NODE_ENV?s.default(void 0===o,'You should not "return" in a transition hook with a callback argument; call the callback instead'):void 0}t.__esModule=!0;var a=n(14),s=o(a);t.default=i,e.exports=t.default}).call(t,n(1))},function(e,t,n){"use strict";e.exports=n(98)},function(e,t){"use strict";function n(e,t,n){function r(){a=!0,n.apply(this,arguments)}function o(){a||(i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e){for(var t in e)if(e.hasOwnProperty(t))return!0;return!1}function s(e){return function(){function t(e,t){var n=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return y.default(e,t,n,T.location,T.routes,T.params)}function n(e){var t=e.pathname,n=e.query,r=e.state;return S.createLocation(S.createPath(t,n),r,h.REPLACE)}function o(e,t){A&&A.location===e?s(A,t):w.default(M,e,function(n,r){n?t(n):r?s(u({},r,{location:e}),t):t()})}function s(e,t){var r=m.default(T,e),o=r.leaveRoutes,i=r.enterRoutes;v.runLeaveHooks(o),v.runEnterHooks(i,e,function(r,o){r?t(r):o?t(null,n(o)):b.default(e,function(n,r){n?t(n):t(null,null,T=u({},e,{components:r}))})})}function l(e){return e.__id__||(e.__id__=N++)}function p(e){return e.reduce(function(e,t){return e.push.apply(e,P[l(t)]),e},[])}function f(e,t){w.default(M,e,function(n,r){if(null==r)return void t();A=u({},r,{location:e});for(var o=p(m.default(T,A).leaveRoutes),i=void 0,a=0,s=o.length;null==i&&a=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=o[e];return!!r&&!!n[r]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return 3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t){"use strict";function n(e){var t=e&&(r&&e[r]||e[o]);if("function"==typeof t)return t}var r="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";e.exports=n},function(e,t,n){(function(t){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&"undefined"!=typeof e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function i(e){var n;if(null===e||e===!1)n=new s(i);else if("object"==typeof e){var a=e;!a||"function"!=typeof a.type&&"string"!=typeof a.type?"production"!==t.env.NODE_ENV?c(!1,"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",null==a.type?a.type:typeof a.type,r(a._owner)):c(!1):void 0,n="string"==typeof a.type?u.createInternalComponent(a):o(a.type)?new a.type(a):new p; +}else"string"==typeof e||"number"==typeof e?n=u.createInstanceForText(e):"production"!==t.env.NODE_ENV?c(!1,"Encountered invalid React node of type %s",typeof e):c(!1);return"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV?h("function"==typeof n.construct&&"function"==typeof n.mountComponent&&"function"==typeof n.receiveComponent&&"function"==typeof n.unmountComponent,"Only React Components can be mounted."):void 0),n.construct(e),n._mountIndex=0,n._mountImage=null,"production"!==t.env.NODE_ENV&&(n._isOwnerNecessary=!1,n._warnedAboutRefsInRender=!1),"production"!==t.env.NODE_ENV&&Object.preventExtensions&&Object.preventExtensions(n),n}var a=n(239),s=n(105),u=n(111),l=n(5),c=n(3),h=n(6),p=function(){};l(p.prototype,a.Mixin,{_instantiateReactComponent:i}),e.exports=i}).call(t,n(1))},function(e,t,n){"use strict";/** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @param {?boolean} capture Check if the capture phase is supported. + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ +function r(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,i=n(8);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=r},function(e,t,n){"use strict";var r=n(8),o=n(46),i=n(47),a=function(e,t){e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){i(e,o(t))})),e.exports=a},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,r=null===t||t===!1;if(n||r)return n===r;var o=typeof e,i=typeof t;return"string"===o||"number"===o?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){(function(t){"use strict";function r(e){return g[e]}function o(e,t){return e&&null!=e.key?a(e.key):t.toString(36)}function i(e){return(""+e).replace(y,r)}function a(e){return"$"+i(e)}function s(e,n,r,i){var u=typeof e;if("undefined"!==u&&"boolean"!==u||(e=null),null===e||"string"===u||"number"===u||c.isValidElement(e))return r(i,e,""===n?m+o(e,0):n),1;var h,g,y=0,b=""===n?m:n+v;if(Array.isArray(e))for(var x=0;x "),A=!!s+"|"+e+"|"+p+"|"+T;if(v[A])return;if(v[A]=!0,s){var N="";"table"===p&&"tr"===e&&(N+=" Add a to your code to match the DOM tree generated by the browser."),"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): <%s> cannot appear as a child of <%s>. See %s.%s",e,p,T,N):void 0}else"production"!==t.env.NODE_ENV?i(!1,"validateDOMNesting(...): <%s> cannot appear as a descendant of <%s>. See %s.",e,p,T):void 0}},a.ancestorInfoContextKey="__validateDOMNesting_ancestorInfo$"+Math.random().toString(36).slice(2),a.updatedAncestorInfo=p,a.isTagValidInContext=function(e,t){t=t||h;var n=t.parentTag,r=n&&n.tag;return d(e,r)&&!f(e,t)}}e.exports=a}).call(t,n(1))},function(e,t){function n(e){if(void 0===e)return e;var t=typeof e;return"number"===t?e:"string"===t?r(e):3===e.length?e[0]<<16|e[1]<<8|e[2]:void 0}function r(e){return"#"===e[0]?Number.parseInt(e.substring(1),16):Number.parseInt(e,16)}e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=u.default.getGraphName(),n=(0,a.default)(t),r=u.default.getNodeInfo(e);return{name:r.name,id:r.id,inDegree:(0,c.default)(r.in),inDegreeLabel:n.getInDegreeLabel(r.in),outDegree:(0,c.default)(r.out),outDegreeLabel:n.getOutDegreeLabel(r.out)}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(169),a=r(i),s=n(12),u=r(s),l=n(38),c=r(l);t.default=o,e.exports=t.default},function(e,t){"use strict";function n(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}Object.defineProperty(t,"__esModule",{value:!0}),t.default={isModifier:n,H:72,L:76,Space:32,"/":191},e.exports=t.default},function(e,t,n){(function(t,n,r){/* @preserve + * The MIT License (MIT) + * + * Copyright (c) 2013-2015 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +!function(t){e.exports=t()}(function(){var e,o,i;return function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof _dereq_&&_dereq_;if(!s&&u)return u(a,!0);if(i)return i(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[a]={exports:{}};t[a][0].call(c.exports,function(e){var n=t[a][1][e];return o(n?n:e)},c,c.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a0},r.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout(function(){e(t)},0);else try{this._schedule(function(){e(t)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/m3OTXk\n")}},c.hasDevTools?(u.isStatic&&(u=function(e){setTimeout(e,0)}),r.prototype.invokeLater=function(e,t,n){this._trampolineEnabled?o.call(this,e,t,n):this._schedule(function(){setTimeout(function(){e.call(t,n)},100)})},r.prototype.invoke=function(e,t,n){this._trampolineEnabled?i.call(this,e,t,n):this._schedule(function(){e.call(t,n)})},r.prototype.settlePromises=function(e){this._trampolineEnabled?a.call(this,e):this._schedule(function(){e._settlePromises()})}):(r.prototype.invokeLater=o,r.prototype.invoke=i,r.prototype.settlePromises=a),r.prototype.invokeFirst=function(e,t,n){this._normalQueue.unshift(e,t,n),this._queueTick()},r.prototype._drainQueue=function(e){for(;e.length()>0;){var t=e.shift();if("function"==typeof t){var n=e.shift(),r=e.shift();t.call(n,r)}else t._settlePromises()}},r.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._drainQueue(this._lateQueue)},r.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},r.prototype._reset=function(){this._isTickUsed=!1},t.exports=new r,t.exports.firstLineError=s},{"./queue.js":28,"./schedule.js":31,"./util.js":38}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n){var r=function(e,t){this._reject(t)},o=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(r,r,null,this,e)},i=function(e,t){this._isPending()&&this._resolveCallback(t.target)},a=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(r){var s=n(r),u=new e(t);u._propagateFrom(this,1);var l=this._target();if(u._setBoundTo(s),s instanceof e){var c={promiseRejectionQueued:!1,promise:u,target:l,bindingPromise:s};l._then(t,o,u._progress,u,c),s._then(i,a,u._progress,u,c)}else u._resolveCallback(l);return u},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=131072|this._bitField,this._boundTo=e):this._bitField=this._bitField&-131073},e.prototype._isBound=function(){return 131072===(131072&this._bitField)},e.bind=function(r,o){var i=n(r),a=new e(t);return a._setBoundTo(i),i instanceof e?i._then(function(){a._resolveCallback(o)},a._reject,a._progress,a,null):a._resolveCallback(o),a}}},{}],4:[function(e,t,n){"use strict";function r(){try{Promise===i&&(Promise=o)}catch(e){}return i}var o;"undefined"!=typeof Promise&&(o=Promise);var i=e("./promise.js")();i.noConflict=r,t.exports=i},{"./promise.js":23}],5:[function(e,t,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}t.exports=function(t){function n(e,n){var r;if(null!=e&&(r=e[n]),"function"!=typeof r){var o="Object "+s.classString(e)+" has no method '"+s.toString(n)+"'";throw new t.TypeError(o)}return r}function r(e){var t=this.pop(),r=n(e,t);return r.apply(e,this)}function o(e){return e[this]}function i(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}var a,s=e("./util.js"),u=s.canEvaluate;s.isIdentifier;t.prototype.call=function(e){for(var t=arguments.length,n=new Array(t-1),o=1;o32&&this.uncycle()}function r(e,t){for(var n=0;n=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var u=r[s];if(t[o]!==u)break;t.pop(),o--}t=r}}function a(e){for(var t=[],n=0;n0&&(t=t.slice(n)),t}function u(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{t=e.toString();var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(t))try{var r=JSON.stringify(e);t=r}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+l(t)+">, no stack trace)"}function l(e){var t=41;return e.length=0;--r){var i=t[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r0&&(t[s-1]._parent=void 0,t[s-1]._length=1),t[r]._parent=void 0,t[r]._length=1;var u=r>0?t[r-1]:this;s=0;--c)t[c]._length=l,l++;return}}}},n.prototype.parent=function(){return this._parent},n.prototype.hasParent=function(){return void 0!==this._parent},n.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=n.parseStackAndMessage(e),s=t.message,u=[t.stack],l=this;void 0!==l;)u.push(a(l.stack.split("\n"))),l=l._parent;i(u),o(u),d.notEnumerableProp(e,"stack",r(s,u)),d.notEnumerableProp(e,"__stackCleaned__",!0)}},n.parseStackAndMessage=function(e){var t=e.stack,n=e.toString();return t="string"==typeof t&&t.length>0?s(e):[" (No stack trace)"],{message:n,stack:a(t)}},n.formatAndLogError=function(e,t){if("undefined"!=typeof console){var n;if("object"==typeof e||"function"==typeof e){var r=e.stack;n=t+v(r,e)}else n=t+String(e);"function"==typeof h?h(n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(n)}},n.unhandledRejection=function(e){n.formatAndLogError(e,"^--- With additional stack trace: ")},n.isSupported=function(){return"function"==typeof x},n.fireRejectionEvent=function(e,t,r,o){var i=!1;try{"function"==typeof t&&(i=!0,"rejectionHandled"===e?t(o):t(r,o))}catch(e){p.throwLater(e)}var a=!1;try{a=w(e,r,o)}catch(e){a=!0,p.throwLater(e)}var s=!1;if(b)try{s=b(e.toLowerCase(),{reason:r,promise:o})}catch(e){s=!0,p.throwLater(e)}a||i||s||"unhandledRejection"!==e||n.formatAndLogError(r,"Unhandled rejection ")};var y=function(){return!1},_=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;n.setBounds=function(e,t){if(n.isSupported()){for(var r,o,i=e.stack.split("\n"),a=t.stack.split("\n"),s=-1,u=-1,l=0;l=u||(y=function(e){if(f.test(e))return!0;var t=c(e);return!!(t&&t.fileName===r&&s<=t.line&&t.line<=u)})}};var b,x=function(){var e=/^\s*at\s*/,t=function(e,t){return"string"==typeof e?e:void 0!==t.name&&void 0!==t.message?t.toString():u(t)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit=Error.stackTraceLimit+6,m=e,v=t;var n=Error.captureStackTrace;return y=function(e){return f.test(e)},function(e,t){Error.stackTraceLimit=Error.stackTraceLimit+6,n(e,t),Error.stackTraceLimit=Error.stackTraceLimit-6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return m=/@/,v=t,g=!0,function(e){e.stack=(new Error).stack};var o;try{throw new Error}catch(e){o="stack"in e}return"stack"in r||!o||"number"!=typeof Error.stackTraceLimit?(v=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?u(t):t.toString()},null):(m=e,v=t,function(e){Error.stackTraceLimit=Error.stackTraceLimit+6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit=Error.stackTraceLimit-6})}([]),w=function(){if(d.isNode)return function(e,n,r){return"rejectionHandled"===e?t.emit(e,r):t.emit(e,n,r)};var e=!1,n=!0;try{var r=new self.CustomEvent("test");e=r instanceof CustomEvent}catch(e){}if(!e)try{var o=document.createEvent("CustomEvent");o.initCustomEvent("testingtheevent",!1,!0,{}),self.dispatchEvent(o)}catch(e){n=!1}n&&(b=function(t,n){var r;return e?r=new self.CustomEvent(t,{detail:n,bubbles:!1,cancelable:!0}):self.dispatchEvent&&(r=document.createEvent("CustomEvent"),r.initCustomEvent(t,!1,!0,n)),!!r&&!self.dispatchEvent(r)});var i={};return i.unhandledRejection="onunhandledRejection".toLowerCase(),i.rejectionHandled="onrejectionHandled".toLowerCase(),function(e,t,n){var r=i[e],o=self[r];return!!o&&("rejectionHandled"===e?o.call(self,n):o.call(self,t,n),!0)}}();return"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(h=function(e){console.warn(e)},d.isNode&&t.stderr.isTTY?h=function(e){t.stderr.write(""+e+"\n")}:d.isNode||"string"!=typeof(new Error).stack||(h=function(e){console.warn("%c"+e,"color: red")})),n}},{"./async.js":2,"./util.js":38}],8:[function(e,t,n){"use strict";t.exports=function(t){function n(e,t,n){this._instances=e,this._callback=t,this._promise=n}function r(e,t){var n={},r=a(e).call(n,t);if(r===s)return r;var o=u(n);return o.length?(s.e=new l("Catch filter must inherit from Error or be a simple predicate function\n\n See http://goo.gl/o84o68\n"),s):r}var o=e("./util.js"),i=e("./errors.js"),a=o.tryCatch,s=o.errorObj,u=e("./es5.js").keys,l=i.TypeError;return n.prototype.doFilter=function(e){for(var n=this._callback,o=this._promise,i=o._boundValue(),u=0,l=this._instances.length;u=0)return a[e]}var a=[];return r.prototype._pushContext=function(){n()&&void 0!==this._trace&&a.push(this._trace)},r.prototype._popContext=function(){n()&&void 0!==this._trace&&a.pop()},e.prototype._peekContext=i,e.prototype._pushContext=r.prototype._pushContext,e.prototype._popContext=r.prototype._popContext,o}},{}],10:[function(e,n,r){"use strict";n.exports=function(n,r){var o,i,a=n._getDomain,s=e("./async.js"),u=e("./errors.js").Warning,l=e("./util.js"),c=l.canAttachTrace,h=l.isNode&&(!!t.env.BLUEBIRD_DEBUG||"development"===t.env.NODE_ENV);return l.isNode&&0==t.env.BLUEBIRD_DEBUG&&(h=!1),h&&s.disableTrampolineIfNecessary(),n.prototype._ignoreRejections=function(){this._unsetRejectionIsUnhandled(),this._bitField=16777216|this._bitField},n.prototype._ensurePossibleRejectionHandled=function(){0===(16777216&this._bitField)&&(this._setRejectionIsUnhandled(),s.invokeLater(this._notifyUnhandledRejection,this,void 0))},n.prototype._notifyUnhandledRejectionIsHandled=function(){r.fireRejectionEvent("rejectionHandled",o,void 0,this)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._getCarriedStackTrace()||this._settledValue;this._setUnhandledRejectionIsNotified(),r.fireRejectionEvent("unhandledRejection",i,e,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=524288|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=this._bitField&-524289},n.prototype._isUnhandledRejectionNotified=function(){return(524288&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=2097152|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=this._bitField&-2097153,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(2097152&this._bitField)>0},n.prototype._setCarriedStackTrace=function(e){this._bitField=1048576|this._bitField,this._fulfillmentHandler0=e},n.prototype._isCarryingStackTrace=function(){return(1048576&this._bitField)>0},n.prototype._getCarriedStackTrace=function(){return this._isCarryingStackTrace()?this._fulfillmentHandler0:void 0},n.prototype._captureStackTrace=function(){return h&&(this._trace=new r(this._peekContext())),this},n.prototype._attachExtraTrace=function(e,t){if(h&&c(e)){var n=this._trace;if(void 0!==n&&t&&(n=n._parent),void 0!==n)n.attachExtraTrace(e);else if(!e.__stackCleaned__){var o=r.parseStackAndMessage(e);l.notEnumerableProp(e,"stack",o.message+"\n"+o.stack.join("\n")),l.notEnumerableProp(e,"__stackCleaned__",!0)}}},n.prototype._warn=function(e){var t=new u(e),n=this._peekContext();if(n)n.attachExtraTrace(t);else{var o=r.parseStackAndMessage(t);t.stack=o.message+"\n"+o.stack.join("\n")}r.formatAndLogError(t,"")},n.onPossiblyUnhandledRejection=function(e){var t=a();i="function"==typeof e?null===t?e:t.bind(e):void 0},n.onUnhandledRejectionHandled=function(e){var t=a();o="function"==typeof e?null===t?e:t.bind(e):void 0},n.longStackTraces=function(){if(s.haveItemsQueued()&&h===!1)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/DT1qyG\n");h=r.isSupported(),h&&s.disableTrampolineIfNecessary()},n.hasLongStackTraces=function(){return h&&r.isSupported()},r.isSupported()||(n.longStackTraces=function(){},h=!1),function(){return h}}},{"./async.js":2,"./errors.js":13,"./util.js":38}],11:[function(e,t,n){"use strict";var r=e("./util.js"),o=r.isPrimitive;t.exports=function(e){var t=function(){return this},n=function(){throw this},r=function(){},i=function(){throw void 0},a=function(e,t){return 1===t?function(){throw e}:2===t?function(){return e}:void 0};e.prototype.return=e.prototype.thenReturn=function(n){return void 0===n?this.then(r):o(n)?this._then(a(n,2),void 0,void 0,void 0,void 0):(n instanceof e&&n._ignoreRejections(),this._then(t,void 0,void 0,n,void 0))},e.prototype.throw=e.prototype.thenThrow=function(e){return void 0===e?this.then(i):o(e)?this._then(a(e,1),void 0,void 0,void 0,void 0):this._then(n,void 0,void 0,e,void 0)}}},{"./util.js":38}],12:[function(e,t,n){"use strict";t.exports=function(e,t){var n=e.reduce;e.prototype.each=function(e){return n(this,e,null,t)},e.each=function(e,r){return n(e,r,null,t)}}},{}],13:[function(e,t,n){"use strict";function r(e,t){function n(r){return this instanceof n?(h(this,"message","string"==typeof r?r:t),h(this,"name",e),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return c(n,Error),n}function o(e){return this instanceof o?(h(this,"name","OperationalError"),h(this,"message",e),this.cause=e,this.isOperational=!0,void(e instanceof Error?(h(this,"message",e.message),h(this,"stack",e.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new o(e)}var i,a,s=e("./es5.js"),u=s.freeze,l=e("./util.js"),c=l.inherits,h=l.notEnumerableProp,p=r("Warning","warning"),d=r("CancellationError","cancellation error"),f=r("TimeoutError","timeout error"),m=r("AggregateError","aggregate error");try{i=TypeError,a=RangeError}catch(e){i=r("TypeError","type error"),a=r("RangeError","range error")}for(var v="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),g=0;g0&&"function"==typeof arguments[t]){e=arguments[t];var r}for(var o=arguments.length,i=new Array(o),a=0;a=1?[]:m,c.invoke(s,this,void 0)}function s(){this._init$(void 0,-2)}function u(e,t,n,r){var o="object"==typeof n&&null!==n?n.concurrency:0;return o="number"==typeof o&&isFinite(o)&&o>=1?o:0,new a(e,t,o,r)}var l=t._getDomain,c=e("./async.js"),h=e("./util.js"),p=h.tryCatch,d=h.errorObj,f={},m=[];h.inherits(a,n),a.prototype._init=function(){},a.prototype._promiseFulfilled=function(e,n){var r=this._values,i=this.length(),a=this._preservedValues,s=this._limit;if(r[n]===f){if(r[n]=e,s>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return}else{if(s>=1&&this._inFlight>=s)return r[n]=e,void this._queue.push(n);null!==a&&(a[n]=e);var u=this._callback,l=this._promise._boundValue();this._promise._pushContext();var c=p(u).call(l,e,n,i);if(this._promise._popContext(),c===d)return this._reject(c.e);var h=o(c,this._promise);if(h instanceof t){if(h=h._target(),h._isPending())return s>=1&&this._inFlight++,r[n]=f,h._proxyPromiseArray(this,n);if(!h._isFulfilled())return this._reject(h._reason());c=h._value()}r[n]=c}var m=++this._totalResolved;m>=i&&(null!==a?this._filter(r,a):this._resolve(r))},a.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,n=this._values;e.length>0&&this._inFlight1){var n,o=new Array(t-1),i=0;for(n=0;n0&&"function"!=typeof e&&"function"!=typeof t){var r=".then() only accepts functions but was passed: "+l.classString(e);arguments.length>1&&(r+=", "+l.classString(t)),this._warn(r)}return this._then(e,t,n,void 0,void 0)},r.prototype.done=function(e,t,n){var r=this._then(e,t,n,void 0,void 0);r._setIsFinal()},r.prototype.spread=function(e,t){return this.all()._then(e,t,void 0,m,void 0)},r.prototype.isCancellable=function(){return!this.isResolved()&&this._cancellable()},r.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1, +fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},r.prototype.all=function(){return new y(this).promise()},r.prototype.error=function(e){return this.caught(l.originatesFromRejection,e)},r.getNewLibraryCopy=n.exports,r.is=function(e){return e instanceof r},r.fromNode=function(e){var t=new r(f),n=S(e)(M(t));return n===C&&t._rejectCallback(n.e,!0,!0),t},r.all=function(e){return new y(e).promise()},r.defer=r.pending=function(){var e=new r(f);return new E(e)},r.cast=function(e){var t=g(e);if(!(t instanceof r)){var n=t;t=new r(f),t._fulfillUnchecked(n)}return t},r.resolve=r.fulfilled=r.cast,r.reject=r.rejected=function(e){var t=new r(f);return t._captureStackTrace(),t._rejectCallback(e,!0),t},r.setScheduler=function(e){if("function"!=typeof e)throw new d("fn must be a function\n\n See http://goo.gl/916lJJ\n");var t=h._schedule;return h._schedule=e,t},r.prototype._then=function(e,t,n,o,a){var s=void 0!==a,u=s?a:new r(f);s||(u._propagateFrom(this,5),u._captureStackTrace());var l=this._target();l!==this&&(void 0===o&&(o=this._boundTo),s||u._setIsMigrated());var c=l._addCallbacks(e,t,n,u,o,i());return l._isResolved()&&!l._isSettlePromisesQueued()&&h.invoke(l._settlePromiseAtPostResolution,l,c),u},r.prototype._settlePromiseAtPostResolution=function(e){this._isRejectionUnhandled()&&this._unsetRejectionIsUnhandled(),this._settlePromiseAt(e)},r.prototype._length=function(){return 131071&this._bitField},r.prototype._isFollowingOrFulfilledOrRejected=function(){return(939524096&this._bitField)>0},r.prototype._isFollowing=function(){return 536870912===(536870912&this._bitField)},r.prototype._setLength=function(e){this._bitField=this._bitField&-131072|131071&e},r.prototype._setFulfilled=function(){this._bitField=268435456|this._bitField},r.prototype._setRejected=function(){this._bitField=134217728|this._bitField},r.prototype._setFollowing=function(){this._bitField=536870912|this._bitField},r.prototype._setIsFinal=function(){this._bitField=33554432|this._bitField},r.prototype._isFinal=function(){return(33554432&this._bitField)>0},r.prototype._cancellable=function(){return(67108864&this._bitField)>0},r.prototype._setCancellable=function(){this._bitField=67108864|this._bitField},r.prototype._unsetCancellable=function(){this._bitField=this._bitField&-67108865},r.prototype._setIsMigrated=function(){this._bitField=4194304|this._bitField},r.prototype._unsetIsMigrated=function(){this._bitField=this._bitField&-4194305},r.prototype._isMigrated=function(){return(4194304&this._bitField)>0},r.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[5*e-5+4];if(t!==c)return void 0===t&&this._isBound()?this._boundValue():t},r.prototype._promiseAt=function(e){return 0===e?this._promise0:this[5*e-5+3]},r.prototype._fulfillmentHandlerAt=function(e){return 0===e?this._fulfillmentHandler0:this[5*e-5+0]},r.prototype._rejectionHandlerAt=function(e){return 0===e?this._rejectionHandler0:this[5*e-5+1]},r.prototype._boundValue=function(){var e=this._boundTo;return void 0!==e&&e instanceof r?e.isFulfilled()?e.value():void 0:e},r.prototype._migrateCallbacks=function(e,t){var n=e._fulfillmentHandlerAt(t),o=e._rejectionHandlerAt(t),i=e._progressHandlerAt(t),a=e._promiseAt(t),s=e._receiverAt(t);a instanceof r&&a._setIsMigrated(),void 0===s&&(s=c),this._addCallbacks(n,o,i,a,s,null)},r.prototype._addCallbacks=function(e,t,n,r,o,i){var a=this._length();if(a>=131066&&(a=0,this._setLength(0)),0===a)this._promise0=r,void 0!==o&&(this._receiver0=o),"function"!=typeof e||this._isCarryingStackTrace()||(this._fulfillmentHandler0=null===i?e:i.bind(e)),"function"==typeof t&&(this._rejectionHandler0=null===i?t:i.bind(t)),"function"==typeof n&&(this._progressHandler0=null===i?n:i.bind(n));else{var s=5*a-5;this[s+3]=r,this[s+4]=o,"function"==typeof e&&(this[s+0]=null===i?e:i.bind(e)),"function"==typeof t&&(this[s+1]=null===i?t:i.bind(t)),"function"==typeof n&&(this[s+2]=null===i?n:i.bind(n))}return this._setLength(a+1),a},r.prototype._setProxyHandlers=function(e,t){var n=this._length();if(n>=131066&&(n=0,this._setLength(0)),0===n)this._promise0=t,this._receiver0=e;else{var r=5*n-5;this[r+3]=t,this[r+4]=e}this._setLength(n+1)},r.prototype._proxyPromiseArray=function(e,t){this._setProxyHandlers(e,t)},r.prototype._resolveCallback=function(e,t){if(!this._isFollowingOrFulfilledOrRejected()){if(e===this)return this._rejectCallback(a(),!1,!0);var n=g(e,this);if(!(n instanceof r))return this._fulfill(e);var o=1|(t?4:0);this._propagateFrom(n,o);var i=n._target();if(i._isPending()){for(var s=this._length(),u=0;u0&&e._cancellable()&&(this._setCancellable(),this._cancellationParent=e),(4&t)>0&&e._isBound()&&this._setBoundTo(e._boundTo)},r.prototype._fulfill=function(e){this._isFollowingOrFulfilledOrRejected()||this._fulfillUnchecked(e)},r.prototype._reject=function(e,t){this._isFollowingOrFulfilledOrRejected()||this._rejectUnchecked(e,t)},r.prototype._settlePromiseAt=function(e){var t=this._promiseAt(e),n=t instanceof r;if(n&&t._isMigrated())return t._unsetIsMigrated(),h.invoke(this._settlePromiseAt,this,e);var o=this._isFulfilled()?this._fulfillmentHandlerAt(e):this._rejectionHandlerAt(e),i=this._isCarryingStackTrace()?this._getCarriedStackTrace():void 0,a=this._settledValue,s=this._receiverAt(e);this._clearCallbackDataAtIndex(e),"function"==typeof o?n?this._settlePromiseFromHandler(o,s,a,t):o.call(s,a,t):s instanceof y?s._isResolved()||(this._isFulfilled()?s._promiseFulfilled(a,t):s._promiseRejected(a,t)):n&&(this._isFulfilled()?t._fulfill(a):t._reject(a,i)),e>=4&&4===(31&e)&&h.invokeLater(this._setLength,this,0)},r.prototype._clearCallbackDataAtIndex=function(e){if(0===e)this._isCarryingStackTrace()||(this._fulfillmentHandler0=void 0),this._rejectionHandler0=this._progressHandler0=this._receiver0=this._promise0=void 0;else{var t=5*e-5;this[t+3]=this[t+4]=this[t+0]=this[t+1]=this[t+2]=void 0}},r.prototype._isSettlePromisesQueued=function(){return(this._bitField&-1073741824)===-1073741824},r.prototype._setSettlePromisesQueued=function(){this._bitField=this._bitField|-1073741824},r.prototype._unsetSettlePromisesQueued=function(){this._bitField=1073741823&this._bitField},r.prototype._queueSettlePromises=function(){h.settlePromises(this),this._setSettlePromisesQueued()},r.prototype._fulfillUnchecked=function(e){if(e===this){var t=a();return this._attachExtraTrace(t),this._rejectUnchecked(t,void 0)}this._setFulfilled(),this._settledValue=e,this._cleanValues(),this._length()>0&&this._queueSettlePromises()},r.prototype._rejectUncheckedCheckError=function(e){var t=l.ensureErrorObject(e);this._rejectUnchecked(e,t===e?void 0:t)},r.prototype._rejectUnchecked=function(e,t){if(e===this){var n=a();return this._attachExtraTrace(n),this._rejectUnchecked(n)}return this._setRejected(),this._settledValue=e,this._cleanValues(),this._isFinal()?void h.throwLater(function(e){throw"stack"in e&&h.invokeFirst(_.unhandledRejection,void 0,e),e},void 0===t?e:t):(void 0!==t&&t!==e&&this._setCarriedStackTrace(t),void(this._length()>0?this._queueSettlePromises():this._ensurePossibleRejectionHandled()))},r.prototype._settlePromises=function(){this._unsetSettlePromisesQueued();for(var e=this._length(),t=0;t=this._length&&this._resolve(this._values)},a.prototype._promiseRejected=function(e,t){this._totalResolved++,this._reject(e)},a.prototype.shouldCopyValues=function(){return!0},a.prototype.getActualLength=function(e){return e},a}},{"./util.js":38}],25:[function(e,t,n){"use strict";function r(e){return e instanceof Error&&d.getPrototypeOf(e)===Error.prototype}function o(e){var t;if(r(e)){t=new h(e),t.name=e.name,t.message=e.message,t.stack=e.stack;for(var n=d.keys(e),o=0;o2){for(var i=arguments.length,a=new Array(i-1),s=1;s=this._length){for(var r={},o=this.length(),i=0,a=this.length();i>1},t.prototype.props=function(){return a(this)},t.props=function(e){return a(e)}}},{"./es5.js":14,"./util.js":38}],28:[function(e,t,n){"use strict";function r(e,t,n,r,o){for(var i=0;i=this._length&&this._resolve(this._values)},r.prototype._promiseFulfilled=function(e,t){var n=new o;n._bitField=268435456,n._settledValue=e,this._promiseResolved(t,n)},r.prototype._promiseRejected=function(e,t){var n=new o;n._bitField=134217728,n._settledValue=e,this._promiseResolved(t,n)},t.settle=function(e){return new r(e).promise()},t.prototype.settle=function(){return new r(this).promise()}}},{"./util.js":38}],33:[function(e,t,n){"use strict";t.exports=function(t,n,r){function o(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function i(e,t){if((0|t)!==t||t<0)return r("expecting a positive integer\n\n See http://goo.gl/1wAmHx\n");var n=new o(e),i=n.promise();return n.setHowMany(t),n.init(),i}var a=e("./util.js"),s=e("./errors.js").RangeError,u=e("./errors.js").AggregateError,l=a.isArray;a.inherits(o,n),o.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var e=l(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},o.prototype.init=function(){this._initialized=!0,this._init()},o.prototype.setUnwrap=function(){this._unwrap=!0},o.prototype.howMany=function(){return this._howMany},o.prototype.setHowMany=function(e){this._howMany=e},o.prototype._promiseFulfilled=function(e){this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values))},o.prototype._promiseRejected=function(e){if(this._addRejected(e),this.howMany()>this._canPossiblyFulfill()){for(var t=new u,n=this.length();n0},t.prototype.isRejected=e.prototype._isRejected=function(){return(134217728&this._bitField)>0},t.prototype.isPending=e.prototype._isPending=function(){return 0===(402653184&this._bitField)},t.prototype.isResolved=e.prototype._isResolved=function(){return(402653184&this._bitField)>0},e.prototype.isPending=function(){return this._target()._isPending()},e.prototype.isRejected=function(){return this._target()._isRejected()},e.prototype.isFulfilled=function(){return this._target()._isFulfilled()},e.prototype.isResolved=function(){return this._target()._isResolved()},e.prototype._value=function(){return this._settledValue},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue},e.prototype.value=function(){var e=this._target();if(!e.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/hc1DLj\n");return e._settledValue},e.prototype.reason=function(){var e=this._target();if(!e.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/hPuiwB\n");return e._unsetRejectionIsUnhandled(),e._settledValue},e.PromiseInspection=t}},{}],35:[function(e,t,n){"use strict";t.exports=function(t,n){function r(e,r){if(l(e)){if(e instanceof t)return e;if(i(e)){var c=new t(n);return e._then(c._fulfillUnchecked,c._rejectUncheckedCheckError,c._progressUnchecked,c,null),c}var h=s.tryCatch(o)(e);if(h===u){r&&r._pushContext();var c=t.reject(h.e);return r&&r._popContext(),c}if("function"==typeof h)return a(e,h,r)}return e}function o(e){return e.then}function i(e){return c.call(e,"_promise0")}function a(e,r,o){function i(e){c&&(c._resolveCallback(e),c=null)}function a(e){c&&(c._rejectCallback(e,p,!0),c=null)}function l(e){c&&"function"==typeof c._progress&&c._progress(e)}var c=new t(n),h=c;o&&o._pushContext(),c._captureStackTrace(),o&&o._popContext();var p=!0,d=s.tryCatch(r).call(e,i,a,l);return p=!1,c&&d===u&&(c._rejectCallback(d.e,!0,!0),c=null),h}var s=e("./util.js"),u=s.errorObj,l=s.isObject,c={}.hasOwnProperty;return r}},{"./util.js":38}],36:[function(e,t,n){"use strict";t.exports=function(t,n){function r(e){var t=this;return t instanceof Number&&(t=+t),clearTimeout(t),e}function o(e){var t=this;throw t instanceof Number&&(t=+t),clearTimeout(t),e}var i=e("./util.js"),a=t.TimeoutError,s=function(e,t){if(e.isPending()){var n;!i.isPrimitive(t)&&t instanceof Error?n=t:("string"!=typeof t&&(t="operation timed out"),n=new a(t)),i.markAsOriginatingFromRejection(n),e._attachExtraTrace(n),e._cancel(n)}},u=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,r){if(void 0===r){r=e,e=void 0;var o=new t(n);return setTimeout(function(){o._fulfill()},r),o}return r=+r,t.resolve(e)._then(u,null,null,r,void 0)};t.prototype.delay=function(e){return l(this,e)},t.prototype.timeout=function(e,t){e=+e;var n=this.then().cancellable();n._cancellationParent=this;var i=setTimeout(function(){s(n,t)},e);return n._then(r,o,void 0,i,void 0)}}},{"./util.js":38}],37:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){function i(e){for(var n=e.length,r=0;r=u)return l.resolve();var c=s(e[i++]);if(c instanceof t&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),e.promise)}catch(e){return a(e)}if(c instanceof t)return c._then(o,a,null,null,null)}o()}var i=0,u=e.length,l=t.defer();return o(),l.promise}function l(e){var t=new v;return t._settledValue=e,t._bitField=268435456,u(this,t).thenReturn(e)}function c(e){var t=new v;return t._settledValue=e,t._bitField=134217728,u(this,t).thenThrow(e)}function h(e,t,n){this._data=e,this._promise=t,this._context=n}function p(e,t,n){this.constructor$(e,t,n)}function d(e){return h.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}var f=e("./errors.js").TypeError,m=e("./util.js").inherits,v=t.PromiseInspection;h.prototype.data=function(){return this._data},h.prototype.promise=function(){return this._promise},h.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():null},h.prototype.tryDispose=function(e){var t=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=null!==t?this.doDispose(t,e):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},h.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},m(p,h),p.prototype.doDispose=function(e,t){var n=this.data();return n.call(e,e,t)},t.using=function(){var e=arguments.length;if(e<2)return n("you must pass at least 2 arguments to Promise.using");var o=arguments[e-1];if("function"!=typeof o)return n("fn must be a function\n\n See http://goo.gl/916lJJ\n");var a,s=!0;2===e&&Array.isArray(arguments[0])?(a=arguments[0],e=a.length,s=!1):(a=arguments,e--);for(var u=new Array(e),p=0;p0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=this._bitField&-262145,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new p(e,this,o());throw new f}}},{"./errors.js":13,"./util.js":38}],38:[function(e,n,r){"use strict";function o(){try{var e=T;return T=null,e.apply(this,arguments)}catch(e){return S.e=e,S}}function i(e){return T=e,o}function a(e){return null==e||e===!0||e===!1||"string"==typeof e||"number"==typeof e}function s(e){return!a(e)}function u(e){return a(e)?new Error(g(e)):e}function l(e,t){var n,r=e.length,o=new Array(r+1);for(n=0;n1,r=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=P.test(e+"")&&E.names(e).length>0;if(n||r||o)return!0}return!1}catch(e){return!1}}function f(e){function t(){}t.prototype=e;for(var n=8;n--;)new t;return e}function m(e){return R.test(e)}function v(e,t,n){for(var r=new Array(e),o=0;o10||e[0]>0}(),O.isNode&&O.toFastProperties(t);try{throw new Error}catch(e){O.lastLineError=e}n.exports=O},{"./es5.js":14}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(t,n(1),function(){return this}(),n(299).setImmediate)},function(e,t,n){(function(t){"use strict";var r=n(17),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,n,o){return e.addEventListener?(e.addEventListener(n,o,!0),{remove:function(){e.removeEventListener(n,o,!0)}}):("production"!==t.env.NODE_ENV&&console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events."),{remove:r})},registerDefault:function(){}};e.exports=o}).call(t,n(1))},function(e,t,n){"use strict";function r(e,t){var n=!0;e:for(;n;){var r=e,i=t;if(n=!1,r&&i){if(r===i)return!0;if(o(r))return!1;if(o(i)){e=r,t=i.parentNode,n=!0;continue e}return r.contains?r.contains(i):!!r.compareDocumentPosition&&!!(16&r.compareDocumentPosition(i))}return!1}}var o=n(190);e.exports=r},function(e,t){"use strict";function n(e){try{e.focus()}catch(e){}}e.exports=n},function(e,t){"use strict";function n(){if("undefined"==typeof document)return null;try{return document.activeElement||document.body}catch(e){return document.body}}e.exports=n},function(e,t,n){(function(t){"use strict";function r(e){return a?void 0:"production"!==t.env.NODE_ENV?i(!1,"Markup wrapping node not initialized"):i(!1),p.hasOwnProperty(e)||(e="*"),s.hasOwnProperty(e)||("*"===e?a.innerHTML="":a.innerHTML="<"+e+">",s[e]=!a.firstChild),s[e]?p[e]:null}var o=n(8),i=n(3),a=o.canUseDOM?document.createElement("div"):null,s={},u=[1,'"],l=[1,"","
"],c=[3,"","
"],h=[1,'',""],p={"*":[1,"?

"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:l,colgroup:l,tbody:l,tfoot:l,thead:l,td:c,th:c},d=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];d.forEach(function(e){p[e]=h,s[e]=!0}),e.exports=r}).call(t,n(1))},function(e,t){"use strict";function n(e,t){if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var i=r.bind(t),a=0;a=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122?t+=e[r]:i<128?t+=n.hexTable[i]:i<2048?t+=n.hexTable[192|i>>6]+n.hexTable[128|63&i]:i<55296||i>=57344?t+=n.hexTable[224|i>>12]+n.hexTable[128|i>>6&63]+n.hexTable[128|63&i]:(++r,i=65536+((1023&i)<<10|1023&e.charCodeAt(r)),t+=n.hexTable[240|i>>18]+n.hexTable[128|i>>12&63]+n.hexTable[128|i>>6&63]+n.hexTable[128|63&i])}return t},t.compact=function(e,n){if("object"!=typeof e||null===e)return e;n=n||[];var r=n.indexOf(e);if(r!==-1)return n[r];if(n.push(e),Array.isArray(e)){for(var o=[],i=0,a=e.length;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return 0===e.button}function u(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function l(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t elements are for router configuration only and should not be rendered"):u.default(!1)},t}(l.Component);g.createRouteFromReactElement=function(e){var t=h.createRouteFromReactElement(e);return t.from&&(t.path=t.from),t.onEnter=function(e,n){var r=e.location,o=e.params,i=void 0;if("/"===t.to.charAt(0))i=p.formatPattern(t.to,o);else if(t.to){var a=e.routes.indexOf(t),s=g.getRoutePattern(e.routes,a-1),u=s.replace(/\/*$/,"/")+t.to;i=p.formatPattern(u,o)}else i=r.pathname;n(t.state||r.state,i,t.query||r.query)},t},g.getRoutePattern=function(e,t){for(var n="",r=t;r>=0;r--){var o=e[r],i=o.path||"";if(n=i.replace(/\/*$/,"/")+n,0===i.indexOf("/"))break}return"/"+n},g.propTypes={path:m,from:m,to:m.isRequired,query:v,state:v,onEnter:d.falsy,children:d.falsy},t.default=g,e.exports=t.default}).call(t,n(1))},function(e,t,n){(function(r){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t=e.childNodes.length?null:e.childNodes.item(n);e.insertBefore(t,r)}var o=n(230),i=n(110),a=n(13),s=n(47),u=n(70),l=n(3),c={dangerouslyReplaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup,updateTextContent:u,processUpdates:function(e,n){for(var a,c=null,h=null,p=0;p when using tables, nesting tags like ,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",d,m):l(!1),c=c||{},c[m]=c[m]||[],c[m][d]=f,h=h||[],h.push(f)}var v;if(v=n.length&&"string"==typeof n[0]?o.dangerouslyRenderMarkup(n):n,h)for(var g=0;g-1?void 0:"production"!==t.env.NODE_ENV?a(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a(!1),!l.plugins[r]){n.extractEvents?void 0:"production"!==t.env.NODE_ENV?a(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a(!1),l.plugins[r]=n;var i=n.eventTypes;for(var c in i)o(i[c],n,c)?void 0:"production"!==t.env.NODE_ENV?a(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",c,e):a(!1)}}}function o(e,n,r){l.eventNameDispatchConfigs.hasOwnProperty(r)?"production"!==t.env.NODE_ENV?a(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",r):a(!1):void 0,l.eventNameDispatchConfigs[r]=e;var o=e.phasedRegistrationNames;if(o){for(var s in o)if(o.hasOwnProperty(s)){var u=o[s];i(u,n,r)}return!0}return!!e.registrationName&&(i(e.registrationName,n,r),!0)}function i(e,n,r){l.registrationNameModules[e]?"production"!==t.env.NODE_ENV?a(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a(!1):void 0,l.registrationNameModules[e]=n,l.registrationNameDependencies[e]=n.eventTypes[r].dependencies}var a=n(3),s=null,u={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){s?"production"!==t.env.NODE_ENV?a(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a(!1):void 0,s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var n=!1;for(var o in e)if(e.hasOwnProperty(o)){var i=e[o];u.hasOwnProperty(o)&&u[o]===i||(u[o]?"production"!==t.env.NODE_ENV?a(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",o):a(!1):void 0,u[o]=i,n=!0)}n&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=l.registrationNameModules[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];l.plugins.length=0;var t=l.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=l.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=l}).call(t,n(1))},function(e,t,n){"use strict";function r(e){return(""+e).replace(b,"//")}function o(e,t){this.func=e,this.context=t,this.count=0}function i(e,t,n){var r=e.func,o=e.context;r.call(o,t,e.count++)}function a(e,t,n){if(null==e)return e;var r=o.getPooled(t,n);g(e,i,r),o.release(r)}function s(e,t,n,r){this.result=e,this.keyPrefix=t,this.func=n,this.context=r,this.count=0}function u(e,t,n){var o=e.result,i=e.keyPrefix,a=e.func,s=e.context,u=a.call(s,t,e.count++);Array.isArray(u)?l(u,o,n,v.thatReturnsArgument):null!=u&&(m.isValidElement(u)&&(u=m.cloneAndReplaceKey(u,i+(u!==t?r(u.key||"")+"/":"")+n)),o.push(u))}function l(e,t,n,o,i){var a="";null!=n&&(a=r(n)+"/");var l=s.getPooled(t,a,o,i);g(e,u,l),s.release(l)}function c(e,t,n){if(null==e)return e;var r=[];return l(e,r,null,t,n),r}function h(e,t,n){return null}function p(e,t){return g(e,h,null)}function d(e){var t=[];return l(e,t,null,v.thatReturnsArgument),t}var f=n(23),m=n(11),v=n(17),g=n(72),y=f.twoArgumentPooler,_=f.fourArgumentPooler,b=/\/(?!\/)/g;o.prototype.destructor=function(){this.func=null,this.context=null,this.count=0},f.addPoolingTo(o,y),s.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},f.addPoolingTo(s,_);var x={forEach:a,map:c,mapIntoWithKeyPrefixInternal:l,count:p,toArray:d};e.exports=x},function(e,t,n){(function(t){"use strict";function r(){T||(T=!0,"production"!==t.env.NODE_ENV?E(!1,"setProps(...) and replaceProps(...) are deprecated. Instead, call render again at the top level."):void 0)}function o(e,n,r){for(var o in n)n.hasOwnProperty(o)&&("production"!==t.env.NODE_ENV?E("function"==typeof n[o],"%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.",e.displayName||"ReactClass",v[r],o):void 0)}function i(e,n){var r=A.hasOwnProperty(n)?A[n]:null;P.hasOwnProperty(n)&&(r!==C.OVERRIDE_BASE?"production"!==t.env.NODE_ENV?b(!1,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",n):b(!1):void 0),e.hasOwnProperty(n)&&(r!==C.DEFINE_MANY&&r!==C.DEFINE_MANY_MERGED?"production"!==t.env.NODE_ENV?b(!1,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n):b(!1):void 0)}function a(e,n){if(n){"function"==typeof n?"production"!==t.env.NODE_ENV?b(!1,"ReactClass: You're attempting to use a component class as a mixin. Instead, just use a regular object."):b(!1):void 0,f.isValidElement(n)?"production"!==t.env.NODE_ENV?b(!1,"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object."):b(!1):void 0;var r=e.prototype;n.hasOwnProperty(M)&&N.mixins(e,n.mixins);for(var o in n)if(n.hasOwnProperty(o)&&o!==M){var a=n[o];if(i(r,o),N.hasOwnProperty(o))N[o](e,a);else{var s=A.hasOwnProperty(o),u=r.hasOwnProperty(o),h="function"==typeof a,p=h&&!s&&!u&&n.autobind!==!1;if(p)r.__reactAutoBindMap||(r.__reactAutoBindMap={}),r.__reactAutoBindMap[o]=a,r[o]=a;else if(u){var d=A[o];!s||d!==C.DEFINE_MANY_MERGED&&d!==C.DEFINE_MANY?"production"!==t.env.NODE_ENV?b(!1,"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",d,o):b(!1):void 0,d===C.DEFINE_MANY_MERGED?r[o]=l(r[o],a):d===C.DEFINE_MANY&&(r[o]=c(r[o],a))}else r[o]=a,"production"!==t.env.NODE_ENV&&"function"==typeof a&&n.displayName&&(r[o].displayName=n.displayName+"_"+o)}}}}function s(e,n){if(n)for(var r in n){var o=n[r];if(n.hasOwnProperty(r)){var i=r in N;i?"production"!==t.env.NODE_ENV?b(!1,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',r):b(!1):void 0;var a=r in e;a?"production"!==t.env.NODE_ENV?b(!1,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",r):b(!1):void 0,e[r]=o}}}function u(e,n){e&&n&&"object"==typeof e&&"object"==typeof n?void 0:"production"!==t.env.NODE_ENV?b(!1,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects."):b(!1);for(var r in n)n.hasOwnProperty(r)&&(void 0!==e[r]?"production"!==t.env.NODE_ENV?b(!1,"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",r):b(!1):void 0,e[r]=n[r]);return e}function l(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return u(o,n),u(o,r),o}}function c(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function h(e,n){var r=n.bind(e);if("production"!==t.env.NODE_ENV){r.__reactBoundContext=e,r.__reactBoundMethod=n,r.__reactBoundArguments=null;var o=e.constructor.displayName,i=r.bind;r.bind=function(a){for(var s=arguments.length,u=Array(s>1?s-1:0),l=1;l-1&&navigator.userAgent.indexOf("Edge")===-1||navigator.userAgent.indexOf("Firefox")>-1)&&console.debug("Download the React DevTools for a better development experience: https://fb.me/react-devtools");var y=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV?f(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var _=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],b=0;b<_.length;b++)if(!_[b]){console.error("One or more ES5 shim/shams expected by React are not available: https://fb.me/react-warning-polyfills");break}}}e.exports=v}).call(t,n(1))},function(e,t){"use strict";var n={useCreateElement:!1};e.exports=n},function(e,t,n){(function(t){"use strict";function r(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this._wrapperState.pendingUpdate=!1;var e=this._currentElement.props,t=u.getValue(e);null!=t&&a(this,Boolean(e.multiple),t)}}function o(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function i(e,n){var r=e._currentElement._owner;u.checkPropTypes("select",n,r);for(var i=0;i must be an array if `multiple` is true.%s",a,o(r)):void 0:"production"!==t.env.NODE_ENV?p(!Array.isArray(n[a]),"The `%s` prop supplied to + + + + + +

+ +
+ + + +
+ +
+ + + + + + diff --git a/app/dataviz/primerpedia-master/design/screen/co-editing_sm.png b/app/dataviz/primerpedia-master/design/screen/co-editing_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..250edd84206dba90031de80b33b04141d6b1f630 GIT binary patch literal 104513 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�xT$8PF(;~ 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 literal 0 HcmV?d00001 diff --git a/app/dataviz/primerpedia-master/design/screen/collective-memory_sm.png b/app/dataviz/primerpedia-master/design/screen/collective-memory_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..c224a1754b0016298c48739e2020d5664d5c8051 GIT binary patch literal 149462 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�orL%Lsfcy_aFIs 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 R%Wwby002ovPDHLkV1l&@wl@F( literal 0 HcmV?d00001 diff --git a/app/dataviz/primerpedia-master/design/screen/contributor-locations_sm.png b/app/dataviz/primerpedia-master/design/screen/contributor-locations_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..6bdc9a481415d0b5df938fedc7370bd607115881 GIT binary patch literal 21744 zcmWh!WmFW68eWiCz}TfzLZnj~q!*;SI|M$;1!-wmUF(~jbN_HS zhut~M%sbEf)P$-ieR_pWiVXsRUdhV9)IcBmf&^%fT1kz}bg^6ppryaJr zrP0o~y!|%P)KDU*@H*Af$;hsohE)uPD-cbE6()|`OEvM6cHoDPPfgj1m8|lWCwBd& z*g%4UT%HU^0DdpX4pnmz%k zJUXGfA~b3n5Q`MeI}l2%FW2Q(X&57HsxOmB`l`VS4b>!h5ubf9M~IX6Cd-`AsFbM> zS(41pK2{d~F|2B+b{pkrkxiS;jt$)i4u3|-9`~;iQZ5t_aDlK@zYo4CHgnDT z|DS5-5($$HT~R?|VxL_toJxpsN-WpBIBkc~IuGQ?vB93twuHvjOu?`zg*5g7zP7lu z@Z=BVNDdS95hgBw;8x6%=HK+1gbj6^Mle#PaS&Omj$3 zA%Jhy9ySqh5EhB)ML9kGu8pRZ);um;dxhYkdljzJB^D4!cbfjLNTD7Uu#D4TAr}!j!S5mN|1AEemWl8pc8x;r+Mq zTjmgjg3=fY*e*!dS;mRwTm;Vq`s|dEI8Z7I@*^uq!)4&X3FSmx3yds2QZ6;C;gF4g zjiScC9fr?^{>)7P>EEu?KD%!9KqYx7nnrBfWDz%a`yLr{ zlP^sBkcXNPI9$q=C8!`Ur^Y}b@c>Sth5*I#dO|CB@pI;?hL{)(h9^k*ZAd_FR|rFs zi&NhZ^i526_PWUr=|@4fC;{EmO^G2!MO_K9snUsz(JhEkm4X7FTUebdNAMfeOpphmHLIWL??s3FXWMa0dHOv}Ecjh!5Ujv_O@JF_@x+r1ZE;Un&iS^K6|J54Iuf=lO zKRqAm1rHl?6*+M3c8=5HeA1NX5{;NaGo6?> zFi8vEz0Z5)+^31hY4oxQHh^Qrt8_#{mRD5CbK$MSORl4FQA`?^+(o;q81d+iRMjIm zyOMCtEd&M6Ibox9RmXW!W#LC5k5=FueMG@`-}`iV8-;;Tg{ z$L_v}fwH>i%_W(1l$9IJH6lCZLC(${Q`IvWs-CaZvb-0SS@^ZPzgf+`==x# z&jf`kt!Va{93Az)oYf=^8k3-H6{1^rf20hmQ^qG=dd_mjA&C)ec}Ou;+6qLBX6Q1R z8Lp4PGWyY-K^@OPM`1H&g=DDjRg212!fX%P3gS>`Yd=FXsl6pE-N1Y1tk-rAYT9j{ z34<~2eT=siO;*24mu_d+V#kDl2N0;uS@vk4Mw>BC$)xGmsuU2=&71?C{xS_j`sem0 zmmkL}mbnxDdwoB|4qoz;%d%|ob_(4vfCCAmzGmVCcs-4Qua%49v2J~WM95&yPv-qG zkfphaO&BfXd&U!T+1+lh+2$W-?(dcJ!ghOZTCrdXW`jy<$tI|!-0Ea6x!f$hl9FPY zqy3PZ*-QR3P?P969<7@P6~=1QWP%(Te6flTWtOPx9C%C8WsOAw>SPD*SFpJ8bw$dQ z9!77JmcEHFzu%lM2zx)U6XSHz7?9#@8Dk;wbMQ=y=aI=>{DiDDRk0~|RTZ3HwG=+I z&&Sn1RQuN2{~c(ig;&p?xh-`*EkcNbvrkTg)}2JGtR+bCU7W419+ry7K<1ZP$?xO; zR*HK6(=E0~+U)&`oVcxiiz!Z=7T-60;g6MRM-b>hJsXVcmGQMR+z6s0ce#SIdp<%P z!Hx#;XUKPvsZ%U=d+xUBsUDDax47)@c%B|m9A?V1`I;Su5}i#)%S3Yw1Nm(>Eno_5 z`-jWLM>@_~!^9+9*YD?%5a>Vfv4mI;2_FrfB~pu%(>=YtODpT&)d1DIlYx>Xn`q82 zG=`G=UjWb@GCQm?=B45Pb!)^`n~{&?*XO}q4+K?>iiF)5KjbbOe|lb9848G7`Y(;l z?wy9z`Uv6^r#2_!n9Hy#Tzd`Agyus+1{3V}H7Ugy8vo3%LrSdJR>RhU)g0z6(TDHC zOj#sj!B~YSu{K#)DhV-W~91_X6Pet-W2i2VUf=78ZMi{;tL1Sg!Y!qvADvn+I-YU{M zcWd~Jn^)g(vrMQ`$=M1Qvl7tYBAmC}mrq|T7N?k4VjH81%h12M1pU5MmtuFn>F$Xh z)PjLjp*B<~j;Qau%ByqKI+Uqxdem6dn_dk$6Yi&@8Z??v=T?Ei0b-CWS=h@L0ps`x zn<`c@gjZ&|&KT#w92M2t5Vtorf4^KT&jCx}hi@yNN)y)aelZ)ryw+wMM!UrSicv-2 z&G7C8lqZ`KX3)Ney4FLMN|Qb$^iETf^VJwk#_u&6K3dG)E;6ygTBp69dZa01#Qj>n z5R=a~T&$Tc2|In-pYw=20N-*?&2b4;jJVi`l0>|$$^siqptSaVmonLD#Qt=7{5L|T zqyAMbgb~K{9m>Xf8IuJa{53F`K!U=PL#1PhI@*K_t1_Q8CD_J7Rkq=1%__fo@oW}b zT~R=NcLF!`TBs~r{&tvSXSm~KFLC#XER``DJ*5O5)R`KFd;RCj`S{e-^)!mcSAJDl zeNIjHe?T-zNs2>G%uDq&q2}s)JGwIMf=&uklWINr;${SWjA8qVL!(l^>&v(eTGZJEs6I=K(g+Y zD%{O17=HyX%Wsw=h9g`6d6WE$x@Vy1a|AD{e62uVO2QwyZeMWW*d>c*LSE2N3iMa=RO?q)H$B3P7sBqoCk~HZC!1q_ zTk^VsF$slBcUK% zuphq|YEdIUl6d5choJEdxj2QqSP}}vOQ~ygE2VRj4kSD>XOU642`eEVW(^%V{UEg>Ch2r~X z$C(&m3O+A~slg};VaKdOOLwv^Eo|>TH+w^u`S@Y&YxXj zR7g@s6wfyJcQA-lR(U5(n-&(XaWv2&C#9oWA*X-*DGuMZPtB&>%#6Y3F+Q6@-;sr) z@QnT8LdM(an~u0STD{r=etC;?#v5rH(wzC=N#-aD?=64H;vpUS|8BOQ>)a|E*Ant? zm#|#bIOLh|TCX;$3w^z^&cyeQr|}(vHVD6g(IE0e7oM z!1w(tr|$N7x_Vl9)eq#jOmb#?9pzh+9raD_OqvS3VR}hR-|pv}Oy%lWtsB?2-rF

KCmDVy-(sfR^XuH)$f%M~}jzr0e{ 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

odN`96u9(2r!ctOR!QO-Z zk15=;Lmv;3qWTBBcKwGx@OvNq44l7aWIt9Dfs8Hn)9)>nw#VKw8n*_{sZBFXYJ_`U1dgvR96NNv`jF$sCXzV+qOQf#POmo{a*H)mu-mx{5E2ra2(Z~Z4Y>n zdkl5nr+Q1NOfJ=1IQo!0k}CkJLn?o*e_)k$PYfb+#yDQclX28QxrI1{pMr{!A>NwP z(nN}K8_7l>D*=&Q7!`@N+F0ZJJ+k>ao zrfQ?t9%_Kf!7RuBfv$gTEsx8PRh-7UHmydI!se$WJ~%M)$|4i~Y9k6aUqTl{3}|)wp2Fis=MJ?nxakN{uQ7~CKU&eq5}YSVkHhPGT|H`Lhz3V zq4CDH9RXgz8#ly^{iG!_uS-_cLD>eRdZ*$ z9(f}?aV$D}2L7nlpTrisI~R(HUXirPFYMP^ALfai3+I$t+^~n{y|1IY>2_|vh#Q%k z&+G*8Ubf1HH4PTcX4uHc6el3(;4wtF00_4T&#}AiWp+`QFERQQo@z8>;p)n4K~8c3 zsm0K6Wj+x{mp5W8q-NK>s;#&sG1IY=FobYmi;CF0+R$7|^rCalwp)BFWC4{sMo}rc zIFxU!%QBFxEJE8|0A(R%Y;;Ju;1+#u@_=B$7j&VtD%`j?(YD+^Y3|$K&@}m#a6@yX zS=BV*4X0O&%AAEIOx}#zK6yP6u1Z!p*qpz@1U{;NP!Q={e zk6*x6q+l0HJ2m)NlMPeMILj%G&rJ=AGUiloE~dES3sQ={I?6gMO{1Z%3DjFTLd;F$-u@MD-)ds-Fc#KBw66_uJ820iD)xX|4=H$0H>?Hg%wWBs6iH><^#7xy|OM)K%fDbhM7!dggZ(6o{s0%j;vO zsCK=-;mlVXiHVf{6y;dx>zS)sRpB&+5)^LR8~V?E@YC?%J}ePAtUP8AbvawG5O|^x zmQ;4}qcO!BCH62sQ)X(a>lelbBg?!HGp_$I5-Y%;VvPylI&!{vYAg>91Kz?oS{ui+ zjlq-sl-n?>d<81s5eH&Z@Qk&tQ(^OKYx~{ReXWBBtmz?5v?aCrWc|t&N86NtWGyy# zi4HHRwHJCHd7ZK#bE*#=El2BoX#8a3>DTSe6A!h&9wYI^c@PkRNWX!b^WNCf4x)M%7}#%bnRRq5YAai1?l|`h4MylOeJ{mbl{YRnq!PTF z^?t6fV~drVtpawJW>x>(oXZKoSSkuu~x}K_g%5 zphS?mOgwxv$EoAwXD-cpxYtw?s+3uLo52;tUBBOJ1SW5ps#x;? z6pSt3az~e4A+@;IRhL>g|L@g$i_?knM17)@1A#(j%C`knh+VfKtl(T)$4WG#`?~%* zynZLPj1Y#sy7^{GHO69v{=xKn^6)D+q}X6XVe3Vki0NnJfz@p{s={_JPHL^+@0koW zjxtX6#xbF>2p<&MQ}k6=G?ngx!3`wOQrR$8!stO5A$hTr`DJYPDD-d&i22#oc}jDn zW6aysoeMc7>{a$WixA3&(_8)HqLLrmyt6usk}0$LC1w)FutaM3rhHHiTB^p}Q+v9Z zkS3;VNhaLS@hp)cGeeSsJ%!sYSUrs|A+>t7(dL?c*BmV~&X!55Bbsz4kQV~5K;{!) zlEP3p>9xxj{lkZxT}$q^shXwB-oAryLmQUPAhbyyho+McF9$&x56fZ$QpiCk5P?KE z{d1A4|FoTfw%s$p4Q$;n2%TlsiWG0I4+$E!6{3|}paZ3HL$VJMZNf{`)=SNPlAUA_ zv0@uu3{9w5V_UzMvJ5C^NZc7XAkcaqS`vzT*fvyTgvnfNhLc$v_rEj)$RBKqJvA8X zT9lB5m8khuaGC_*u)-N@JMg$7*nr=3FV-fM4U#xJpJJi|?zzks^42sNLv@8p9oVgq z@}oq890#SDj+W`5LfzQhr6%BahC!6k&L)p5jyGs`vBu7KgjRo_6++l3eqC(eopVu4 zHVfXFJz_=m*HR%oi826!0Q52U^{C1x+E1g->Z1x_(8&ob40hKT)9o zd;N~<3Tvw(33VDXvE^dG6(#cjRB}s5QE)Z3eea>iT30V|mVR+p z>|Dm`!OvBH%dpDo6dE8Cqax%bpK^-5dBHRrOC64RH%Zlr_ zSbDERiHQah(}o))M#n>&W`>t^-L^i3+-O&t9m4NBANlOW-A&mdx{Y+DNb2E3_0`<~ zy?Mo@)>JRTQ`^?v-t%AKIMLZ;9j3!Lv$utV9qP9(nB}dDG+F+K8l`982&zyLgNp{G zq-N+0uCL4pbX7tXQLBb$@{3DMbzM+M&=ZsBokT|W2ri^toZH|e(0d~ErYF_P>5Kg_ z)$}mV{44n{6eXZ}(?x}CLZ3wPN4ju>D%c=##NdhXah%GeT7}V52GY8ChI(ID$C9bG z2UXM~FMpTDYu=$_j@DUY?EuC?6itv(SMvpwFyu@?u1r`we||#`s+G;`AR$?}dHXUA+{b5|FBTR}D?e3Ow8M|!>$5pGU=aNG#bw!P?fL)MJFn-qwk*A0P$CH;=bUpO z0to^n!5qa*QKBS@$`Y0Cm2^Yj(A_t6te(Ded#1qfC80t61u*=O&y*ZS7Cz9p9&NG;q`@fQh{0?H7v(-RP? zC|m|1tH-X};;?|4__ka~?N!5lJfONkA%H}4bb!mR9Sb}K6rz9|nO)TEQ>h6_1U4F3 zs+T3O24zKSM_+XnBmUXTa2yCNQMD5Qq!>~PYU<{X+*F{JP%=mRYdlR++6Pacx)LS{ zMP5`EZ!C6M`Q=_C!7P2p6t%!rQcY+czUpez#u|GXkOBlUh;1~Q$`H;ylYwptcu1tYt5QA>=?EA7RWQib;=2HWJqTA#ZxoS?X3X=!Sp#6Pvl~A0IGGIt$-=1jm6Yk&497oBhCEoJMJR=TZv*E3U!<1I4@% z>R6DegHxAZNma4{jCO3lK<1S)hbJPDhA$>$!&mCW6|$sC#y}Dsn$AgNS6p;f!271QxfmwhlRnM2BGBnX$-s=6I*&TGPff!9U0E_>WtR@k;Co>)y8Pe zWmy3`3HrD$1VNj_Z8)3N)y~p&%q; zFU)&NOG7))$g0wA5|#uJZfNO#=Gw=(E6+j~cKvm{35g&=x$WxH9E~0ECYOE+rya{J zDl%o-oJri`W2|c7q#gNz;b%(84U;qkQ?S;yuxr%^K?bX$&g~aoOiy2x9HloSu}Z+%&r2fClky`HKJ9b36@lrnoRn_;?tI7V>u35V5Fe z&ncFHC|*FnKsdwjc~}5M0kw{IwS=V8yaRqB9~XV!kkaRT;Daa)W)|>CB}aj}xL%+# zW~VIiVp59s_Y!{Q%y~n5G1LmG+Zd&4ljv<&@n}u6HOt0UE)&aEnD%PmC zNiNNIPtQ(H%?__fc524VpJ3Ax=~i^|ZjsL?M&xU z;KFqSZJ>Ve?AhgT|Z?_{D!YNP$!BY%RT^06B+u#72kXAWyrxsj3JvwnI>r_((^=nnvdzp5ea0ylitO zN;O%7Ti^Rhc4%DhOTdPxEq65eV``I)Q-afRp1Y~iIx}Nc4R^gfh{#z`^Z}y>PpS$R znwSZkuV{vj)x%k1qB1@tP>5W}hG4;Yr(s~=HHW-G^=%ELH!k`TdtD3VCz6ok|`ghFoZQ<3?`zc6Rp%$kH|lYl-|(oRcliZ)|+}mx`WVF#&)( zc$>(Eaz+xg!q-q&JE2oiMg+>qbG8yc#^mj`MmOS>(jpLuYBJ&5Y+P*{qJX zk#e1!>+3Z!tOqy_ugl^ntIZ~vk;fO#Y?+Id*3HO|czR~u8P!V6QSNnJti&sd!)qN@ zh(@oXhHUi$qiHeC*h_hj*nv42@z#E=`tRe}qF~utyg-9(+rHwa&3`QKS0S?F_0oe91}U26uq zv14#4Y$N2UDxUYSZB!7JYO_zVg&^>Sf(8^@`~|2P#CIBt+mV^%1W1<%(MED-@W(lG z2H8=#0MQHLf8yf1kWyqJ? z9Z3lbo6APE6n*9$2z$V^ZJWEn5HM2@a_^6WjdAjDZ+eY3Lnz(S>sCn4GCwEDj+5HF z2lO;jRkt;2772Z800K|;Bk$IF#JFm)>k@~9@9vW(bvi3OL_Bec z`GN4sh0QCC!bQNYY}#a1S|oH{l?w@w;#GN*IRCXK)S4<9d@+6nAaEs%yC3}weFfT3x`@fByGOmHC?3EX;BAwhy6_RmPu7W%$joJ`Wh3Sjv_TY^l zZIt}waL>9;OZ@Z$f@jY zD^!Dy10HqTB}a)7OXZjV4SObNqRh*J5D5!g;UExFzSaf;_}lD1((qBl$-kU&RnXB_ z-B+EWVoI77{?vivP^ounteq!^*XVyyJbEx6=ar?)HY*PWF^xVqlJdt@5dXKR8v>DW zPi&L-X=X>{rxfyc@+t1pQugvw7GdL!hBQT3LD~XM4Q?f40_PG)LV{ub+~mymUavhc z@$6fpd!IlB6^+YpIy1XfnriC+hiuU-nw8fKVE4rRFTVQ2KX^x%gBNZ?P6x>X0byPV za19B6Q)bGVn}xt`9aun6lfJXT`5R9`)%d!Jc((q6E*Hdhbd#i~o#Il2jI`yNou$w2s(6{gfY2rv&+e5MA01 z(rJxuqmbu5m`kGPuT2|Gi(7NPr{`REx1?PFPqsD0q*^(#+WSrz4_~8wIf*A?&y4BA z`NaH|Qg@(GBMs2NJ|(`({R&KNC+4p}8j)Lt$nx@W5q4o3got*ZGlY@iU*4iNIksN> z1Ub3NSG$8`CF$KpxYRVvksmo+lpq9thA6heIL!#^%Su;_Lmm8Y#z>o?88bdSZ)PE11_#=O(QTp3n3gm^3N z;3Yzs?moU3t_^M9h&!kU<&J=Z;uaw1>z~~Pi2x9F6fao&C#m=#GX<>!=|D`OE;LBQ zK{sPe36!v=buVT{|Fut3F6?DW(j?>|-=YU6T;n>ndFcEJ1XM&IdVE_6_YrvPI7g7Y zdtjGpXrQax(}><70yQzOxY^Fwkv9Xv3d$wL>wq0Z<8oEtP0%5g9h+rQXC_!_EegY2 zx$^l}Co@2gsFLEyQnd{4GCF(Nk)KwmjDRB|0AY>QN}2Lst*jP@=+np-VKGth#j>HSuF14FIMlwhePGtwUr7g6C5}6i zpP=%%k0m2^wa#u3a8FN#|KgP1nX52E6lP4arAK13+mkn+Gv$uch!Z!0Vp*-PpNx#& z6ZMuBO{o#w9MEOvv!k?>x%yFfVgrYQH*3Rrl_$=w;GMc+j1)kEjENGh!15RG>x1;N zFTH_5fdaeBy#y6IDwp=;%U+=>o(gCpI2z_g%uK=4*BE=T{m_WG(rjIlojNF}1NJ`+ zJ;WAsueCfcu|l000`@x))i!w?#U;nkEN(UxRz#i9imK*Y(L%AEom^yv0Sk}1n<}W; zMTsA3In@*Pfq6#%q}HR_>az_lqLDN5;H%{79ZP-|Aw0*xl+vG@d-l!T-WRG!3BSn{ zEh1w@#*_~15JN5LvLQK&0&xHG4Qsm0G&lh(06FY5vZ{En;;`TC2Z$gJ{Hq#Yebv{y zZTYd+<3@?>hRH@n01HOE_7=fX_%mcd&3)QlXBb=CK=iP{5oo4ksDnRB;S;{Ma3Rgf zvMD{mhTd|D9zQ(itM{FEGDl#C0F88bWjd_EePENdYPS%`Rq}));euMFeDt* zw;aN3KjLSzD&W#0ipvO7;st&4Sj`IHhA@fWUk^_O6iz-jbnw>!806Rd$ztS~!apU<< zN3T3m`7>lj=^8?Al&Vi)|8@p4g|8 zibN8(coVWpn9IcLA(;w1am@IUbMQ@FaTe#y=`x~6_Q6H>=$bV=i@jvu90;yj>npglq(4>fF|1Ee|oe8nHV=JdGK$U8M1Jb zf5jqa@||2Sr9fi?F_5zsoFybr6eq17!dw(mW_bRG=Bu~!j3mcV59FqjxgOblQ{BQh z6iYEazq9&--#z*LKaM{BIm{wH!U>Zd1oM9_ek)dwYRnVyWD(IuUpu;ZojS4D##5y0 z{L|b1>FcTWdumS<(LFi|(uk~j-}NLu)K(`MT%cJ}q%>7Nt~)LJQe3oC#}O0^XlcB~wfvISL+*jR1zGa7;^z>dc|Pq3Gg++%4W18@HX#~dzi)$SZf za|S`A+@LwarMF=jk00)#u%fd0q2jmQ{~8Cx;PgkPFAZ(p@85b-eDV!Z0GStvc2!Kh zxeDf65JAgIlW0D?xZ^0TX}xhnyofqxeD&VkC%-X(p2EqR-E|BtISWgHxtoFUO@Eo+ z=iK900uz@l(f(8H@zryfx-ZbmGazfAR!SjVn|fir%v32(b;qD*x6bauV0RmAFDpU2 zW$CntSD_UFxieX7v{KIqC27>B2jOei7{MYb@Q1~EfDG^jjya@sC&dduyWzM_kIstP z0&IPz>gelxcS5Ag-w4K1e0$X6OjD1e3hEF1?sFN9cR{^H0pfyz#jO*D=`UYNd$tOkuMP`4s@O3CRlXNYX+ipAj@ zkMMb{7(X3;5hI4)1iPS|PU-c#=4e45NCy{gBG_+^W+TN((jpMFE6oaf)H-hr)U(2h zL6L!@*0y?0jAm;cZN<^bmOCU7o-%~dbv7s_IJ3}G;1;4#r1wR|@_;K1C!f9a z2=M}+=clciP}=sDTBu5-<4faOU1u6IKwhyv4Tw^^q$qc2kwJmEePEnin zU@BJdHlwvpq8g6`sQ*ywmJ}w8sVa{?DSn~*(J4BZ+-`TAkc|PsUJJ|E>9%UH^CO?O zo!A_o_j6}K1D!*Qp@m&_ATxCL^YGj@a#fDfh0#lUZbZOCIbtsKY0%5mg@@h=&fkP+ zp{yYSDyog-I1vBKp+4yHz5~KmTr4K`Ol^}4<_!*wC&@1wyARP?&ICcU+MO9(^Yl&u za88I{ktY|eYZ}FMp(NG;sG=P%kP2Bee(6v#7&1s>CYT=(87A*ZdEh{#woF-yeYHyA zOL4Ylf5PJ6m54UQQr27^O|Y|0`XNh2bnu#5$19Q zs)l&rLp8*G9ajDbzpt5So%Wy-iQ1B9++E(*v_h0q0-<1h#M?wWFI#d*?@x#h5sj7w zNQyE6j?7%7(5UT5s$5~wUCEjr=`|cK(39`1otB1hicytirg$7J#*==3pn3T!I^Kv|qz8h+n#CfmW+(rMm=@)k~8e(G>@Rfv77jLxCuE^q&{ufF-!fBC1_ z=DX?3&yttkOHFN3c<#uIs4aGQ9L7kV=);^Ie<#0wH?(jwJblGGe8Ct>Q-`E6nqA4f zJ(h9%_UE786HCo)ip~!09)GG#Kf!Vj10i7zmZ0K4SvxD=+35W9qO7E9S@qDR3l5M^ z5l?u3?Ih+YEJn#bLafD-9>y;~D2dfYcKsmJ;~8B+9I1Mq%FY`FVX2R!zC%GY&KFm2m);Y#* ztq|u-p@-5PO^nRVz4&JSd%szE|Cc&X%3fS^4zGF38@|a(+YayWyk~5~KX>Du>76I^ zv&>$6L^m-CY?ZF)+LJGC{`&84|Mnk0|2O}$eE-w(#+B#4{G0sh-SY;g%Hm4QTo!TW zcj-Y3Mj3=l>JjeW85pVVo?es1+H}W*rwrpo_Nph%!R!$2PWgXd4xitFDl_j=lUIK;i z?Y8W=(qP2Ya$TZ-$j9 zJJpmmDimCBcJa!Uum0twAO3FW&eyS-i|%-TZg>)JQpA3nFMgKn&+)VedB3;e!ECDr zldY1?khvy)B{|aFh7Qmqz zmk~r@N3bu*Gz(n`e%a@Gpi1qI@oz1#(slsRr}AY>plMCliOLa?;_)4}9TpoH%8~HX zsBsc6f)3(;86t!F$bdLnP1w-D&xFFA#^H&S7i^JSpC|1coaU2n1M+ZAbU-+p{H_c#@yxq=`$UJ8t`1uJVia^Q zOYzXf#NmgqC@9-Xlbg>H9ms@e+lLgnA#7=xFgx_rWO5_!M)AA&{WvwOC_iXS)*5d} zR5TjI2_NJT2W$QG4)68x z72A!$e)ClnsFtuo`7A z^(s0bh!uysM%0R`Qn3bjS)!5xhmmLlvT2<&%n7tT8U@Z;R~XYEAhZ+jGEZ+C|H!hC zy*#JVHVxyUGaN3Hs;FveiQFCf)^~m-c zA_dY~XdIgR$3f{~3Ms2mx-mQ1MRvpHXWx)92ulUl>_N^2H$~K&n1X4Q*@2l5dEDbX zBt}>_o_cSbmJ=x4kij|MOem0(Ih48N0zq@k{gX5kZORRS!e58)Fv7$sFWqtrh>RnV zTmSlx$*p&7gEN#-3AIaZ*~{@)G(xHnqB(;2!GoZWsSsEdAdcE-D{VgsjV*&yoN(7} z#Y>8yu}#4a`;b@ys9MkjFfg;7-2Naodo@0DrL=gdFtOk+E+N409$9}yiic_1Nf$Om z*-X(a>`s4vqU$)xp{7~@*5GMa(9=`3rT2kjXfe6=h}{MQVF_o!Z8`@jtl25#K&T=i z_*Z+A911$E=t!(Vq0Aa!?=pn*60p>V;>>KJhEVD3Q~~zYwNRgs?Kh^z=|G>k_C5FL zy55(nrBr&9n(MB()!^(gIa)U>sWqVVhUn1HA3qeu_c<(nj6H3-!Ek{x??Z#{rqckh zfYZivVMxWSz~MriUTQ4r0vQbV)ZQ1_OHcbeNm2mz!h+}(E}B%=1x-B`AAS*DWE~gd zoU)H^q0;XRNIHC7TOKWYk}wmN0Ac+R!+fWQGHj5Z1w3jzw^WpF5rPURA<-stju zwIiT1+j*UsMGZUVd^h;VuYJjgFRd`TUxtnQWM_7^Bag7GSeF}Y>uU#|#1x)X@*4Q2 z1=X^3$8%b=GC0oB4JrEARD=>=z&5lLS-zLs`NT86L7Ig)7J`62nB)EQXn{$^G^N2WZ-zc- z&P>99LJ*nGv7o1h$N>A^Ih}=$Poj87qcPeB<}gp3eGS>UkI(W%u*l_A0KwwriTCg# zTW;-m9^5@xkPa*dwNRz!#d(#1_q2$akIbZy;fya|cBIDYTX=TSY`J22#Thez&|%~7 z45zO!s<6EJOioLpDE%XV27xiVhF8k({@MLM{?qv5pY?guz0#`}Z|hO=e`@9S!Y98? zuivJWK@;eQ;>A~pc3JcXV*uZfwZK#%#VeU(w(c+!=c?zz1O2k#>^wFjWUhCPjMQIYNas(Kq&i6#< zbX5Lp{b_qR+2w)5@K>^8c+ndwzuwk#WnNXuUB z8tJI?*NYcp8}9{Yca$c3V0^2%^N|znd2b5nigOht05(Xf8EAE5%}&QRo_z72|L?=! z{x{_9&HZDzWAgh%BBQkTqrl`vZJ@t8fW3S#_64gXS5WJ#IAivp?2i^MFF*XN|1@y- zhvf&Kk39IAhJfjdkMq|*3{PGP&0aq`;nW^Z2S!)r{W$Rlh#G$B(JmZDKpp=Fi7i<; zc*1=Kb>`^&RlP4BS=>!+>>0fgUT-@lw3%n7vV=G*W{)L5Cz`%t4kWN@3Z+=&l~!(n zRA_SDIeO8U81{@T(?fxFOgeX%Gq4qwn32_G(9OTq(hQV7435DWFiT|J!wa|F#S49A zI~%*yBBZViwzbABi2wj~CaovJUW$2=FKU8Wx>p}0KgX%IZixilTfS0L0qh1{lYk}e z62CM^)R>I^@R1h`gCOM8c+en^L}^n|Y{-Ok;tb5+4$j?h49xH%1uXfkM;dPuCL%h6 zwL49Z#t3uSS>7Cf_@n2){tp+w{A*fZ08$X%*M=vgUi;pIrd|BSS6`tHWg3*$Z)w!h~{=wi+iC5n6aDxTF zws4ZCD)~{aP-5YV-V*{y@3TlOy^W<`zV$4ze1}Fp2(GiFYAAgU5o_?fEtUz-@3`}2 zoMG4S60453)Tmmqr?FEhjSiTFJ!ZF9dw2&p7rk1OF`Qu^rgJPb+xW)Q(ELqyGf)5l za}p{e42gSOk$x<#*!ss=REm8GG6j$gnK>w1xFqbKkom)N*Nox3v$V>ppb&r*T~#60 zK)j$04JcY-nN_4i(TE1{BRva_DgUI@8Tw3Ckz67+B zYqS>@`2<}mD$R7wUQK-1J-Vs$r+JalR{N4wn!`RG7h8Xv-~F(%_(xX3`*pz_)z(CO z*hE4z0eE^RHXWtq$inXU-dBjbFpQu`9qv!O`3UvGeJ6nC{^fGur$|cu0(|TQcV>OlG#9cbhy+YeTFUoWG9bDJes}KgBu}(~nJzp8e+3IM1Ae zGvsJ})7N6F53*N2aFs8rT~TWOD6(Q%;+W7H-yF#>t?`68l$gZlK|ta8dt%rT))i$x zbm*X&HFBx2cP*JouzijL3zIr1jVCT90Np65^{C~FG;Q|X-A?9*Jc7~@>N8q2b`MW0 z8hMWE(6mMi;KcR`+td-_Kor<}c1hXSeNz3&+@>HHMuJ ze`@i^Tb7L~-UbEzqeHNg93?a4bu2d!O~TOwBX>tc>r46u#|$8jp^QC0-fi{@gq5Yp zUMJoMKhF}+QzA|M1+5lf1QPSJgF*Bpe5m@^Uf4JU)n?pai$5}V*;$y!QbboDdCKbm zqO4M45F|#Z%0XsA?ToVaXj+MbO;`bVfK5PT!I~<=L_%B_NRQ)_OvU|Xsc1Y2W2#I! zHW())0?6-N7wv^B9!F$=SO&`?nvC;1F+YE;%{SA5uDUWS0tGFE_WSh4y2=_U*;4g! z3?kjrGHs#cN3`b?MP=|=Mb5H{`x=CQp$+9pONo_lpwX5Id03r2oPVKGuhR8v;<7D2 z=NVnIrG|MwS54MQfMu{DOv$p!Y@-1$`t;`h32%9I_QP)-xoNW3qWvE}9jOypB!U;i z1dy&GysSfQtEa7e$Ka^F3DKxnbPP#tJVy1af$=|qw6L$YONEyB~)zj|cH2D{eE9@>Vf_3*f zW5#gKSz3k*fU2r%WCOUwGf~-O*ii*P8pFY2)A}qCTe5w7kX6ylUOd|HNF~yMJynKO~#71 z)n%sSGjdGC4mb#g`0zV@T4QFKwl{(KoA3olyom zF;=KQGcJQP3D?t(3a-e_UrbNzdm|HTS4J1t8?qi1lB_t?oBY5f#^j%+MHj1rRK>M# z{^R(IUls3t9a*@ABM@8On|}AFuFObPl3&5l2~><7&yXCm<>%QC-KAwpfV&M&Yjy^l zg7ry2L88Ppx^5r3;2vFNc|*`9SYYY{mjETuS{g3q=GT8+xbbnNiOb;Z=#yV~#84K)D7eYE&G0g40Ao&-jfoKeKbk(k`DdH0 zILU&>qv+ya5CL;?*qkV^V3l;mj-=irLe&Ojm# zTcU`tIM2xS5C^gOQ%BDR*3@r3FV(TSy7b|AS9f;}gx{x+mUz;%8-R$CdM$peA?^ST z!3nA8*5Mi3gt^b}WI*YKqYGs*+zhNty-`h%rc2@4^U+%$i-X~$G&DW6GX6Eh)_sXB zQ)(3S_c&5lKrJWYPypgEyplyOtY@IOF#q}ACf6Sqwx9HGzu;bbCodg(>dP=DySx(} zTNbZm3Z?X5QKEWsF~AEV>XQjh#T#cbWHG4e?1LTraL?4$?C$r8@abS~>mOsY5))TG z*sD<}bQYJ)i6V{a%$e!_t#|DM3%xeKd-1ltxM0nUn){~$vo~14#@HYj8=kPnn{bU^ zGR8~J;T5(@Ha$8%(dXKc8z&9!8^2h%^QB{G8S7I?^|M;&pKcEaXSRc5OODbi?upv& z2ca~j#zaweRS4JNpWGs@v7|@XcrDo}Tx)?)7-K`$WP#{_Uj7WGqAE@Uk(pot6LwCi z<88)hUQ~keKrD-8hI|Pn=P!9akep0PqfO*cjmhC!6cP+}waj{^ zAIAa51z5pkh=b!V)D?j8>OP8TcJV`6l#(a*Og0RhEMszn0pvZjK_{BSC+EJvyhaiZ zZUNR5N^*Vw88J5(rqPvH?^(a=jw)BH^vKaG0RWC?Z5Q2+v?A3zdv;AQvfy?hd3H&>KVLY&c_Im%-XV!rQHJK5JaCUcH_=7zXl-U-fFSxU0ltilsdStvt_#bP=)6} z46lmY$p`sqnhPWkj~V(d0S==2h&kG^2$hjRkWb|=)aKh0L-@CmmHX!YGND0y>wW+9 zjyW}2X)teK`t-@FU&hWtJ>9LJuSvxpqOBF1UoHnc12f!8ZlBH@R_e{? zRcaEhzUdvz1S)l&Oo?;nbm1(4Jy3{iWEImUhE8ku^lJ8XZgt+cC?VsC%wLj^tVmHB&D|;u zMibPqMOzS~i768pH^uaKER#NdkzH zC!8a$3*8D`WPoxn&%~Bv`ijyKIHxgovbJS835x^+Dn-v3Pxb)(6kZXESZBtks$^$t zBs_2xNzgO~3a;efgWvu4(T87$mhX<;|7zv=&)#9$kp`obpjTrMU>Nv0wBK%xS@eGA z_d3^zr?p2) zN9bVwg>yewoXgW)25`?E131JM#MbUHoB5q}NNhriE_C4@dp66j^xyD#@H+1ZdKUM=b<$qs#ZK{gai+Qk9>=|7Uk4 zY{a1;!$M;&{m{af%lG~wIYOS*F}gudO1_=>AXc9(Ka26(dPniC*=s_U!r~B+p33Is zkj=P%N=fM86|tA~S-rh_JpU4`GgjBRc5D~!Bc@Osjf_m|RR@8Jx5)-Yf@#*j4GVKO zy7I762|9Fv5RYsT9tXKz7_LyN2t#zSB1PZtrAPbaRPK~m*hQ(UK3ah7g0CT$5(9ho z-8#6Z6$2_aFpZwYPSggAm%AWgR{q_3`sIs%`@b_cKC=~9BePeVP&Kf2wI$X3E^Y?) zudYLn%Id*GtI=Y4n;t9=7RC`u-P;NlcAju09p#<4WY3fViby5E7Z%3L6dMF=kFP(f zkXz`gk}Tcxr^9GKqXccVn==(O(K#?}j1~wkG`=*n>+s_3`1%ujepW+KaC!_nfHs&8 z&2A3d`u^a;&BbA^ zxx=DT$4iF61zk7~!0DOXhRY}#(qe0HEBLtC=nS~xctE1aMLx9d2#`Tt1rTXt~IM3^hYiN-i&c5&8Y@B@~hdYOy;UZEJcZs5?NU|JlmSxLvM?^> zh9@=%3d*;>6&#xP)LOPmqp!`ahR*{M=}J|C^-Clv0P_C9dD^-lK}D%wqy~XAz11my zWi+>VOIv;Wa&7i+y^$EZE1Yq}%jvnz+|pYYjdKv@53=isDHrE90_6!{lyXpUu*$@8tKd*f9505_kUB~labW5_D zX)L+JiC%X^YR<;k5(dcCzT`5i*+4Z^3s!?wKf;&gk&ia%$l%YotFldm~1dfmSAbNL~6Gw!ogM+qE2} zM;xFvUSX9}+h<#Xx6$dChX$S<)26RaJ^OKC<8iz&S`BA=ok5tz@z!Q!^orJ`H>nK2 zn>q*<>#NOVI>^5VJF-oX)ORwFbaT@*OIvf$9{e;m8b=kKk|Vm|$CS{?M@qH-JkO|>Bn-;HzwAZ?m5Kz2NuSX~E8kPL-~DX(cTQWe zPUHx}P?VQ75HZm7ENK+c5MMNOr7qw1lqSOCYiLYR-=S1QwHOqWraKNOhru-S%jQtO zt-sb@111bs=f);yr#+9mLG6iug1{0Om?OH7c6BVyOKo^u^65hUZAFOSz_iCGEy0}= z9U$c-o__Y5_y6fXZvW)h7lO5Ez;j=Ibnxc;+0{o2kN#}p&2Pu%?x4#^;kq09GB!&! z4j>Hy71kEKS5Tjcd*7LP{#jSAekEw7oVTssbs`O{CoreZa9?^7! zjCy|cu`55)lc-_Saou=4KtZenm;ur?+RQc;PzsH3y+~DT(L4nUZji4q)a%kmE|V6q z`k{ER2Ppw!AlUx`gAtr+L(^<6=K5%j4bF{90XY#q2CgAC!U$r`Y%u@840TE_kfg>M z(01GaEQ?glcf9OcsV|!EZ8vV=qA0JBC(7n0NKuFeJtkZiCnV@{rxPZ>Kn8{%2@fSS z*kU*h+-lY>RzMf6HGV%jaW&rB0%u`!5-qy3LxI{XqzO7%ptKWum^~3dT>P!QZ3i(H z?)-SS#YIG>;0Epn_nEAXY=y=!ilZ1B7;ezjoSBi+!@|s=6eoGS;GL5s=o71_&QJo1 zJ0E=V!{7W@cJ0Z9^xQTj@z~^2dE*JJ%)WS;WEBqvoWt@0Mc3++&}N9owB`*M#6(bF zWBpeifpWWr?tb20oH_i(ylzkw5K=%tI%5-_EcwaT@M6j89p$l z)>x*_hpS|Z!gplPuyA=NTNJ;_*41Wj!%*Pav9cpm*I@^OgA!tdhAz) zu;KH~mFfE*t^e@X>C5*?K&T*w8*4<@I6a)UCpXgV@F)R3VKnlB^a)%F<{ceu=`PY@ zC9FX1l}$yRMIdl%B#%?#UF>R9&Z3QL456eWcK_kGgRsmDz0YoO*IeddN&+Ui zzqmmW)CZ@a+eO`8rq2V2@K?fz_Q>)?XmrKUqBH|k$&z;JCEfu}l{=3zAVnPh zBnNcoC)oA|+pP<7=&aTCX()~42FE7yA_!tamkPUJngMW-1aU2(w!k-Zqhr^g!158~ zIH!rnJ2AD#TgPl|xdh-$Rj(8?ku4AW^56fj_55cSy!{o%RN$0^*yBjo)wAibIdPa! zN=(n~ETsvXJ&o)uzZ5^HUV<&M~I3eRZ##@qRo2Rtwk z0Y)Ma%(Gr8JdsCO3~&)8c!GQ+GcVeF#1YOMW4Owp`XwG#pf+cZ6;z`XZzsM`;488b zB=dMSw!vF}^V=W&{tx^)`S2603~lM5!C7Dq!T*`x!98aiP`V@Qz|eqF@mG=vydu?* z)a*9I3Vu^Dro825eEx2qk%3bqz)=SW<~WW~EK9SgsHs77R6_t@J>j#|x$zc`&oNo7 zR3h7fw~alfEa`rlw-jzMOa>((#Bpq4jfc!lz&1hfQOD=wxKa!O*9g!X9=U?-9mzQ$ zC9#;!*QOVC{3=ai{Z}8-@CJ3&2x^Lv!Kwb%nsa1nI#qqxXN%;9L-m%~6EZG5-s|>@ zh#rYshk|y1+}s*1Na)IK;X=-)NsW04%)@e>Kp!$~{X4jq)?h0namf+TzBRQZ!6q#&^GTl=~ zR-d}i=bF3sr+@yN|9<@0@3#K(SI%^0^4k5ewR^ZtiV>94Ib*Zam?Bx7;d9yTR59Ys z>$Yfya2?zptc#s!4W=aIhH-%07C+UdS16j$MG~mZu;KL(Mp(ggUTFmagpP)em|)?U zAvIwL*9SDB`^N;m*-J%8iF{KnJ4?LVP!GQ0NB z28W_D70A~G6E(a25ERLyuJEj1z&a6 zl^gaJC#Zv%b>+2Ctg)Jf?~osL#PehgB*w17B=|h(A->vInWRgH&CK&+MG}IswOFi# z!S2iu0HLQi4e>!H+;n@QNz%-<$1n@&TuQXI-00{T;3A$JN;nT2$b*;#reLTxMM42g zP*{BwtWJ{$5!(|^8a>n{5+&klLU*DbLC!@Tzt;;sI>^>#&(i=Bc7>W3Ob#*>s}oF- z)J8lo1sZK;lWl47ghIpfzAE%bw?GVhbqcj&4LTnvU*n}tAy8X$QYtab=#zVb9h==n$Ai_hG^K=aec_XUR2S9bo(oQ0f;EBM#*dv?AcQ!tFboh|CQ>*3B2&Y`GuRl(j>Rt zkh=7Ei=!lv>BYN&`V9Ex8+IRYGF4BE0?cl3bxI8OaDvc}f5E5mBZ26la?;nt6XZDE zzBoRg&4$Y*XMV#Tc*6lKT4pRgnI<6#{#Lv+!E>lY`{}fdAcfM*qNnfEMjLe=ea!^Y z{yKEeDDzlR$|7BTu8TI8Gh2sPLGy*pfF6l2aI;LYW_gT-(w}vktFesTs1%U-6QbIZ zHBc~5rV3|SYphMZ{joEWVgj3p2}{LvpG3nX@^jEGD9TDM10;#!PI#aJyK$Je~MuZFT&)_D!MM5V8 zX}HgwQxWO@0Ho-)I$V*oL>VCcSVJHW!7MOOud82FH`Bq&*E4OFK+ zc#(ufK;3v^|#QkHC##1LS#$>*RTaKPT{ybmWR$XBJfdpT+U?SdFqPfeH zufvrD5g_HJ<$Un&_n0V8muF__5gQwnG=ySZeGw{WlD>mL64(Nd2LU{@{5BCjO(2Ek z`{>Zn3dzXm@L&ttGU)>x0fZ`23-@GTCr^+J6phT$``@c=eFGZ=Q@~ShSdBs{^+GZl zau(=VvPNZx7>p*9^ezxt5CrXK{UHU56H=1)z#oF2VF9(NrSRwiThVkN!^+5aqAK&{ ztW?X45~mV{72Ja$uXMgTlSO8B5w?)5VLQkaz$Q&}na^xquFq%3Rzef2;n5|6i16rg zWb85=BI>3blkCYD$mWHUg1;p`!W?u?dj$ShxC!>L%V1=a#IavMOt^KN@QJSw3Q0t5 zCkvn*5}Qy;fgi!&rLh;W6GyzDM9=}Eq#F--oZl4c1-Ag?mUAWVz(Ug$L}iYcjYo2f z1dId^qiZ?`ncJCJ3SvETXk>=Ko5r6WrQK5liFFFh_`MgW^aSH!LOTp{B0z6I<8G9%N>DX6mf`DM8gwf#YAHY?BWD!=-Z$?}RR6%!uF|W+S zR>6fx;|$t)!cfEssb?XJ2PZ@v1PlRsiiDr|3A~kBAwaW7w5q0E&=^xlFlt~50-W(d zLPKI$21GR?Ec|=``xr{slGWJ2Odh&wW0~>X(djKDf?>W>JPHo9I%6Nbcw|_pi*1s) zl9m81?&`5(9dMb_9-}@xrSd^qu)w)GYdB@Qh+$eP2^YVhx^o5)-DzXWbwHwz0wI(8Nv?`G; zJJa?2wRaJ%!fHU-EMEHtyBd*bRLP=^jrh!VYVkhp+sV0`7oCCh)N*iaW$y70noobE zO|3h$Lcp(8HlCu^4H`PW`t@HeKe)B=USi|Dp{-}>OSiPvO+6g&MfGRY)5oXSv^>o$ z{a5Zov6CUgG?Mct*awg{VJ7tvcezQS0nbTkKsgVxR45fJWq*C%D2|$Z#Yu2Sf_4a+ zkleb=R&34gi7)`1tSCkS9dW=dr^f@5rATBdjb0=O>NH4~IwuJV7-_{`P?|}Uz18X9 z&}?#UJH7ZO){w*moWfsU;81O~!d_xtp`vhDN1}u+=EKyEAcO1kCBkEij9DYkb>@cM zx=NMhy!a%f_u;}wf7d~S_Ib1im^~s-i$81)gvIvY3JBrwb#xQJQH6B_=SLf!j+BQ> zYmbr>%eMW^o6`I`Up^ng!tu({gx~C?V?ofy3*iQTbn)>=h1G|kZo0M|*+h0EHNQWZjCOu z2AkwB^_$P%+5YhB-~1^98YZ@$7H8Hi$tt^)yc*43Z*GVU!=Y%eu3USEQ2?Q_HAqk( zc~lk&7U*_|+@-^%k*sPa-XWvF_YyEtuR*fF7Szm4)(QkIUO)N2Fu};G1VP9BGS~vT znNvgG;Xx+@OKFTfJeRS#e_|QV>*7L!wXYO?QfIo=NQAEtIzY`f<24X|70_07HZVy5d=w2_nIvA5tUAoSzlP@tA z7!EFq>T+)V2~aNkoO}vFJ;NU9P$<95S@B+iHHc>-jmKMHrjTFAj^h0JD;5XqM(xR8 znWBn>(*-{Q`#hN(854NQk*vEghLjPti@hxcFSrhnu9DBj1hnwz{_r|el$lK z45EW}2)C6x;>r#NYSSiHG~IP^%j)ojLE7h%&5g#x?`P(=I7EDE6)yqdg3JDDy2s1D z2rJN`WQL$Vw#OeQJx0Wl#-v`OW(jP8y?_A;=;+FhQS-}hyvJq+YXIJNq^oYaHb$?M zHy+PC`E=#Gzc6P8larU(rMsT88sTl_n80{68vCkqiRLDPnp*1?R)a|&s3#CL&@@=u zd@ph7o(&rzY38oA&OreAI73JlDrHb^7C4a2Pb|Q%0T99^SMxrpzIlsdilZs-r7%gM zfqQYpZKjtVRFl|?cN3=wJPE4`;1-cV2v^)#?kaX_&j}imauO(U&MwspEB$83`S~=i zg5^!y3pHs+c9?MEsDY}CmEP;6B7N@Osr7@n*}{>Lh4S`unhE8i_PBnEJy2Ffu9v^^ z{Pu<4^iTfB#qGAL*L0n4q%km-HuHN*B&+@s6Jm1u5xSdPCWV1 z;GJ*PZ$Gcy`Vgv*Ej{F~&DZaIYvk?+#kuRr(g;DhN(k6U?3x{)$G^~QM#2IaDLg!n zUheQ)A7z&x8f5SQJ>gUhU>{6A{c+~%gD#6hsnki@zgvVJN5Ws_*oYFyY#V}9iA*^M zF@;>FdY542$G+#79#4sW@BuDy2i^(zBD_p0$4nkW?Yc*&3nnCf0g@0TLi)HkD{Li5 zEzPFH4x}ycSvhCiD*uSdMxP4erVIpuIhJhQj20$ds@s^mEd*#R*Ae*srW0I{qTCx9 zSuEdpW_BOgc!G_fs?0M+tM6#_n=Tv?7`3nlE#5GTRRAPD)rO!bFJ`Q|bfuu={5E4O zS=rbv$ZGUQJL8$`{3dhUcb&ahR$Ke8D!sA2`eqYJu5(x-QL+?KnR!R*M-~uk-e~vp zef|Vt!~!}(tYDr6D%EuExl#pfdLur0bztMsr6(U(u58G=_>iogMFI9n(!Z`v~z=QwQI7aBK&Qo%*J0?F15c6FdO z#qsT0!5Pn~je$#}MngD82t#x%8x^-Fo1gW@zQiC}+T>Ks3e_Br!z$9j7qeYlES>&b z0)YmU7H+8#a@!X?kx%=aUNK28r&r{b^FRAnWNaxkyr>8u`{Ex=TiHR3Ire}o+U8in zvIJfIL)!E@xCZx~JI<2APScZ1r!x>ejR35N9UKbYxT8>x@!}s}aht)7VViwv1hs(H z9fS$tw4@0K_Rg8<`*w%4PGIziR+4R_&jgC1m$eOA2~`pOemYizLyN$o7$#A&a~RR6 zI2dq>u3iTu4oe_r3unYX^QVfdiEi|%WoCy%%QEImDLM;J2Psgvq+J%+z;0HHoXP%t zt%$5_-cQkl4XoO_`#ceMx@L?%3gEp^3A2YZ3;}1NSn-5KEPLjOD1W4D{DrbAmgzP$ z2T6;lhEjHs&sRE3#Okru4eE$|I&JLS3Z1K1m?&FZw~4k+aG6QDS4^RmCjD0$9R|rw z@jldXXg)?UgiaRh;NE8-A~rpC@5^r?lVX@)YxOPZ#e1zLThzxLCZX7k{_ z4mGc~aMF;m^*9rG0V&yR(aBXt8H0w<2WbZUHZ)_1BJnh+VORb+mHAIACq;EVtq9F*msMy`Broz$`*pjXTJN zlx+OvaoS|jOz6yW>Gf7~fU#uO4()uCP(K8tiIqI@JOZV?!6fHTo2e)g88aC(eWOf?2dL#*7XE#|u{`E#444g7hhRG6P1FMMTh@*Zjrmm*;W*Uor=L zr%wir1Isu@cx83_vh&-a>LkNT?Xe89S8%|rT7`B`)&R+fH(xhsKT$(iqL+Z*kgMwv z@fdPXpsVuAJ*v56@&uj$FUni+M)C;yxS{{+3)toXE>+5xga&lJa@ulLN}(Gr1{Dwj zALwK-O=VoXw1 z^nfX?W8>1yu;b&SSNNW^ODxU_c3JSHcGIb%cA{2I6e+i;Sv9)C8p0&| zZxY6(iRdfDyWn7pH+Fy)z}hh`tj#&^!W}W<2`X!7Xokb8AuBwJJ*hIB06@;!6c4D~ zutqxy?}xl(?A;N!=9j5QzVk_?o7cR_GT$IeMTHU)1Y?2lNIC$am9PTx`-*ymFHuL~ zd$s!U-c%WI*SuY*4HRzVr?8$CqQv%7cb}ZXs8jl1aJFv0Q_B%7K!e1+aRg7MX7z<> z0}Bo`SxX2J^J{4K#K$jF*Cb9fXqshDp>Y%uBf7|7Lr7mN=c)1&&n6F{m@hCmdJ3xLZa*nHL0H)ar@9+o zN`r@m+g6}6ok0~wl#YnTMO_jJUr(ilxE?zPz^}&}AwmJ(gMFZKX}ZyI>Ee5VIaTh% z7wL(p>7t+kqlpD#6^_kE~GGZnmxq*EGOprQ7s4?Go zpQPzz<)?a$@jqwN*(_mZU|_~qX`lf95+6!_b?{;Z)G>R5-r}$!#Ezg~|865hd5I;m zqn-k2B-4GVGs{QmGJdZCYx}5r8M4HWP*ve#kE3)9{qd-YfJro_$@tD9vXIkr20L7Y zFuGo50el66`Wp?UfdZD43U;tW@_^_!rSyQ!g0UW~jBuYA(aOk08rwJ^JDih55t@n0 z@?J=m@N546q1C)KwyLJxZ$Is2g zJkwqfsXF9SxCJV@BS|A=IAkQhE{hr#c`JK*5F^B0Q}HCTYGKs1G2w&yf{EpnP-iC^ zcdq+B4O#l=u^5*^C3t;7jt)a<0$O8-;8X|zt>KhOG+L}K0v!B-mgMKf1v> zpb$+qmi^TkF;eoP&LU_ClWed8!rEl3?@;13gyS=`#zL-3$P0|gvAIN2Ndu4#co89m3GV=If;F5Z0#$D( zXu^8DF!j~|^KG%X#plP&+QJEz7RbeZD`#gTl8zd9_%RGXHaz{Z6#0DR@#y4ws=3a* zb$_jC4JGuHq&R>`52*!*B0|B0$)$0&ih&9w$)^*Za3Q2Q963;$;5WHI=~v)$K~i(j ze_Wn@gD;1VuM?!$k==-`Jn;xZ!!y`sa{G{`D#ut&(iC7p90SMXZFfk}coYNaPT!hrG^w{rK#;RMi1d_8xd zkjl<_(z3DfARzC!R|JOp43g7y->$;cSQe5v89r1i`k(~fgSx|EL0F7Fj@WKUnC5X5 zXz|JHXEklysbzYNu^xwnE7|4iFD5!))BJ_i)3vYj8YJV?yqLRbW_dnOWJJalR z^-`4W5Z#gr%NI7SjuSpe1_=Qk$I*6&XpkPs6Y@k29f9^Y7kA}{ho8C8^J^pD!#tg( z`(?S{dS0V!UnuIYpiO|Id)Yy9e4;Tp2TNhuVX){uJ#;86rAck#5_QKOL-!Gk;Kf2% zk;ERpAZ$wxwM$3ED#50*jAo~Y8I~M`#VVT?d&IKF;=_#M3!q2Xmg*%?D0@%NNPP;Y zPo0IaUDjX>wLV4xP>)Z{Y^A1Gah18Hhn3BzmFw@sCRRose2l&>bs4~BL*%y10f9Ez z?UXQtG6P+Z^{I&AgdXy}K3iZ{>k3mpBz7>hy&(M{Qt|mBAy%=SzeF#ktZhwSek(b5drxou{|2>#Iy}$kCP?1U$1yvNFC6ZLcfFcU5-9`}Gc+{ikw05_O-L{G} zt#%t*Y*A5B3}6d_(1b!LLSa!ke^vG69pCVTwbmTtK0oGq-o1APLhHHCb*{@*b?xtc zpLabg%rNE{_kE8s*|ZD%=i@&g|M~d;!-G*gH5usp)vtKdBVC)nlQ-ABXKHt)drrRRTDKtpp-qJ7+hNxEww{p{~_*I7Y?3_nMo z2oU+HM!?VSX1j6rbDmaTjJpH;zc(>>&(G5pcKt$%2r78j$<Eigz5u-ic67J z&6uPJC+lE9C@$Irf)68^CxeX zi>`sDK~=A&dY5~q@$^)8EfuI2zvrg7c(!_jyWbcjO|kZ3Y^pkS^MFcM;yX zJIRlm#}{YSF07-AM372_BWGRyFTd#aSAWTQGehx|u=r%3=}>bBT52|-o6E10qVG(Fqy zvG2N8^|S8s3+ml=?Ot1!fFfvhu!dQV@ZH3%Qzt~DB}G6%CP9j*c0sY5S7e>|_0`N$ zMDWftkT4R{n3(29(00oyNl*%!VH!{OJUGoHp?=JX*Si7#%UOmwwvD5s}UEU zTr~2G#@%eWXpHF!zaW1tQsljyQZ^EVySsbav;aaemeS^?K8?#MB})K2 z+&$W+sW%!&Psx%Iz!*WWF{{RE7{|70>b-_>%qb-^03Py)CMN0xrd~jljKH@ zUXrES)1?$Mrj!A=1bLHEUBsrBC1Dtb(acg#ki;~MrOl~Y`msdLliiMx0y)>#GB2K! z)q&{lwRsJQ;sSDR>d-9i8CHi%gz9{vQ9>z7iHRU=7>As*kpLs2M6@~A>Eq$Gzv^7^ z`WyrVGfQS3VW7(|B8cKnvYKN8V<{;m8U>9$Hcev^!3embNl6l5V;P&KAt1s%q{unf z=^PPFlRyJdycn4*2~kP_N-5VxVjTLMn;L7Bh%|K{LQ%%reF|wD$EInF1W?>1XGtE4P?M9SM2N^ifDb-$9DPCV3WGRuYQ63`FKmNWs#<{lJyd3)2L`i@d0kC*6+J&JlC2~#|_U^(o zlZf34bYTu*Ypmz@tjOJL(QnuF=fz^VUaxk4$pC?|wpBZu54+R4x%Hdaoy5SMWpTMY zSglU$&-2CJW_^Bfqgk7`Lz(`ByutLd0U0)6y2cE)-TmAl4e$#ic(~Zx$SKflznNV- zxiS4=zK?#5Z~(~7{P19N`z9=bNXypO10n!JYcRul01d=`H`@*lnB)fsd!_hhvlX;x z^ANsWZ>HxtUTjwz3HNlxI^UYTWy)#0+CYw!mdoYp)~)&sHrtCbpbP+; z<hZig5O6v%o1=;-Xm_4*3?m#&=Mz6EyxHlMd$yS;q^ z0By6ke{g=|MqPquhlgV+zFGl>W=2aI&Osuyclpx!$tm3HAieVNBROYDG@hNFtZv?d z85G^oVSm1YdyQjkw%4_@aHnA`gKt(aL&W^x(A|gC3b53n>t^fIb0EXCcQ`*^kMMxm zeBQWg=tl@hcCctqSKI1DG~Ik0hdNesn`Uiue!c|=>hNHBauif-Nz+HMN~OIXa> z^VJ9iXnTux6{GsVV6T4lzFB_zyHAiD(BayOO6hJdof`Z8&wbsa`J4XspMCPVeyj4iFMj1~Uiqqj_^$H0H@(pKZ&z-*2dw%XqU;V0=zWkg2&wth}=R?2#UBC9_Kl+YaZ~Nd)WqsAv z2ezer`;F)J(Cy{!xBlv{{QKYiuWoN{q2TL&{cnErPyOgme)N59>Rxqa{`s%G|L^?3 z2gcMM(|_~q@qcvw+fjE=BV#{l|>WXQcgK+8+Lm^N*C=sr0}7;E@lmPyb!4 z=05(Ky$9d(uJ``UXMW~Vv-A@G?ZF$K-N(~$E2(+-`1Q9=KKQX`-@m?g`?1F#|EjP0 z>aYJJe}c5de)C`a;a~pkf9D5oKYdohfAN>T;>u(9f5-p+!&JQCiAUe?i(d8>|LfoM zwAij!f8-DU$q#(+gMaVu{vS;Ct3Tt@e$#6{_aFbjPv`puX_83pL_EUd|2nhrDguQ-}H{ou; zXMXNWzu`}PC&))$cKqeP`AvW0&wU5H8T!rd`+xqSr=EKHJHPFp6Zp(u{-zhd^d;Z+ zzx^Lg(}eV={=%R8=l|%RzWt}(3g~OU;)`#*aPyzO`K`&ChaNck{a^b_zww*D@3zlp zd;K5#gMZ??|F7?T-_su&!awH~uY2R`U;o$s?%!$lyQ7%D?&|0L=<`23Vgnc=zw|{f z-)oP;VJ$v-;{zXi?ql=R^}hZ5hrjf1e9zze4+&BKkzxKcUl_x*)k&yn>@BdZ*{>PsD!FPSA*>7I) zl9&Cq|MGYI*}wW1O2UDZFo_X@SzUMpI?%>5&KYhQw^b=2hU)yyY%m4e2{PBPC z?cer}54~?Tn_13Z`pbVsGn=`WS<^oG;g7ue&2L^dZEwS`{Vo5+4}JId-+21@cAmyj zFM9YDmku5rJuLg_`SlMx`JT45vs))$_qAVp^TzFO`xpP5dGTehzx?7Cz38w0-S4$_ zUd}du=8yjJZ~bRK`i^%$r@$Zhy}$g0XV1U&U;c2z_M!Xs|HvQsRsYjp`DfQ}3@PU? z{es{A({KCXXRf`wjP?a@e94!5!E651|NJi~yYKS+kNrP>_1FK!?>Jc@%ISagm7l+8 z>~H;p8b!1>^JJ;_cb_Klt#E z=RDuv&wu*=_2vKLH~#DAZk;FUxBjxP{fT$~@Vh_!UH~uutoy(4*T3;^{^{>bOp@ly zMJU$MV_Vqdn=w3lcFRz01q}waKlP!JKYaE+q!dKzeH@0ooQ23xS#P=MYJ8pgvQ{)X zJ3LCLl=*TYU@+yg&CurDGz5q7Jh}C=c|qwMrOYA#DDZ{|M(qGeeAfK-z?kLr^Da& zIbSrQ5G9{w?~EB1h_Q_0h)_m$l#+W!o4pgG*ak#f=4))PE)W0J_kQO${_TI-%99WfdHH$)j;m>fH6p-AP{I|GL#Bbf(?xF6y*ddo0j4V>|(ubXE~)T zj=e`_$_4;qlyOL17j#q6D))1Pxk-YRaYXdStf1xGf}Vy(-FCD63*YoNpT2&J(92%_ z(zeU*c-z}^GdJTKKj#f^f9KDfoNOpPcIDF7{*m8vpkADhKIY-nx`WXaq3DMuH%zIx zYjl(XP(})JXHLl3An!|NLc^lb26=c5ed_ zpOELuq=`O`+u{YJf@Eq^M+D4ca0zOX$Y#5SGrFatxYNcnsSQ#>u(vQ1S1D(YMQqmA zWNWtcX3P$^+$)+fu!!}V%SNO|qTg84A?JuO#*iBCB6A4AHel{N^%l|)(atPcDI>hM zLgj{e6fD+-DUeMimu~3##v3E$B8N}{3{*%)OCrm*UCe&uJ@0$>`##X+SzKVuDZDTF zTR!juML{r=B0YN6AkR34CnuPPR2K6Et@RkKX;05iH|zBrSf_EJ#hODCN}g6N!&COs zC%3@N@+#aYfGw>=43NQ%R@fm*BRV1y$MAw^05WZe)>ROFvQ{~HKT=uE)@+1lFJjt) z4}bY*etP#N^KxHnPnYc!5Xlf+d z`YD)T0ScZ_sTo#U3&0x5PzV~Lz=p-R(JU-vZT`Uf-+y%J$Z|unABMNS^`}9>z|o)1 z{F7I1f`rZh1BAE+raHY@mwrP++D!#<^!!W@pI(>g5v}vrhyP zNW#6BZvZSLCwmAS5ddcBFoEnw_=s?rA%xB_f$}4o4hHBJq5&P2QMNz;1#AHTv*CO|y9R>3FAYF}H!vZDiptMDV|Hks)Wlu9DaWQe$a&t(3%wObQ$TH4 z5`!G6nIdHm#3JuM|3h!zUO(+-^Y!}t3xDYsz2c>>U-#P~r5w3Xpc^8KJ($8r3&043 zXb==(RL~|gJBpE!0R^HFJiM43Y=jV#v`*+;0l1=&ZD1se)J3eRS=)Z^zx$rIee`3C zHm`hq?egkxd-PSqI5ubn_f!%pcMJ$DEi9-+29SzI(x66+K<-A&OPGl@w6TrEg- zTSiYDx}790-L@DZ6B~*dy+__Jv+G?fO6wX-3lSqg#B#80QyNbVH7fO*4^$g$5KT#A zvMu|=vD+q%nvLw2#_Owi^E*CvP9V59pZ}Uy|ArO%Y)G;}ZV?wKrAq+ad9Y}H`UBr} zQy)lJ3IWiJ!?3yZs+Z^e`9TO-@QL8_Y9XCS9){#m4rd47_by>}o-}}N} z^NT+lMaZ8_)NnVKth;{oJ5(2?KnNnO$dkj!0E9pUf}>#;Sh2`KF$;x`2*D7(f3Wuh z-}%41_dC9$P4mGwPh5TZZ~t9ig3Ss@2w`;!2|*Ypc!q>BSP%kcuz>QkqD7BIT7GEx zx5=3h(nP)~0}S9dzqNb)a~(E4NJIk$kbs1_ZvDhZKX7_`k=xbKf5naEZ@jX=Nr4$e zuz-Q!wDwkvRz%F80vecrn3khTEy#A9E&xJ1C52^-1QRX@u42dz8KMDv;$QW*qoo0v;=1>a&%7M+GG^0O9`}?66pae?t2+}HF6O+Eeip4R@@4Vg2#x0{EIfhY1 z3{}fN>025Au3)H|El93x1Q1kqDOi%M(y2lv<0+8JsLW%q0AUs~LX^cs@{8L2NJ4Nh z7?n|XM@%dqK|~R#iC8DaK!CJhC=xYM!y(mHox~AAK%NX9RHzcG5=6+vsJwWkMi8LU z6$D2h0YX=zAspBPB4UgLgeAcvhNk4wR*w)Wy7-Gj2RF4S7V#BLOR6FjeV8 zsG+w|3YO|{rl6=`6pSogU}oNkf@f06=FhGB)rYoDM8P9R2fzN+_jhFhL39TK6J;$z zqJSLH^!MC)^7hG3 zz4M(9eA-I|lzd^2?i>-5Etup1HNb%>6cLsFx5}2mC*vW7$Ihxm<&Dj4O_dUgpiPv! zAj(SwptS^GFr;So2fp|#{_ywxt@qu2W)8NCOJDY@f4{|oQ49oBE>PP^Wguu`QbDD{ zW^eBYUU+-$dQDD$0Er<8|KjM%2k(2?YB)=lh}y3~fM##_Re$EQvr#nYe6#sG-@QSi z!YZ9T$q7}PgpzC;ymgq$Cb0m4st*w+OTgfTS^=0?s;TRokh~6IkWqM{XAuC%$UsQd z>erbi0a76i3X-7&4UOjO?tC?NkVARu&1vd7CXta$xW1bG%^!Vj8fPVsgb5KLLJ17q zr8vVRwV3`SslJ@x44DvBVFZO@r}5Dp#w_e?DQ3N5vXF3`UkI4rRh4ss?>ozK*}zJ8ntPsr>Ig1K}sk<>pOcgeM_PsPaw%) zjUhQnwW8jiG=###lbIx1DkWqRE@oY5XZ#_Nljy@$z&d3~fj<2fmH(|v24T?aKI`-9 z`;H#}@NMstP+(?}Mt3lWNs2Zy1G15vH_b==IvVYU8&Jab=MOx1l)vZ0KbU~1GdrTL zNED!;P^=7=2p%inKVSZmy}e)eqR&a|kDY(dhc47?iYiY@kRp6iiA|cIX#j%Sp(5+F#Vdm$L1Tl4m-9zS}~FZzt9Z=62&+|8FV_m}T`ag%AB zcL%RNIU)OC$gB>Qoj;=sEg3`z!BFvID?d{Yqt~vfTG%rm}FFSC{={72I}<NjFJXAs&a{xy9EFk86H9GM64l6S@jYz4O)?=a1R*?iZm}yGOBMEf{O$V z?jZ=qXbH&OSs_6n=!xOZ-C~2d5Moj1FqnZ0+GR5-A|oQ2w#g~E^~u_P?Psf-K#LK!H?$rIBH<$9 zxbo_k&ALVY?w39Wai`V_M>wZ-PmlsxOd_Iq40*h@x4piMXcH!fffNMLDb+ZqVkp{8 zcvR;dby0;P;bN78Uh)pR5TC#c5 zc3DO$RC^rGJJuU0@{M9!#=*Tra`#Zs%m|O-g4Jw=l)RMcljSD6kGKebj9!99NXcyQ zNh6R_@@aiiRgjjVY!*^V=3W#gh#3GzpA1J%X>1Y}E5JQQG^j6oIxp+kiz6Zh}k;LX15o- zDG?!r>S?ZEkA8MMaliE}}M`MCF6#)DmMLhwA7=S~CDCFqA za6i2=pFMH>=<8ne=htWZ=i{(BF9q%8WbJb-e+Nefsnwsc=ZN$Oh-un8- zSncq|LMk8FnDcMF?($#$yvK0uX6}b}TR4_}q9USg5}IWCX$>ZW3{wGor|Tus_eVhm6|ttk{u<9R7(eSbQX9)Q~zg)~7ekvsqt zAQJOfV^0uDv?y&|M~ytu{8EXNX8ypoIr&lN?TdMO_d!66nT5ZwT>sH8I8f*WeM8Q{ zh#18YvB%UXmb6)$XSr#Nxw@-NL-;V3ei#S$Uag0g#9ouSCYxnbHBKBAt}vv!Zj7b4 z`!J+!xC5hGKorcZR~|hYvk;bM!b^PcG_+05bhp8CGXZ_lSxQTO2wlB`-ya5 zEX7#Wl2)8q6E|C+;z%?>W*iF|!KE(Q=o&#FXD}JIMGY*0nF@K6(HZueG>)2Ts{5i@siK~oRgc%9FF$(ZvRuL zqG_ZeQfh8|=z16195k_p1CSFi7%3Q}8Us$#o&iavaWE8w)m&AgNM@|8N}dujYLH(i zJ`E@g3w0nS7K^ML2;uUOlNZjy1QJ3rm`9iyp&l5*K_;>hT9!<^G$2X0;j(s2Sm*g_ z9A=x5E;>7Fa%$FAs^K$osNof0J6t4d@@RBNoDYg&DlCSy7O#!ldm+caHDD};ptGC;885nzjOOQj2kOh}ZADuu~HNKBna3SQwbPc&RO z{j9S6DRl*+sN_PQa6D_95U>HY_EP)IKEal>uI3jDq4FS+4CtBY@IcC|t zkti8$Gof98U_^x1wYQkj)xe+4=@4za_vwDK+O$m?;$`>mcL#gyRoHaC9B&AxeL&$+ z6~@)AGg4C1WZ7OGW0NBb6enE_gVSl!I)@3_C5WL;7N!6dbVO}(CtRu-Xl43rTEJ^$ z;b4HlD3xKFl5;9oPQjf~V|KzEazK(1jtHxF0LWxcfnf&9ZFDJ{+N`!cgxUjKiAd54 z>LHI96@z=OnFvHkNoa_eko>5Uo(ii?ZL?cPDI=_)PbodPw_H79`#I69NCmiMxl=6q z@v+rb=iB~l&6}sqc7P%Q%o!eVulYe?*-L>m2be9q)Z_>QM>57jU;(C_Sw>(Az9glw z7~!;%EXE=dQqCz#iHI|Ur)C)pFEdaP(Ka#ml}AcBTWLZOM5@8BuSGMkNzKhNTn}7M zWsHnZUBX0!2~>j1uiv;);!x&r%gtCy12jQ34NAb>O)U(Td>kEWp+(9=@gfgeSZ;ta zjsjb1VR<`_A{|<$2JV9wh|%oCU}g>tiN(j7rIu564-c<+gjw#(STk5=DTVu#-D@d> zWgJ8Xt+9+@5a^23WGO~3^)v&bj35-wJTvza4!}~TBEm<&g*LaP3>E}nIY%k3aImH! zjpLXAl1CEzMKj&$eypvu2b}Y274(2D%_=07fYT1~|cp+}chc5|lDiO;{dX z%`RLXBGhC88FVS*4&OM2laolKNXgYWkT`dqpPuRVX4y1e#)n?{vYUt3u0MNI$#331 z|B1JMc)MBy&2qV2ZQWQQ7fwK4jBw=3#}7K4LLkmI=i8ybSW_Y8Fe8zuL`ylKs0oT5 zEn32aiLsdeu?oWiK-66Aic152k<2(zQj8EtQ)6(T$~EayfKd_qs63ZQy3p?;kO0y3qI0wt88R7pj0rD&%lQAI=#?{)!vDH1Fb z6y4n@0wO~p_nBD=1?)V;$pKQQNTEfOV1sM&95P=OP;xOR5>{zR-1++_q)<8CbL+Oe8x@64XY4TnC3KYVuEgJLp{fYl=RlH4RmR|F!S6;gR{$UtFw5g#acM!eYx@Kd( zU7)ncdkYAsEK!+r!s7y%#1LVaNWY83`lwYNLX`_kmM8W`pkYuEK#>s4ij+ZzM01Y> zBw#QrV6QNMQnX!jyl3|vFE_EdeOAVSO=fQ9)>$ECs z0uoV#PPsq>)B;&yCaz8S~&#O2rh*tc$i?(gq13Ck&Qyoga|k zF-|G#B&B57#hZ7j4OrE%HPTTcY35L>i>)E;IxBYM?T&gcg`9z;(nFWWgf%dD_gor} z?>qX)dp_JYiw}SJ_Fw(xAH-_Js1%#M=h0YG=V_JyE|-hFtB1L5+S?y__G2G?>c&T& z`wed7`CY5?vz#-@TQ_fg^y#Oce&*??KJpQsfGntjKf&<#konN7gr=1C|VkdCn%)chX)p@K|Oa`E+a>eWcMx^YQXBbQ<-sh5l1!?qF=)H7grNR2qmtX-zwen6V zP!A?ct5TLQhl9*s>Ljmt!90{8XI|vxq0bVD;9xq!7_+W)xtBK~3N>a-5iKTSh=3_d zg*M?TQ36X6h6o+8tdv7(G5U=f%}!3#y_Rxn2~r%rjI>$BTwNU?jv1h^Z;=`_%3JcTrpRebIB%^w$ zi~GTmJ@MKHhSk<&d$ZXy-}j-D7+TIMkx8@D>o?oIHvi(U{~A)U8CN%Ne=v35^wIB{ z3V{IUXJ=zMKRX__OEg7K;pAnPW}o?@*F19k07`A?3C7sz-&nc-$(H~SB2jq}>?+Cx zCKXP-i%{u45F+R<m<^BD$)yBgWc<}zi zlauXw+Z%E+?(fg9pWJFw*N?*={;i+=1)u%0a(c_yjRfGja8AI8J90C~Bcy_mQsQxw z7M#tG_rL$$H^1v0C$qh7bGv`}tB(KpAAiH`8@;D;`RM2`z317Fz7?=tIV3^Ju6^ja zeC_FHan>ub+n=AcIrXsdu# zD&eT%notyzJO&7en$|tvsWM_$)Tw7sGED|W6G_M_fthela)cZ(!N4tfxYd2=-MVcN{Oo6%PHN$cG0){`}-eyVUu8SVUkG02!LGt z%rm!6-ub~{GX&A*>=C7m37|1|-E6VAvOGFiEUzxQn!iv7VrWt^3J9?Zr*>~NSz+xs zp~_oE1S2XL>STlrjEMQc{OHMH_{k4+oE2@ZJh1l|4dWS_Kx!sENm}YFqx!?hy;Ui@`r1&57-pa)j)NEvjM;>wS%1wtx77$8fZ?Ziy%iv_*B!30>gDd zdjpWn5`YK^!Z1buj*H@kiU>~8j8EM#*$GBOz;`9iF1UpHhJs%W zKlJwZ&ANGPS1)?}{=f9!{i+;i8e(~L=|B935C7EnzhgZ+E8Fl>uIJg-$7>t*7JG*$ zc>3Af)(kAj_sw+URAH|EWiNU39Ur-|zIp2GEL+~vZk!{z%K3dw&ST1~ zRWWQR9$6kXL*(UR(dWFqb@t4Ap6plaVH_Qz&^5UqOCVB+(0sN`voOLBa&vw2{M3b6*Dj9sc|1Q{?$!LSf%M%vCm>a|*yLt%Cq1sh({R#* zRg;@tJ3M9w@_<#u0pfNu+}a=eF*d6k-B{wH5E@hk-6R1U5fGer6jpT=Fhg>zrP=;M z`?v0K+N5G#qfD&+ufrS9KYn<0x=zVz!-Xix4TV%#wlt46ZBvi|nds2U{iuqP!Bb!W z4i&ZXXs^gbBV}Oa4luzoqDu0T0J0P4k(gFxd{KL;e{_ML;&5m<;bxx2bzz^_Vyd5f z2YSUF7wtmf2w1*;x_a+N&u(n;Gq+cdy!_>tUt~kCCe4R+^cSW1KG8@3L*r1p8jrsJ zG%E;=q(b39R)95ut4Uy?A{b3O^VC$OIsCqrYC zCbBBKtC>$=1sC^A`M!^Ce)L_>rPR3lXXL%*)x%T*P8{HuebI~l{6F~N;>-QZ_C0L= z<+r{a0Vp2bJIs4?*fn$quwE@VH#snJc07-qy`7oO+{Wn4yX?WmqWi}8-n#L=8$bj3 zls7a<2{g&(FFgFQU>Mu&a8PWFIAOptpwD{Z%B$|*-#cDB|D>LJa{IskgCAL)$H08F zDA!(C8}o$=9}y3A`wv|{%Kg}v*zO%K?z{R5H4PAHk^{=aBUltcmGCl@F3s{Rhp7*@ zA_ze#kFv*EeZgVWV%|H0>GYGi$Z5#>`7qCgIsJmF-1?OkaY;fY{snz1utrCfju$M= z+U{)ApPjGI*V}6+<>vM4lu5{KjwoK7OjQb6hKVA`O&-Tys0pXYOl26VvOVQyUB+5f zu*pdgQ5=L>0_4NwGNjy;GS)Gcb1TOfLj@C?rWwbf8t|M_xO=6UEgMjZrx>|h?!|R$ zQ`5HG3?1>zM^5Rt5eXTu|Fnl+_mZnW_P*!4!>f-z@!+g0?M9{VucY!`8yq}}8W$Cobwxc`CKmw(BtPENLte0;F~E&t}^gOiq=5OT_Id*Ng6 zyY_5OsnNPzzjgEM#s_T}H{&o6F12m5H=8dG=FRc`;?mJPcczh+bv-yHeH){+G zCTju#`M}M%DP?5aq?|L{jRxha&<4C}b_`wv4yD07!K(GH0$?YdHFK0zE?1e+$x`4# zk->zjvoR<(r36tVk{RgX0ZCzCQEcQB3qv-c94xzBiVrg`k9O&Ne)EC_o~8%ea7OeN zXE9*Ay*>7QvKhfp0vn*vpFwn&X6^BOFRqqw4|gd614$?anjK_4uPYBRB2sv>%iZzN zfgrMRBxtV6@L>SpaZI?!!O_9^_Gg6x41hk*u`)ZCb&%Z*87(xQs}}xxd@6wH4CN|9F3?K;pBBFYAxKl zcG?uvF-ib(kK?1GpM35c;>VwAQnOXR>Er!RKI@z7M*|ya3HuN)aMaiG-y!{Hfb#?|ybT%I#im_a0a_Xg~Pw{?Grlw_uR_tX&M{`CFOT zp~jN@^21kWS((PgrM<;{M-S?WSZ@%aO5`RMkFoE4JKXxv(-$?eKoSyQtWLibxK8MbVi z=AM<9P){>vM!B4tRX6L_<2kv33^l&xp3)L#U}P)g8uG5|b z)MR<)5ZBu%p31mwy3U$FZqR7GKKD{4r;WV$-d(e6rWnI!eKu(#<&dh%(SZQW6O=5; zLiAl(bPx^`as~bnQV4AmY|L3aCRDJh^+iBt zyIC)w0%^ENhgF3tIjNZ>#DxWvY?}X=9MlT4RN%vds*;*r`q1uM*wxjpiMLe>L?}uz zS&32>eTgkpJOdjXESfL+!cRka1jbQ@f8g>vZl1pT_Ig%IY|7<> zcDa}fWn`O?!BShpEYzT7t=A&$O0-94Z`u9S)2nwr_v|9iN<=m@+E~WgcR8oN^wpcl zDZ80c9^0%0L_rj=g~}_Ax;I@pZuXXd9{sfZJAU6ARyVg!>>uoX>-)d&nYXE-Rny}o zUVZ=36OSBbf(Z0J6uMeZG=`BvL_hZZIH2#dYbgHIwHNjd<_|sb;N!C=HWlFxjf&Ld z`yRTgN7*7t>J{>^&{nQpA+xEL{+%4mJ2UcPf=(R7&vopk0&}PdF(p@99&)$x&|4Sd(_M1WzIa@5YeXj_G zxe-usc{r$0Y|hu+a4ID>aK&pLo4xT1 zU;ehh{$k#*`_1k3_WH@}7B1&*>aKul!4Zm$jh2?jdwBXfqE+IQU9ZSpvpnzh!DqHj zXQ8I;a!SK$MOx0bH(QS9r->;P^V!@x#;iFw+Ovbjw(Vx6DDn`Tx*o#UfqRCkU|)#1SH*wfPZdF@Cirkn8J(06>ezSrZ*NK zRosaTAUYiHUs}jGcqzVux2S1jY!Ool2SCCV@fKK)7K^7&3bqM*)0iQ%7lo}bKJwy6 z=AZt``D(jv^I4Up3muTjwOLVIg003i%eX%(d1RuY;8CDZkVwYXJ){8^np0n_ z=65ns(0Zx0#ly%DBC^Q7AC^td4a(hHMO+-Z=fjWtdmVsa%68?-!Ik^=(4;rK;<4X) z_GzoZZ*9>uFaNH${1BL`iJfM|owraWUBlgt6NI=|E%f95NbQNhkqNC#6j3Q5}2eN*}|aB3(KOXFN@ zd#w;FcsE9GdW{YHX}`JNfL$SqPu)}c=@pF+K6CH=C_?tqP8{Z7w#&N#Q;hr(0hj5cXP5U^#v6zNz|@8;B%@14Zi@gUTBj)C z4s?Wo0+fgl32Q)C389q?*nl~rA-j+@`JmifEav?<{DN)lPSApgseInF@VdVZrhD>ZC+b6}-bHYpx;MTIjU}iB2@iyUxw`A29Ds#KtV3R-#XvZqg=mSE zjaJ405)trCiFI9!V2HYhhzP>Kl9SLo`rypbD+p3V1r6?U_*je7+yz5S^Sw-oqm@95 zJ6xxNVnW)Hus+q|sbsApRTYM6C7B(1K8bt;AZ#kK0T8g5rg6zR0S@Hs9Du3a03>)| zHqY;VdU)UUTUQVEP9nUqMVtG`w`apkZf)|EE6Yh!pwe~oLLh+#6N>;Cl%YN?+Vd`z zgSMoUm^Tp<=UX$iLQqpjouq?d?1#Xntj6^$ESJ@?N%LsO&Q@cYb7oi;o%>L3pP!Vq zI@`)G%2m`IXUgZk>cxlil$)lVU%hhQmHYbbcDp+BGS)F-WQh=&0tB|eX}>+WesXZI zKU>a5iwaHeh9PQ}X%(=DmBJUPPE&|{*9=6hMp5e^)kyG8BFQJW3-=s>D2bO24tzG> zo}6!QpKXS|;x~=imh8i`AgM_fMb%fFH@S}(!$$((UP@=~bJzKLHk@sVe1|%(wZ%e! ztxrxj*RKy}eKuQI>V>|l@|i#|CG0hJu#8!!h#7DWTLL+P#0UnEC$7D6buNX20vs4) zB2Y8vDvod=lS^425r7M~$MI#0*>XM`wgR?wiqwXj+Mai}FDEwi$TCAu+tB zXxHVMm|}fQlU!5@6{v1tRI2mhfka_S^(S{2#6_H-o!DklNKN=i)So9!6{)IW<8%>s zrJClbDbNa5gUVgO&6>wi@f`?~YufItLdbRaJ3J~>UBX&$8$tI?iGXKmo#xAb|ID=~ z?!W)`?d|#K7~a-6{f$45guF%7ljnd~Dm+Z}-E~FQg`o zp*CfMm2o8DW}T(=W|LAHBD%I6v)E=^v~81Rslib~=`5YEwx=?`keID zFS~NuftM~{{-MPm1>S8m-;IJ7Zk%oQa}JFvsRy`dn}g#PunUMNCR#zlf_5bg9)n8F zf~xlJV$g;WP)z0BV7oc@Nxb9C=-!FVCu11yy)TW8(-a= zu9)&5G{Rn`s)bPzp<~xA#YwmmJy;7+3IuC?6L_cq4LJfXQY@fN$?}sYWthB5V5)Rj zQ;({+%-Upat|CKTw9pi-f1KuFw~*e^B48(f-B}hm2~HB=JBZ*XJ*W&gQTJ>>s_`=z zM25(4DOqY$+fqoAK+NQz#?dmzH0g4{9f?WxrL;Q&C6i!Bbt;H0P%vLeF0gxa<$ zBbe{N5iC(u#Zf!S$za$Y- z*p%O35tA^!#BBR$Rc{s<6(KnMaaBzMv&`DCEUVpJwD;^Zrh#c=u?=g*52yaxg#ZahJ(4 zOeGo5BL;VJs$CCY&495p%VrS!J6qdUiMb`zG(!aFz-^#UR@aW*+)%Ncm@?{Scz(Gr z8!KmuQL;d1l*G^s*nlIErCBHgXZPB?yZ_w58uuk&f5|- z*YRRH)Fm}`U{Gyq-NkfVbW1=NKHD!88v2CucR-&+SQ4<>^yizC+Z*@TiJ)WHtWUgzq6zDUzON3aWvhf_nlp2M(m%5_l zWTgyZicoGEcP|P^$&i@Gu?&p;#kFTn9OyW@Qhwp)*`NG#-+6v^8|2|)`LZ`Yu8!Bv zID`?t$~;qKa!`4ov1Lk|Q8ZAs`muMjd`>PZ5fmPrc4bUC&lmH-dpECK?f~?u=B|Sz zJQ8*Yv~)cSKr1sa3;W?o%(B*ax@yzVq$YISKYR3^k=rfg%Y$Moz=TS&BEk=@y!f$4 zUX(XaU2l#L+NKqv{?B)i4p0p@0l+N5FjWB5?Y?G}iF;{$~#yg9?tj{(#w_9!cHc(U1Br#=F z;EaHfQ*KHruKsY*zi`qp-Mu}50GGGO+ZS%MAAIU&(e_~J^KNMv6VG6o*p|`>`-;ob z3LJOq)Gzel&JUV2lhcPFFbG{l-&)?Q8xo|Q|0W>aVT^a}RBa%t`Pi9g)MQCa$t*kD z{~vXbCR&gnbKA|3j?%E+jKdgVK}#;Bq*;@fEt;896H#KmNX%?E7)EzPt&3WHYDq*f znx&MNm)f>z+b*S@ibg`+rFrL6DrzRkgecYQ?;RfL00q_@7OB>HfbK*mLsV{8p zb6@+|zxl{DYnrtRfVt%(rY$jQ+ss<7wo01HKOxxIHgq_fHErI8H|?xuOC@GDDO+Q+ z8EbXVh;B+}fFxPuT0empJm^t(aW2y7*q^1mWQxG82HdVTFIiP=yVL%FPQ_&PB>MwlC{pba3*9cl19#BNr(%PS8SK%00fUlhzX<50@o4v}gZ zE-*ljIvQxfet=nwR1q!-qIz-*AaelE6{}h@|BH2B6I4_is9ZS!AVZtP zZaJ^=v^0UoxwkaB!tX?8rkdwa!+q8|krQ|ev{W*taNgzX{YRJ!)j(8Z;uyYS1iJ0#z3tMRCn%{!Wr(d%dvBJkBappf^^AtfoBO< zU4x;T_I(jrI(D9+;1Py`-Kf*fV1TFe@>^5Vxvu?haZ_YOe7hx4#nzh}ts~b;0YdJ-rZL$LWIDj%QMS zb9#1i+7^sMfn-EB6FIm;GSVz<%a~|^Xe_y^YR!z4aV%r)z^-ZfaTFkFmh%92_aqZ# zxm_2pJKR`KLn)97FiQzQU&4R_aKBp|Eg#xjJ}B;cY=`msdj0Hbd(!vMg|Fm|nauW@ zrbMZWP_|SeTweP*McOL55zXLDDOtQzs=qG1i~_$gZqIJs7|!|;YDr34_nIni^ER4h z?_d^(d&6=8unmnr2WxYOa@>jeARwkv(^Iw!0GATk5@%+ohR3cRXJAAW%f8w^`P4Jl zHpA)px(sl4Gn1mtc^I~0g48rQin~`047=HEzq9)e7Y`gQ_vZ6mz+(Z%&;Gpk*aZMV zrk&eIfubv-gomiX10fXxkU3e?BvSP?5hYw;l;XiaCDWzdjv5nQpr}R4Knta5-*#GE zx=?dP33-;ns|ndD8+Hh0Ot20Cv1R~iw*`r&c!?9Eana`ruNJ$8=DSJ)F=c~<(W*t; zIl?uKOtngDEhsaNer2DpeE9OWuFvK0Qo1WgAA8S7pL$?+*ev_?@P|I_;FmQ1%#H1~ zbWfh?pTOsPd(f>^>r()Rz^vU1v^h16A=pGR1&WqkcV_V$9-F=D@kfU!M9WM7?q$kt zNwRf}ZDA};<+-zxLjmjd+RwQ9>6=nUZI8R-pSb>!KmW0JoD59My<3kQ-MV`J%x43~ z<2)~?A2Hp;PQerrS1v!An|Zdj=^i+I@XBG?lE$s!6W+|oACbUV$q_})^sN+N5 z4*l6GJXAvrn-ZdG45E-n?Zzpirlxh%%q7?4DjDmZSPYQ~V~h|C77%C)0F}J9YztJ!66#J{Lfyv%f~Zo2y@UOm zAG|rBWXvwIvI}5LK>x&J58;ikx_!2_Y%Tj8W(M zRIFtOeSHElzSHX5^~nWpTfwoK8n3CO#64fz1$~uAoGkYpq^df1ccXR}cM_^?pQ2%w zF+SrpSFRj#7*W_-iuu9*iA4lX<&V#Y-}$DOUF`-a(B$i9+wb{DAAEk%HYzC^feKG4 zH%;^E!`b?5jhs-Ep^Oe;ZtmsR{h}9r$!i|>%_<>@t|*l&ffOO9xqLorfBapyzWfh< zTefB>+efcF`kBAw4;<E`ySM%OU7(L%JQ4VRYynGo|imz^K&&yElF4ra|A!fO{?P4VfDvi-#8+f8Bp zEH+Sgu#D-~J0I?HNbf-SyMt4e9$o;&xC86g--g${;%eIx%z~0J9dtO(+gaPMH(&H= zM^_KCpPsTYY>}BRo84&oVpi44B-&Yr#$I{cy=8rFZG#{ZRWYf~+Q#-%iuHNFT_-az zYOekCAQ3||#+YVYovi)2TPpxSxsKLFZ8gzW{!*6Azyk)_)8{_2wwJ6Ch> z4T%-}0VWPXQ=g5MD2Wgqz*x_(c?1fv2yAhoIGhNQiCKxeRy>u^x!YD+`#7S^k!MW% zIrOP^^7+{xYnp!+0OfnjZg2VEqv#{7fN&UCD|!-PHf87rxOe69BUd1>xPqAi=z*fT z7S!TJ;mMR>5`79O?l~@|_nn-Md!Mgj;h$h5ezq6AFh)CtHZFeF1#d@$R7$DYLqVBk zl2AcvNCV<>U6xkx$oMKte$SV#?6m&*S~ODMXR+nLOPz$%Ha9F zSH6S+FU6z!enpIFduyW9-D@P11+8Wq(o&5!VVnw22|*8_)cpr4gK7xXa$t-dtTsjB zs=$?|+kmy*IaNcyyN_!+xxx^ziZmu*CiNB~lfnQeW7<0m)MOd}nxfQQHY=iiK_^ZX zaoEAK4EL61xhNYKkb`rPik1X0D&`aBjxu==sI^u!1-7WWbX|x#t*+XiFjOxH(L0F> zpK!S3#ua=xoX=7kOAYP}$aPn-iBz80jcI~F01S61BPPTGfH5pXEb;-xS%mWOO!X%| zi*`z`I*+F76RPNf;6W;wYQ85DIMr>0yK55SK}col#=65_fG}7Uwz2L-Qk7c4acZro z^&qB6d)G`B^a%#yXFqoQS`81#pU>BK^2^Fp#;mpZ;a)9W1>xGY7shdnP}hvo0O+-k zU%h(Y!L#SeIn%fM2lw@J+pv`0-}J!#=e_6v!x_^Y?h0!g%)1=3HtAewMbg1UWIl1& zwrQ3Y2?%+FMx!-tnss^6VhpnM;GVH}3_{+C!9cbV#gvD>JoWrd(ze^tm$PA9ke!Br zw@35Yr!O9V^Y(+!ZtamgU$3sA%pet>&waZSuLD4YKR!FYe6*L#W+h}0uoy5_HLG?V zl0rlnXiy3F6rj}_Q)w6WRh?ZTlO}ocG>9gp4^7CzzzgUn0K>FxsV;OAyH2|pr!}v$ zdY7b>q-l0T1A*NR=GwVkwUpp?M?jO)Zp*Rr6YpqiCZDs$q1;t4#_mZ3S!MJAI1nJ2 z0t!qniIIa;cSs{}MwpPqvEq7nO+A~$Vbi-A;deafd+vI1_sYf8Q+mjJ3pa-mO zn^*yxT?oCK0e75;iw^-MLaljA992`SRLcXMTf)!dxc6asS2tb)iu;;afIAW5?*H1^mr3ziFSSd#7k2v(@vabq z7c0X>WV_oC02hwVCpmc6e=6$+0-1NQ6xFZVO;Zz4>+$YhFQA?Ld0O%l5xmEl=I&qZ zOi4om$m9q#E?ds>{v4YXsPI7=#f~+v{S$$^I}OV_KUj;DswfRHC`fav@RRrtKdT_BUPx@`(R{>;1I?ru!s=lP&_p63E_`1yX7HE-Nd+<2nR zQ)ef+JxC>JTWgQz%llXP43{niQ!>8p759(hFiZ0s0!ChHMx;z$&iZ%%#SYO+eO|E)ArGA*XG8K7PI|Ev&Ec-Krzk&aPs)l@*jTBGymjY|H$Qe zb3XV3SLWaJXMV%X5K%xHMkyijT=DXk@Bih${#ziyfPRCUZ-&hgE!uJQOnU5R9(|DW zo13#C_P*xxUVT2U+p_5{J@ozm@|{3$oO=kMF`bn0WE}GSo9&RBjoBtctXuC)m`n)4 zl%y=E#I5yNgwNZ>tZiZ0Kq3052|W#KZhh4NfhTvD;k@++)Uz%=!3E-0GnmE7H&;1O7e4IG z_AVV=f8n}i+5Vxe9SZpPDQAW53S}4`v0AN$p2H|nO`|5y=W|A_1oo+;o}cxoH81Xb z_a3+Y6Xsh?HE2JjI{aQ+{mHKL^P1wH0AW^K>cUOA@LE5`#Xj*Jgcx&ctM;=WDPQ3U%(uMfrv^BVkFK156g6pRa)NwX8?eBuroHP$&GD9SVT!(o@E}-u|G>NSVGVV5s|udFwevDs~`FgPb1CX z{lW3#SNz1a<#GrMhEkE@gSB?(%E*(Ao;KQH&($Dtu<>=U~?BIC3 zdf(o`N84xf`M>zU?f>bYe@o=7vDu?|+mp3EZ8=UUEHNSFC)R6&Qm~L~dZ?x}ako7- z8wtQV;YJy+pRBLndg}SnIcpA%59deAy~_ttbaw5==GN)Wo43)m^P|J%{&IFWYun~* zb6#R98se%&?Q3CxR9EHz1dZ|v76=H@FQ)gdOdbFSdda6HiA7E@nHeqJ@fHA}5R;Ug zbZVT2P5>6Xv&e%e5TSu_w=w#-f$P-B7$(f2MkniggOTR!XGzw;yi^xwX_>1LM?=D+guA3wll1(+H{4>aL@ z+TZ{FpSbq5f9l)oV0`4@iNE-DznN;<(01q^e$ms9Ez0rYq4%7;@8EKJ$tz!M;?~mf zEI;+*9|{#?JGC2GMt7C`V^@x6UY4%;C~CB+yhjBULu4UDv=LVlVjcjn$Oxt?!Uxs%;qy@ zgNA$N9x=hs7i=8_z>*ywA0A)MPZ$7)2a3VUbDLI(i*@|tocS6wAbi?>VzQ*MJXkcjiPWZ|2zo-Y zMYlhj<<_pW;ykA;4s(}h5M6VrOReAdmaqTPhViZ6{oXbmHnGjvz*~3^3fL-~g){Tz z^1#@v$Ft>rx7V6HiR(6Fdye!_{>=IPKY0C}$KC8}-}LB{*RG$eR;Rt4y6Qex)fbJ3 z`w#cquF0)yKpHY{H&88tTvf3E6{1Cru89y8+$*WupT}YNF!uds*lfelEEcI-VxJHB z6EFJv-~Vsl@lF7593TF?KlqA?2EfzuFVueLw}T_(9>T&bK5 zn?A9kXA3fMG}#*Zn#*taqWgdG zNq5U~BZT{fYH`AFn3(F$D+*$&o>C25g-G08yNy#7pkP!|c0=etn`OddL{nSUT zo2|y->hkcHeeoC9%*KZLo$vgPk6F2VI0taF%*T&Di05upFXU%kTX*fqiOK_tLJBG6 zq><>8W;>T)x8C0ApgLtMhf|V8wrP7lugMIux+mFz0Jm6xDo&7554#I{nxM0&vs~pHkNa4XC>#Qa0U|)X_od|L&9;_4sGso zyDCFqZcXZD^UL!Yn#0v|&;9RT|E0rV-~ZN+fC+3BsiG)|60~HwL|LtR*Z>=fS3_qF zmbuL_T#~);;{E#;v*vp~^8EL_|Ebe3M7f_0Jd-v-Nu(D)KJH%r#KW0DCsYw@VE}4E zHVJVdLtY4PRkwFVNfYPtwYch`0S_=c;)|8#Y~|f)zU88vfQ-{iq4CGRD$UO z!f+K5l^J#vMHKQryL33ETH9`TRv5$r&C9KtDlRIDF!pb-T zDLL}_CPp#PU~>9)ie6G-ySg&Fa&^<~(}lMM)SBjX(VvPM*TT@mw5?ISTEsofP~B#% za;0|_Ie=4$X@9(F&&df4l26-U)&XGCCO?4S5-tGpTI)grX*+dQP354q@%sz>eUY>Th1E*y+kvzvCEwh&2cx=EO(2=S$~e0=gidb{$=}tcNg1h)9UP- z|NAfdpZ~!RZP%yEWs+dw)A}Q6DEr;~4X=LW#`)>B+mVyGO5dLh=bLN8wcPE!^rimj z{Qk#dc`dEC-TV>owk&n6@(o}FW|a(}+4WoN7SH7X!lLF=h+!d$7YSNn7zIKU=c$Qo z7z;gS5zshr1S{?sj!1cN_EYb9*X89yU;Aah>}1o*NXyoe6M|XCVBMo_=Mz`8)NX`> zxQn5?sCPISlN3A2E|g_51`**ZgLNiJ&BA-(yr2E(&wNzdp$?7Q zbYmInD>h9#jzt0$BrWAK^mWlrsToTTnjouwMR6e!Vrt4{I+0QiDZD7eY-Xv}fF+oT zVJwpc%1L4=rEb)eT8{l>e4D26p|7cKmO!(I$1PD|lq z&W(Gi{gP4^%*Rr72)Sv>I99hU=O)~X7Z?dgXo7>z3ia^HfcQD^vlJJmTiCk zX1jUG>6Jh9#^1kJ_D7Vy^yg>mfBCJ0&6|Pq`>)P^?N@Y7H~M{Ze85r|EP1lyWrOqP za@!te+s-@QI%in2472<8?LBXO{JkH0|5yL+^$Smb;7@+t7v?y_x(6C)>uhRO5{@ww zma{C*<;5)e6dUzJvrTh!+kAR9zj7(AEDk@kIZvs5R^g1Uc;lU^yBI1t=Nl*6>o?DH z2By3_Da(ZL8epn=UKVmQ)1dR~w_Bn)I+*Rv&5&gU7~lX}q=AuAy6>?oH-7ZpPrd3T zi!XoOr=KtQu@C#OR^2UPvI$iHbrF36mtK+h}LX ztxf8Q>F+hEG(2Xr*+y!0QNh#g6<;Mg~+jD9sXTCJU#{X~Vr*sv6~1A1W9*+h@G?byu!j-J31PvVHB# zKkdpxkHvPIWQCy+QYsOPrg_`Do-5^ie)T@ox_D8d1kF%wR&B~!^idW0i(M(2*cm6| zj*l_3ql2TP1EAsc?f$&^F@>1;3El)CZJIg8vrFB{ul(GXbt>AGF${SvSLG9mq`IhA z`WMwC*O0Gf0>@O(43pFfK&qk^35p8kLX4>xk_1>xzCfiZq{)dfkX~Y1&tXzTEzSZ$ z?zNH{3{t4pq=1+J#pDG+yUl2J^o$^piIq@uFk-#Np{}i(bWCg{HiNW_k1%m(7>Fj zu9?l-o7elcY3G)6n@~(-o7-q@KR4f(-g|QLitqZi55MWx#*hE>`w#Z_Yc*P01bg{5 zkh?DZdWv3>FV`|)`9z*|-yJz_eiL(u_l zy|XlE>S8MQ?#gU_e2{wpfmTSy(I}Wr)6MFZUtscJux!T7Q}2K7x%WT0+%k7vdoW)d zFXor_6*#?ivN~CxKX>EkrH>xJ{GrX;KCpfG%DdX*x5i07o+;Vg&cV_%#1N%Ih;%Q@+5ElldH0X~`yWpSi@t0Z z58wC1XTQe#H30Wg#&JZ$A&!pso__xA0DQ7921Rhu1cCB1AAZYl|JqMaVJSd5oES}= zYgVEi)s&$tr5z%<2$Y%-EMW(ug`$S+#;GiVAjp#PSG?lt=B1Z!pPZeYZ*Kpq@44|0 z|2dh$#U_*VVURTIy5*O?Za8LMb^t6D+iPvxpfPv`eJ8jC3aa-qMFonT7e|zU1UX9G zL(ogWq%!ulgAG3+gptT523H!<4P~2RRnS#u#pMPeDDF%EcT867|8;5 zctWbB^{XKWxvcW=rc%o)Ga_)OORWN$E+9f)E95h~-x}1JotEg5QJn8}Jete%G3;%_ z2d*D&XY;+(EJX|HoLEt5JM_^UcKBEWgN=+PS?=u8V)nrsr`^ZDZ1b4(2#PS8haW$1e_pitzGibi>x!rIUMfs3 zXC?3i%Pmo|MU&xvY5C~kV~@S+ji0`~dAb?BuGmA8fmiRpvKR;LFW>zmKYjDrn-5;S z`ph%WG_QWq?Zs>}YclSr9JL#f(-KHt&;RLXP&*kl zJhZmYxX9kAaq2i)YN3BLKf88xGudfW2}p1TWMYLdDM_>P|6%Muqix%+vq1FgeT*@~ zN;{q$?zuThSJBGCmJjBSjK zjjUu_vLs8o3ODC);?8@oH0KTz5VB}VX*FC~j;%y*=WZ&@6bvGkfPl=@VpSo|u99SZf=|{4fMCAI z(G6-GO_|BE<*S+?7z+WpO|TyOWi`zPFAijuh{(CJESN|Mra(dds9CZf#Km%RRLqyD z8V+n!43idy?$o*z+9}2gNh+CN!xp=4AvzvZsq_YdP&ugTz}tiBx#yPmZH_{bLOn3r zCjk|_8Mt=gcv(L`-2L(8Pkz_+-{t6naOpDms*Ng}NL2J%g`lJ4g=86eV(CG;zASq0${ zh}C4?&i7Ad*KT#kQ!%y5hsj{DvF1XEDKT?OX=7vKyT1DmRbg;;u=euRmp}ac(`VKv zesj{U4GwGXwHQYmyLvy6z#LvHW@IGZ5!@^k6D}Gz3|TZsCPWL6!4{edq9)*o=*Tj< z2`I7kIF4OLpY3E6 zoDVmTrjI}M__4*wc#X>u6{b#^S;ZV<#_i&xjIFrdT9tqW8navID_1Rz)eIF$se~7K+d{9pDU7 zRz=r#Dg=O?g-|uiIXiDAWmPZd9W$wkFA5miwsp+p*oDx{m(0%8s=DrCtC9rbivWXm znZ6@MS$17(MyfifN*{Po>PC%vP}gNh?UK2OsX4v2;Ws@=I}C&4S<8d+xFB!7Q{A(9 zIkmEFyQYg`N)%iejH<(^3z1U=Pk3WQP?aUfe*W* zv8~-2FMcrn+#h@O_uhE^aw`oJ2u>ZuBAIup?25(KjkWspx1BwA@vUuxS9KXuQ_OCm zW-oEvwCU_LozP(~P+^#Ot&x!z%NPBp$yV=h7?>pQ-*qhF$q-H7( zXxTdF0P}UVck|{ae)&Vkd&kGuulYyrc=Mn6!w0itF@;De0#M2WrhTRL8<9GMP6Q}n zCG(Nz%KOrhKw9vecuTDoQqieuA-W-=re-)I0x(n?01H9`PNvDs8&`mtRi@4~L4|lJ zhylZii=*`lTuB032SjjEDHQ6to;AZ(x|$A0KCr+0;@Lm^hu)@#GZ#Dw5@N5K&4jI0 zP@HMMCIqss$_#LtoPs(#UHHjJE_e2-go^C-Lbc!W5GN3tFy23LE;U9Wt8SBI(3jYe zDx+s#FcYOj1R?`@OWA0Eb1VsoFbqUY%&9k11hY3~$&i?5GG~(w2WEx^N-3ioO2i6M z&Bl6wv4~{2$2q4d=GCv6vU4J9tFwqCYNi5YN9_Esz+hrYV*;sxnboqLh=M(Y#Zs2r z60?d>zaep^DS<>e`$oG^u{kYyJRBV^m%c0m8B9l8>o=Sf5>%PJOsq(yN>zAxFab;j z6-_)|winA13}3LBIv;!yMn(C|>;}o^sj_~y4Bms(g<(}yMGKlGtEmjBCXRFP0 z{9@xvRq^DjyjkuY5{XPxMUzXH{AW+CJ$mtMaCByt)=y?i9YL8`L^4fX3C?WT>RO|l zC-d!>jxIbui`*!@w`_B7W^BYx;&+|Bdh_Ci?j3Kq{^>8B|J~pC!v~+G$Q7i^WEqAk z9O3rP(-B2W0?VAGL?kMW(TteUM=jw@F}zre-hTe__LT=!e9}ziBvNHS zC2dYN{>@MP_<#E7=g+?7{tMsvf$fLxINH6@5dt}HF%L=Zy_VqWJaL|8MI=X!tLX~8p#Ct>M2^isMw)VblA|82wN*RG zDM{wZWWiHTa>#J1XzrPfz$%ef-h+A@!2m!cDKUqhzo!D2^&VN2+txg$s|XV-65vhM zGDF9NNL7^B!^9!X= zf&ALCz4`Iaf3f>e5$d;JdfT7>_P-fzxmLzIOW_x|TeQf6oGz03>wNdSdqZ3Ibh|Qc2aO@mw8EjDb0WIb;8Vx2_ zHbyQup+0|+Sj;2`moR_h^_$Nn@tsIp>n} z`)tYqwW^FmncN)3}aM3UO-g@_fQqQYgF?5f`(sWdr3s)&~{?JuTr zK0CFDgI13vU1toK7qXlk+&a8ocEftB_H}Fvgs4PJm1)$-#Lht8rddwmO9gHH;GWXK~3A^!PYpG!QYst>r0)r?JJAjxh7uWF|P&b^`DJ3987J# zY=7v{9UrH?Sebm%Oiwqk@3JA*s=d@?1~AMqTS_^;)tpN()!s3L87iv|G)AWp>jn%Q8tPk`(4cVTKf2Fp*JFmhEyuOi8RB)J356Nx407=e9N{ zrAKO#(~{y*R0JCY7P2T}NtCi>7=dyQj@KKD_KvNxEX!(8A1ym_ zE)*CT?JS#H*Q^zi|ffAxUo{9$e@wB^7T3Cg)s~m@VU7 z@LfuovE$j9qiKvDY`}zzNvm(%JbmS^yN6d!b6^IWBQ=d`reZOU>iQ!e{pi2@$qx?R zey_XlOc5wig2A`yo4C=%s8%RVX7R>is!$KkpaC&4$P*M+Oc&?19G^Se-BatJ1bB_C zffhuAW!#=E#Hr!_vd?rAjumS#US%D6BkTk@3c_co0L>EV#j2=)}8L$(fn+keG}NChSx*{|HKO z%uY#+IYFJL1c523l4m1MF%q14=a`lA+$l^>HG`TkXCSh&_FH2jvXV8asTn!POvt>| z%x`rmHo1Ldu!vgEmZ3aUuYQd-`;I}`IVjy;PQ$3pq#rY8)*NNVnY5}Z!b}Pfv!vwm zUvpd*Zdm!+d*_TEFcO?MV|EKjcOrDPxZ@~6t(wLaZIsd=7DjlA5VRn3G{Ub{}y1yt%lIZ<+-u0IEyroORqA)vOHNt4`Vs6G3ZcHFI#PR^@(? zOiTbP32f96QqI>j5WA?cSQ!zCAsGfl0C~ew(hGY>AA0(U;jjMZQ!}Ngaj{f`3k8Nw z0@3=|uaB(ci{JUK$(8drnKzP`wmDeL+QWvA=5-t0GBt*iVQ6kmnOyIg3XqW$ZAZ)q z@#?|VmtN_V+^BMcp^+xD2sm~wiOt)WyTxF>I3q<(u9SJpVH$0Icw;H9bL=g7=a;b~ zVxUneiBy5#wSh^Az`v+RprL=U#;0qwz7UaRD|*zf1ZGsjR_#Vg>Iz z`6+*@^U9{wGnA<#09qL|cI|v=b7_`KQfn7YLF^Pk<)zEO-}}U8Yw#W{@R`1UTmai(Sn7zu>*3WNKm>d;wL-eGVan&~{x0+RNa87>Y2g z%FRJt2iCZR^GB|`D}?usC&^kt=t4MjT4-=e$1eV^a}S@YCgV^Je5k5AWAdX=JbAct zbtit|Ea@g{?-%Eq{la$XzOww_sTud)Vm-_7;G?g zCLmK`gEBElB+s{iLk=}0K#7#OlT03`j%5_+?5WN61Di2PC&@FH-l=nm0Rop!OJ5Ev zas0CSGeOqepW&P?q;gJiBuf^OnR) zrexNLFvu~JbE2|jw^7?OH_}i1!j}eYjo{(??))o%=xuSjA6-pE!TXdr%a{u9CFX@K zz*Z8cwo^-Va#9erU6);F*b@<@adiz+wGY z^D;>h6HeOh=%hV3oHt!)A`cMHvH4W@eCZW1@%ny(K;j{qCNbW*cT3t7j0CADLK`LX zrOMz*O%znZ3SY91L(V<~MOn06XWZDl!E#E>DWwqD*2%fhwqSOq;zNV%uLII!W0dI%q+M7aEtH$@Hq%>k=n#&in^!)E6SOKQINnroFhn zwOGWv)>ED2{mc&^-umAzT>hRHpZrB>oyjy3+NTCj1%#tJqh&Z^= zrZ!`iov_TKn~ zn_FML>5rRXL7R0^pW2Z1jcyaZqqXt)rNLeV*Tk7r3L>@;5@uN5RaalTb$)-;1oE<4 zdNNqdM57Uz=r9zMYVSv$y%DYIFpHam_~x_I>98iRWR1blcX12NnmWp|`c^?Xe%G|= z$t470RZ`2UBoiuc{K_*b6kRNbRb1>Q@Pf)hv+r$dX0O*}tdyG8(+dd@bG|scH8^{Y zQ3P0oYKng5<;K+g{U4y)(Gy?&FsK*v<=|W1b%mj%Mog-zYS~CkwO@7hiYb-sB9a+y z`RkdmmkA8{Wv1*llEG<7szQ0DAgCy1iGBxdql#wV#QZZEG<(b$tBPiwk^vc3%|NJt zP5VtSh*TpHD->Cg(Yq#-sA$G23Cyf2P|6OEc3bLAARzPoDMzTFt2_+~SJgf^G9xxH z@uFEKZ4)tso|&VCUEo5cnT)nvqdUtz5JY==odE%)BAr@A$(5yfPNA!d!KpeOHFkcy zwYOZZ6(xBeia^PigJM{eCtcT7^6d|N&F-@KS6}*7t4dNnYnEiTW`Df?mO=ACslP}e)7is<1zx8R3j^cRu)rU0D?IY+F8!N5S!0w@u_Oq z=_0#cGP4j=MH%x&dgs@D)Av674S)BS{`C)zH~;GP+28f*%@iikCey7|nUoAd3Nr@- z;H*VbCHTHDk{W#GifXH-IgONAOeES$Z7L@xE#qhu_Ro%ww%3=;5N&O$(~}hlXJB@s zcfGi~_So(dC++9XY#!WmXSX#z+N_(p4B(}as*cx+lc!(tS=7@Hc`!?j1GM~+OJ{!M zkt=CB3+!}7Hx~k#c1#^(P5sV*zHW0g9u~*eQO9NQcQ>hN8@Q~F$x&;@#@Xz)Klq7Y zlH(!_KC4!V%qSB9Gd<8yq+jUfgH~sRjrH-9j~@TK2MNF$V^|rzf5bFc)^1jyk3IY%`X=-EY)C4S=L|_oJ;GC(c z2r-+PdKSs~P((~3(hIVP32aHSfe8^MQ6d%-=1kXAfSB@c9l+^6t(kok;Q7B?V4r;P&IHF5Q1wHwa2rYJ9~fNp?4|l zN51r{L+2ETL{g=k?ALI9Pd7|eR1y? z4?Vbd&s`zLjr(MCSYG_p(;v>f3FMU=`)>bab|w0M_NF^)b#+SPwpr_<6H#{5^Y&HY z>O^h8Ft+y|FCUpLzTt35$8%8!zOB!Lf+&(JhX3vpKmYQ@i@)docmKqfKK`#CdgRQd z%ONTH?OeVRa-`F12@wgei3(vPsy(GIrvUt@TsWDYe&zVCXKoM# z#0&zQ_D(b)Ai};__@8>)!%tt@I$9gLl=$da_NUb=du|@BX~fJ1ReE8c!LN6n>zLu4 zhj!1sQln{_6wSB@5MmK$mYlgkT?~rr^r(IS+?iVgr{K%Bq57c2&a8+dA^=yvx%8=rXN0}uV7hu-CYUw-zBg%8dQ zKveS#g&BAlsCn;0(`);3aKvS)?2akU(#i97tE1RNMUmRBEnIx(*MB)J)Y{gK&kX;= zOF-y>{ER)$quiSMGMZ94a&|DRZ8$VjaCW9KHDg2~GII&zUps?w((SI@T6S#CkvPj& zw6R)b*A)21$3`Fd&<8Jl+xOi0(&leG|EvrPmo&k{jYPK95KVod6@Pac6#Iy&_6 zz-bNMZt2>_`22-4dppm=Q-qo|#%%DE&1zN?0L)+vB|za#qV62bZyk3>$GT|I#*90P zV`o5;1VcUEBki~Y$nj`&c5`&^L+7!31n+wS$*Q|Xze34(oUZ(^(G#7si5NvFkV<7^ z-=}OJ98VBX9YR```YxmmkUs8p>iF(;Ta8&L7(H>F1yP^b=2ByLIF5e&!#D z*Q)S-ogN%LT+%3sc;{Yy?w;Vu`_8#`JgUqJK!DKW63#CUr_X%iQD4xx*4iQ|L6Tbn zXtbr;db6N!?I*zHWP?CKjM z0a~5QcF{Ix~`AYjP@(?kR&B?tqiE3a_N10=(Qat2s_ z6=eDT$&Dj!N9g8z(ExIpmmfi)rb{b+ zbFrKi?I{f;T6=$LwEpB%PaREaLoroMAAD^5|cXw{At(_X285}Otq%Or#RRt?( z9Ew}bd^D<%ya1tKR~5c%2SpWN%HcDg``mYY;2S>rtH1i0FFyL_x4bEE(dX9yzLyM1 zQI=P4-um<>KJm!?cmL_H|NV#E;ok0z@z&->y|q244|er)2QSBti(z+lx7fM$25=(i z+S=&&@Wa5D00#&Wy0*RVu5%B+=`PTWVNW61(t&VEBwE45~wgG*ddIVz;3 zWFSfwRkBk<$Yz4I;ac>d}uyF0tJ zFQPdgT#Dj|lL-ZoQj$Dt7@#BqRR&p9PR6$>nM7qWZ%RbLXs4Zb5DhjQ7Zx}JDr#BK zotZyS5xOw> zff&wu(lyL_I73AIWb_+X_pi52ZEIQunrt(~oRTAw4)FQ5={X z0y$F8qzVtfn83E;pZ53a3JT2SM_>_II++Xzx6f!tY<=1YvyxHvWKbip!E5hwLVMq!XYi0>^4{TB|`pXmt&P<)reJFw3=1v_8fA18$=o4 z&GU$^eqsgR&auv7`>()sjc(&NmLbr-hXZm7m@$cJV14P>o^LxH&`^pFabqwTyZZT; zUYQKS`7`HEZ=c%Q-cBjDZKos!s(<(kKYkR`R#{kK^`Iy`My@<=?XHai=9kiKmfk8Z z8ZL`KNfu_?Yg<3?gFpDE|J^!XdCeP5McL7h{mjoC93DS> z$AkaVANcDspSOpIuBpRvSootQw#L#l%W<_GwKdZyBfBl`jf8p32vViqzsMbNXV-!4-e#E`fBvP9J|uj!-}hd>k_c#beZOHaeRI4;;COb zfBF7Pi#tC18+-5jz5mPoZ}a4X*n{^yuygC?{?VcHKDUjga@$&a#iBKUn4PL-|Dx=S z*3)Toj@ZhmFp3=R-a45cJ%4j|@A|xnor(|jzmR0}&-n04bwt z=n7gB3(2RA4#XsDCdNM8Cz@<|`lKB8(t`l83g5W42%r zHDlN3sH<7N)ridms*0@gW$9`6E4#A%vm2v#2eDqCVXkKq8mT4F$|J%QtC^s`^H;07 z)!X~}7yJ5M?rZ<-b$@c(p&-xQ^!h)3?KfF~$glguui%nkwRGuCd=$!B2nmrrc}#mw zyg5(dC@xP8*9YX^_0F$ZAJ@dbGaN1#DJAEe!CXK!7#z=bx7Pz4`GFqqhe>Vf1XYq+uUr^AYx!j;7o5YGX=5t z;nzO@)W?4POa8qN46dcBLm}0=4k~4D@PLClH8v)LRc20Oxt7wI-L1oGe0Zx%pcuUO zK?bI(?R;u&$;(?WEiTpfeDMCufA(|FJoD18|MQC%23_(T=&2`b=YuCuGVcm<*;-JE z1S`J@gY~CKzL>J$xM%wdASx>q)CvmKnYD9t`pxv#L86d)H|^V3kecKL+oRa~$ic6j z{=(I7ztNpPoQAfcHhFenSE$ZOHmdQDK7aU2c_vgjk=EYqj@l1=a?-Jq~rn zpprrGGPEL3QorSfd+q*`8mVQkVdT9ApR>8Lg)A5=e?vu%GM1GN2LKWbFa|3#2M19l zQ&lofBF0R{8Dh;$Z3B#w6NNGeJIM26ko>Dqgnf!}SF0Uf8|9cxAc}v(%}s+C0&-!}Yoz9xQKO zK3BDj&9Se`U@(JHO*Q z-}B!0WG8|ALF7+lI2?Zd^Pm6YfBcVMICtUl-S=OpZHI&r0!YeFQeEgt3_02PK<-EG$|({r%}bW z&c$<=(wWQMxi?qmDhCra6`h#~k)QB{wGLyt`GuWVpWnFe>`&dd_U)N)!oJ7 z)?#t8Y?a)o^qYfnvo43B@@7Itreq>H(9_Do>SERK|kKBAm>d=`t=;cXQEpa(fE@FWeW-)PgPr zUw-zM?SHIZXJkkV$N5paiS(*baUoDFNdSjcWNa9L+>7~!)R2N=LbVq4omO74>6P@NCW^+1 zXD{9O;@Qo?+IV>W;)SY6eXEsaxhCKEt~Wh&*F|54wTFT}r1I^{rrAB{BxPPD5%q7I ziu10S-#UEpGl!${@cil7*0$uSE=SkrdDL8I%jeF&`*Y(n-L3Yyt&2Z5o6G$>$0+Y_wn}fwLIOuCwo9Vlu|9qt^JQAfX^+*B$L!e=e-;mWM}T zPLhe}`q?!J9Hd|GSx?VYAn#2nsfLzD<4|kYiW- z!;Fc0kl#R1$6Rn2u&{>_LP()=ZD-WYsLzweZ8{cZF+<;)MH8<|%}iNTSjfO$qX-$G z#*X0}Iz=r-RXZO{$)KQUhS)S++iI&h!h{_Aq&#pOilpX1AQMZO9ZUxFiP22XgL>`f zY9{D|6wE-q@mVerw=vAyX8*T6M~POpSq3HpXO|$#x^}`!TbcV2v+Uf`F^7caiZuPnRH zRsN&tvF(FlJixi5r+1nq!2Nk_#^gT#r5BHn=l=WOa_9QqY@_SW!%lnl%wWgaJ;;ny z8xzsAxk#rwySts!{t`Q{LIF##glvWgh67BWyK%Vl?(e+5cYWB_AG)~t$@2xtuz)&M zRatmiI_JTOSwPP6idI%$Patvvle`ZHQV*`>RXJkb!vh3$2AGyf?wIN6MQhq%HJhw_ z3v+|dPYg$&*`$lXkF_e4im2#l~g>=>jv@`KTOjkCk;7)qzV)hGA0d5P2+3+lk{dH9T@yhO@L z(fRw3nWcQ^si~@(^l&ZINVRh8)-t&uPg@yXOWB3Ol*y@(t^Sp=sj690Koco>5jA8Z zPknuE%Zh}NJFjd}dE2HWyRI`V`()j2Rq}zBX&f+xY3dUS`@sj+n|`mrXUbtQ*016+ zDa-O(t{KowBwlSM;Y-IY0?(l}m#LHB-KgBqqT0LuO4H5-c?YXmCwKbv#+ZxUn>W5F zg$p|JooTgRxYTKa^YCR+9xmcqwT2SGY`ZLG%eJhy%$EB*JC`rq`O?d;-f>y(ymF_g zWYLQCM$J~$^>VpP64%z&#>K=eb<`9CxKIs3QIboY7GpX%nLTj&GH+dp)Xr_{gFtJL zWsJ$p$hoVxW>;_Q`@P}t8PDC`QMY#-TARgXD8j%8@lJyq)PWxWhIJvbqS`O~p zrnBC4A-S@29L(h~EYld5i9hh_)o**|Q$O_JyJknPj@`x3?Vp53H6`-qoGCnYj6=dP@OsZ%og!>?QMirhFD*8h%z~jRL`rc zk86AN#HQVpisjG^wkB?fXza3q%U3tD8Xx%AY>A2(BPniP_c$ei%U)Xq-c{H}BV=H8dQaYcO2()SdF!j1Ciw)&k;c_ z=?Z7@;KOBF9zV~fN%X=U>+iag5D6BMI)v9u>RuO)gw?yan%jM*R4|wUfEAR$M$IZ- z==G1)lxqN(f*G8L6KI0v*lA@mkjs~)BLj2hiK&XM3}7^)rJA>rS(ilsdG?&SO!?#W zWPKVPw2!b|)gXmhzpBh-fpbVNk*HeFw#er}qE&KqGDqz4BEv*nc47idP2hTpC}1j} z94?Y)aGyUXv)t8DzVKEEug|~C{BBc&s`iku4!pZQ_g`ufuTf`m*2+%0(}VE_Q_Zf6 z(GZxNd7mp`-;J7W7Jktc1Pi6HbL$n&JFxRayfGNfrZ)1-g{xfH@O*F*gD=LD)1Bbx za}WZeO=A=_Yd`?-90?|&HL~8 z+lSX*x%Tu&&)&0;lfvIa#IfuGIaNwVotc@EO2|8P_K{2=YDQqN>dJOML#eug3k$pM*Vl@3(T7MvJ!iUf zNM8ktXHu5IIl|la6_{lzmY88>VLmu(S4=P?o`kxEK)c)ApAS<_FZ2@X#84+Q4c} zxmpsLtw@I12RKP{v^+juERIE$gB1>Y!+HjPDk6NPoi+@4K|=%}`IgW$#~*&;C`d!< z6=3I7M6)i~kxF)Q>c4fqc?isGqPJI=+&iQ90YNO1t$q!TR}^nz73(Qc#>9*uB4(70 zqs&Crh@F`^BFU^!5OYYWuZv6sR>_#C852h#BB+XU&Q`%6QHz}YjyeTu1(ln?J3lw;GbGHqhf$&IxL1w z>{7Qpw|VKt-VNp+i0hjt7!fU(%hRXNj7O8-{LE)=Zr%I?Z}=0|M%9jV8G~{1!;<%8 z-ZrBPSDt8PX6DLMli@GEl3AEpp${|fcsXDC1Q#Wl2*{WfV;?6)#iOC|$#l9roZmP; zX=h8PR9DsL)a0#~-^z=YyC`DOEJBIsRCUf>qA;kx@Z_`qZaDm&7an_N{f?c27mMGJ z{Ww30-E8jIXc(%E(P%O#hjmNhn7mP?h=?GtIf2UUbvBTlZ}Xw(2*&0!dStlRu`@p_ zY7OHc>!q1yXv54~wg@_PGS|pk@bY6kiMbQxV zrr#26yOjGj;vC9qxm6(sIT)un;S>f7<+-Ls?9%w`CV-*Qc_LuilbS5`Wr6@z2=!|M zlT}cW>lu@`F*RFt0cN0T;I(a<412Oh#JHncKX96Y5xd{11 zQzk+6r26bdmZv!~QcJmLnE)!;$4>kHg-D^CO;dZsUeq+kgdPYps9665q->H>&Tl3n zlk~bW$0pLxs_aZtKWC7o+gy3Tpd_pPCUJhY96N*5i~Ra2M)LmH*bzDA;6n&Lc(eRH z;C=bT@r+6g)d<*j!)I-Gdo)hItla$0?o)$wm|zYa)Knv2ta0u(Z&lyekVjk&>*Bea z)3tlg9xu|cnmEL95e^!uJr(SC7PH~t%29JX+N#gFrw^Lb=Fgur2j#H3_uhL_l8m&7 zhykWnRV5LMBGl#JUGIBmyOYqtI|pA9*n)(Gienosp1C^y{BJy*+&rc|uG?$Z1H4*h z39GXA%Nsk#`%`bL4}o$Lqo}fUFxFTWMRmU3zHrJjCqvuDuIrNHurX*&$&n}WFo48J zRMpd^$s2$8*FN#~vzPzq;~)EL@A}T zOK~fVtPI8bev6#9fMYxNkni8<=ftyM5YN!#>Ak^zPrsEkJgU{ z4lvTp-EhQ8xj6wdB}s=T)A^#AF6ZQUxmdCpD?(XB6>XDe5@1l4)8&$hRCQEV%dYF; zJ4Zz*=gTHDBZg(!&gaUM%!(qgYKn=79J6=+q@6Rnq&BMRu4|D*fk9a&kuFAcB%pB- znt9{dwXmWrqbVFw?Lt{4rf6EKMYg8m(z$);L_>*TW$})B!c-P|c)Z&k@mWJ5R2w<- z-mwdgjj#q*=T91(9+uY*_9sJs{U}YsFvRJgtd5cphl$~OlSWn1bi7@cvhe5dIWcbC znWNqPz1@S}I>1b|clvYApPU>$^xy+~`zM2@a%+XvOW~wMa1w;Q4@N4faCN+L@10Q_ zZtr#V+T@u>A&*iZD4Cf^`quZpEn4e|9Qq?E_qw_J6efeJCGCuwoKG&O>#}g(m|G%m zk~4KPiPtezG4NJ-_Z@fsja&OaUXA|fV;}nHU2mMSwPBs=NiwNYHj0KX&2rPrTzwxw$di989N6x6Z&CyugN-F3@QvJLZ{q1tCz+L}qA& znz!39Tu#1#gONdNPqXo0GEd@12PfCAKK@L_{scB59-D7s^7*!Qv`B4j)WOVqP1Zme zD1edk$FXI0Vp@m7iR=cCfQw5+>%O{=xcv|VoZGYJgGbNpaHkM}3g^1iy56FyS$Av|3Fah@6|N zs(MGHpfT|>RZMUO&)kX6myQq(iJ}C`9B;xjR)M+GR5<4hnmlvw)744MfFnL;m!!;m za?hNMlX{Q|uul$abs%bi;N3zL5NIoi8IfdjCRz?g%E7EVLz~hr7nPl^w#+w1VeM^y zqVp3*#H99Rd2lj4JUTo$I$9pxxRado;b19eM`d8zF3V?@$CKf}9M@%GLUW4%{}`vR76Skc~mrilV%=bMvDg``A0)_U1{s=7w9kNt856 zL^OwyFUM$iih_@{xlo2FcQ)*Jva}K_H>182-QSy^yEyb_sduUY8BnluM8*_hiBP~` z2*jz2)064WOUG$Gui?7XDOf>Zf^(80!5VXC?%F#4hPz(8wg2}A#rNO5_KnXyF&&JO zi%a&AxR5kRsg{DRB}<7tgIQIyXZ5OiHCUEZ_NZ;&O(-mx0Gy2qmP{w5pNGNj`udHH zv5kvW2CPL>gR&@&6ua$}{Tpw-KHXUAVp1Gb)$y>r%DSkErYZ#1iL6h?kDVOA`1K?` z8+*U)s5O%!O)4 z@A;aucV6_?Er<#;1Nx$D?7Eh294&4f&km0eql=OZ#wLyn15%1iULYU1@1D!G?aY@- zHR}4o%XcP2VwA8$*g(x^HV1f36xK6}p%(L=h`=UiG{=k}0u5u##jx_1)PK2fP|HM* zuX+#zlrZvs{NR<&#na*vS!V(hA~sMo4MyJJK$35MGp6imW@`q@ba1nzx{-GYrml}- zrn~}$f{j7&W-8*@iwY4PSrQXrM4~e3*hqnB212WvC#?kQ00(%r9s)_Ia!xwYLS+mD z>s{Jet!D0E0NM=r5y+@fV?zNlLZ_ApJ{LhC=0+YwY7sD1W`>bR@86kAdy_h-0eS`7 z`*u7m>OnOqED_^pUi$dU4Bo7K^25=nD9UEMSPZ-IR=T`9)DW(<%dI-hQ+uWehb^|Z ztH=o6SFTz{8kS^|N{6|Gjk5eg`SN&h-+NB@ihjHuy!)s-#Vfsj#*77;jG2okpLpTs z^;>Uw!yC_B!PCz_=E)E0YJIdFLRp52=BUUW$jnAEXv(S`R~> z*@4d*7c#YrXV(=%pPRIbnj$0 zly7*)eINSRV-G%j*Vpb1s>l=RoPs5h6-iQ(n8Yi*kqIE?1We!_R<_)e5`f!sI%Ik2ND@BF?(LaCLkA7p_#l33?&McI1oUpsNZA#3E&) zuvQ+fvtNz)$fuH#dL`hePYr+N-1e=tDLL00B$yQ-n0B5H3$CbaYWMD2v&%;c&!_J^ z^Jo9qyWju4Kk&k}o&03~^51^XAOHIMn}u@lX37Fq7)&X-lrBg(Pg}&n-~`#xMOTag zBcf%8^vuqPN6#HDD;I9m2%E#stRpEBd~(T*Kqa9uNzl?DoXu*Sfs#oeCP@RMk(wt? zWF^r+cmX+{cX=QB+jJ9V5MqYdLDLY&myLu-U}{pV77$)hW><8xg{i8ARcD&bxR8sPgM%DnU)h5o{RSQ=Jk5=$Xj0KyYPi+c{)?t zd!0NH7|z1_sl!X#;nlIYwbHMjt( zPP?srI)X8npi0D|-Ko1TP*l&BK?xR+0IpLyZWkxhX3@$rCMGYYL^1fNX}C4ozI5T- z#WOCOufwFjJ4rzZmJSyu&s|-=xOwG)OF#J33m?CHcYAaUbA`r0)(y#B+A22d@o-(p zylIbSQ4dTCLtm#@6j-()B7+b*GXdC`fm&>%>BjTf*`scA+6HthCK?i{_O?hO&VBaO z+J`IbA1~LdYF>_Y-lSRA-Z=CsloCfb9|yU$bQJV;yFrD6IwJGecBTU=meCV=b_yU$ z3F;hK>Ba?hqv338=$SfJ5t^Jk`{_@=^e_Ln-*av6cu*AWZ1MiHLwf$CZd*7(0+K-# zLXd!@pd8?upsf=33JZcsZ{8~lBouCx;`RO0{_b|6;bf|w;R)V%t1R%2$cqdBzuH=~ zIX{`;A+FQebUvLg++vO>99*jFZhbhS`nRWG0sxprW5-;1^2Y0+NQl{`*Pu`jDnKA( zqChlIC>sNP^~uSdIdVOh{;d4~2O`OAIYr6_n?OOXOL4wzZY`JAwBuG5DQ4za;e2DJ zl8DF|g7;0A+XAXWNU6)Fxt_T6JZqN$j)^Mocb1WuNVO~itHmS)cxEQrPtgdhwh^jj zipf+>N1=?WONsev82e(;b%`0K&Ijjx>qu%}m-W!moY|=rMgT9Uy)&(~K^O7pzQMil zML}XD-%!8tlpB_%UO0Qc`|PV<{`rpuaD-kzw~0Ue$4(c6gN44OC`ZGpaQ?V!hh?1t zibO8dCyT|YdN>)B%M_R7oTogc8V!FS*DR6Cq~(KuwanrPPQI!*Dejq0EN zufOm6{@PFPw(jW0$=J524P)<(Rww$A4jW}p%zWMr@;hX>QWoBOYR{_%;0q$Fa@$bw)?M&M2sTaVn$ zmrozu*g3noEvFWbefVQGYj$^!WZH&NnbwQ-3+K*mpB}BRMN=Y}8hhVaG+lXSIUkd_ z+!-)u|NYGOR9Mt3ro_%jd2KY_Tz6+SIIz!&vIGUZnFE+PdY=r(yGJ*sC+E*@g^kfD zqb&|=&U?a=C?uiHalCmLt?@L%%096u)Xn*f9f}W_Q(I!Tc*368-TT$FQ0w2V^recla^{VQAsv{5@pjY1391v zP5X8~QxljSb&_avFfduvR8kwez5RAHaN|MkLShny%ha+Qjlra54%CsA$lD)Op6ZRk zU~R;rrdFEH42!^<9naBAuyC7+;J` z0)euQ^)>G*f?IVkN@`3=%`uzV9H`iDRP~v%CSXoF$m0nU84Xqr5oRXP%9O!SbHwTP zl89icn?}yy099=DJOvZL8!C{jY$iq~iHy~ZTp?OoZ&^_Qm1zLwJ$)rs0ss=BH7KJc zHA9m(@SOEW1lSdfZ^;~9PLH1 z+Il@am@e1+V6FBMMJH((ih0|dX0Ge{V7_;zs?ODZ9+ioUGCcWMdego4uklNt;^#(h z|EBTP_a*c~a!Q(wkE^==)Dxe-pr87wzxy5E`WHT!K%kf$5s??SH0L~zdAt*EZu|8x zmHi^RE=nn>Pv=DTtaaY+JpE!A)c)dpz6|wAp#6%;h*ibZQtIi&>Jpogu%XymJAZ1k z>h5lr^G=g9CL`(h@?_L`E?;{2)vfy6nbX^^?Cfpdd-1LBeWRwfP!^&_BPFvKHN|Ks z49=LDI!gsq0cWhFW>jWd69U7@%JYa;b{Uymza{Et3qDycle+PMJZA!8BAmoDJDIto znH?{yC^F(x=TDczdX~}=Y$N0nM4g(Ev}WrG(3O$N>)HvZ2{aO!(k@wP3R42a(g>&t zt)+!oO|D9`bjDOsq;hFnas3;$*(|d{;3W z)sCY77O&|uR}V+zvwnrX692vZYcnDWt1t5EuN7bQO>c85Tc@760}@eZuPFmbb!7&T zKLv%sn*w=F&Z{S+tPwOLBUVvw&P+YK%otYFT#_`CwoRRO?pf{1tlE!Ucd)!41 z!2t$Vm_i#M8%8?h&$ItV3P-*4yjLXT3-vYeq9fL}-7H~U8h0j|c6x$`)!BsOzj}w~ zr)vofp)lJtE7ZKAB`iGB%H`_6`QYE?>zOyb;*b58pXsYBh`sjT+dnnbtOS{W3Au+Y zjKzBKMlhAkKsPW`qaLcBC}mDQEVoo@7C_FRFrO1ljRkO~WY!UkIXfLCv(g;EQOz3# zd+jqwW)+l`4Pb+abqqGJTB*jwEmmA{0}Ku{XSuVTkh2?hbh?_H3L_&beEUjlKBEWa z8_(Yt%C#yqo?c#a{?}i;Iz6()((!mu+-$^=dw4`AoesDzyz6EahCC>XYYV$l*rkeh z8yy#AmfuwM+AsgulkfemE8q0)JAeK7YRTbt=`j2X`GDJx~?C?&^IU-&;I%Z?RbfKUp6AtQPeJK<``J(x27@PDAf8W<^rQ3baGt(fehR!O(ZAoU~-BjpwkADF{6NTb)4u-ewgDMA>Af zW9o>E`uLjv%0KMm6_7#7+bOCT^gLzz_`S>0_WM6FrHWM%{DeWpCQ)>4b!g;`)q z$s4lXt23fplyencb;@E8Mri=710unZkx@%#Y9JKGEzG#x&~rzwF-vFa!MGd%K&bR& z_b=bGc7CWarC?3+^^ZJ!rjVpcROkaxW5P((IoAN2Dg!tBH-x z3{X%qQ02?vKnvFqR1&X>gaHjm0cT(}f-OBKRj*oj*Hk5Mtq&%H>YN2~3ChuilhN|} zz9A9H)jdFf897BNuAG*4-ebp$nz&3FwFH!`mEw1B~qA&GSE_H?h{DKjLaEercCTD zCxj8Q+nfQQ0x+{+Fl)McttwJ6llb7q+R^gF6`Q3wT}lhvtOqZ3T(iG4_P==(ld2*yNj|9zs^O)J z_kQ?iAN|-beLkfKf+NRNbg_d2)VQ#EbUK|}-8pi9;h%iwZ~w8s-ki8r(|#kT*5jns zL{w36dc4uD9~~_Zr!=33-Dz=vm6=Mu4m0o6|FgF|=p}78>2%XnUBg)v&=Y<$LEJgR zpiLWXJhf;x=5erSj3KU%a9wGAjS=5;ZRhK^$G7geboH^PPHjK55vtBoR4$#5U3)TH z#Ob1(MQI~xmM(&v>r`Rd`$m%MRGjrGZ<$zTX3DRbsRNk#ctTdLjmI04YB*4r8x2Fx zATR?70cs<|ECeMVri;nEiNG>&T(8Qqs6<~Nxoa{(T_&I;tb~vG+dD%{lXBr(}8pO+na*AoXr7GD7gBtQY< zzBai0{SC~p#N@;`p{my#4GXoQn~4x*@6W!l|$=(S79PEZ)A#wNJ-C1JrI8wrU?F#Q&$XJ zuuO|2Y5u0)^H==FWmacgdY@kY$iMjSPk#OH93H>rJ$HtN>aEaGv1sM~t?@6uGIvD* zLh2BO*2=o;x&hN*QhfNucCE}nQ)||Sqw>OAZXCW!Wj;~Jd3e9{~~1clve&5KcM_;R!{-TL--{GMr=E@;Nnr`gNy%X=`Kp=nMYb={e${2pYHxR1AyZ+8|bbXDj3 z1yq4DFy7|7D{tBjqE=8Z7BHhp7hTgu)m3^cUegHY-}V{Es18n!ZtPXlwhZjoM)hRK zBGk1SDa^sFOU2IdLst)V(KPd=Pa0Gsta7M|Pz85=GJJe(T#gEM z#gc7FT%Q|P#GvA~ex~npG*gh&GDBM_YZR=%6U0QaUkh8F!6VFwJVb*J(KT+_42auo zUHjjfHg0$L3?!pP#y<>Z7%N(a5yrsmw|yD|;Ee^;I3l1lJMg4HBr>Cx;0y%-r4q(Q zEujNo=8Pv)5YVU=tf>!tLqcFoPl!ATX&L*a#AoL-!|Q8Xvi+&w;Z$KX`zBn*){ct2cQzhjzaq6y6s?9RRK zPf>gGdyaR1^wIf@(iWFgl+AK^=ef20C+DN864Gwj#I~ALRnutzon0Tix;T2|VkN2A zIr!x(Ymczr-^N2fn%p^hLw`V+K^+mqQV4uBy>)za^c~;uXMXaR{&BNB?)K*GVWN`? zOGPyb#bVjcHYUR-U-;|~{Pc@g&RpD>tZ!f1L}!4SDG?LE&YfJ{x1D1jT~JmtXNFQt zDMgY@k0XM?g2+UuGh(GGgz2E%GjR$QRg;v(yp8~7SAFn7chA)uzxT^eJ@@tpzxajc ztd$r#az>9H}`_h=+Ma2Zlm$}5uMd!9h8B? zsyN!7oWgo-ln6;s5Gy1(%!q1-WdNDG7W6*Vg|KagSL($fEj%%=Odk!VB&Iw&iTitt zqrI*@c3qn(%S1-b`4~GwwuJ$JBm(15%KI)<>sF0|(0nm;!^Lm4bp3701ohiZ13-vO z6}uYLnyw|QqMnj8UgBof-T#;C41`pnLy=R9t|r^mJQ^u1k6rLe3V1_Hq%cusP#{yC z4^R;E+(!bJ;=6g*(Naj1yr{96NAGd1*)x-rGY|n|AWx%`*R7^7&Sb;9z72ZY9u@{< zn1BsrroEv*08)e9Cj969NdJCN>hl38Q^A~?%lj^~r0T#723d~k66z<9l%j~WA}JZc zx|Ec{C^hHDm%cFBucq#8m+mOUrieu-Q@a>d-IssmpB}vU+`OF~9UY&{+i&~x|KP&c z{m)-F{p-g^Pw!0UcUOZo9?a%5-WcpHbu=l|`1p7~rqdf`I8^S0$91{ipsq?{{`j?L zKlSow{@|Pb0%LR8Ej#kau4hD|O}4y`k;jAWqTZd)_rBxn|A#L>_8(sT!n6*xwQ*{ajac0!%YDA7OGjpJPGAy7%PJqHl z;1{r<3=hJMNNKt3y~qQ%VkCCKp_&3SO^H*X2_eH~;T5_4_qC ztk0(O@-Mv{$z_<}RXg88*ZuZi{O-TJMq@UUY~0xIwoQ;@)OrK!9vCu% zsmY3ak!AM%xL_+|v(*bVobJ-o)=WG=PNsqg3QWYa|{v?W^Y9rRF z>Tr7U-`#idr=EQN2fpxk{?NmJt}O0bwkJ6uwMTZ%0TKe=+K^0g~#ebfDi~m!qf&nhV0GKt=V$nG>nE}Sk)T?i_qpEPIeB(;7A4qkIG`(muBif21`(^5*ryVWpj6sX14$9 zjknyze|MNSV~~KQRcInmNGdfX$?LJo(C9kG=BX&g^os4aeJst3!bz zP-UuEAD92)D*t=c+n7HYNYR7>?fl!g{+;8&QQJA^RC7pt2CyiKNejE#gl_(uvHO{` z_f5GCNKZ^Q_uhDlg+Wp>b$O@)mP9Nmvh8>}bhKnUF*0J)%qq@TzLnt8cxLKhLcFH& z`*(NG$7X9-?;kDLIb{C8f3=~=H$_W;Sph7F3ZkJ<*=o@wVcV^%XGY;l;l-_{cf4*7 z(ZA*SL*bVA^J~?VX(UKwVj`Hs*4F>C z|3$2fpmHtc(XjM||M|PmTjEOMP@;qA%Ic?I%Xu0YN5`e$^htASesZSO`(i2uNGfJB zi)O~d+7CzWj{2@^SAY1~7k~Bb58Qp@H-7(@pZl6GK09Cdy%?Kz$%a8$OsZm1k`IB* z$g-buPjoRNQ_7nF%eX}k{sDl(#6)|W9wee^>34_K%~82GC}VcV&lzo|fUyynT}pSo zxO?U1;bnI9=12r$rrIV=(rD+Ci`KOcOWQrxvgL%>VUQzwrJr*^!}@uH$iC zw~M&BIgCk({h*kfERL7$qPDUuNAu?98^7k8M~k(;B){=v&mR8xi~sucE{a&KXq!`pS=j* z6)7fj$#F1pL_%nxYN=uO9TWGhPhS7Y^Yr6yxpMIn&)vH|#MpoeGK6#>g=&hd-I8(& zLx!OGwG=2@$xwfmtqjH-0YXSBO0aBfO?LW(?%tV#oDzhylZNGO*Qy^TQX_R-lnvvt zwfaU~w%(r%{Io1O_J!$EQ@K8V^yE0##s0cuQlJT*=kCMzpMUYKcQo^c+-n_g9&eK= zRLN-O{lkaT&8~aCPH*VaRtOJWxNt}c(AZdkQq_Sw*Z}5Z8g!}KZK{{{yDl3)S#4IZ zo5#+rEQ1nYF^$RXS=*dD?G=M@y?k}Pu3W&FDCc>ukh~ocb1)!2 z<%pwU021a7reXlH7Ji`SlCYuG*olsk%``G0z_AH5<(DXi&U*f+0l{#)_c6k7rP{LW z#{;ktGEoAW4L=;9Ii@k+>I6@D5#KL{2ykYuH}W-4+A~3*4s3>w(2{{LGF=jF8jgh@ z+CHx$Rb5vhE>ud>uA9AWve+J9@<-8Hu z+_o}T8&^fU-)(OWW>HKrEQd$!;j9sls^B2f`AKo+U4Q1}ME^K_?k6|m|NXE2Q+v_^ zICHA{{PylF9WybE3NGJq_oYug|J*qrzVLG}W#S}}*l9{f zk+$i0XRlsNN2j*^Xf%upjgcfO9CVF2P({xEc`0(>|=pCn@*%%&qM1tjs->@LswdVX}jmAU9SFjPC0;+)h!r7tSx#f@N z>aqd938(-&vxN!45@_kmKN)1L(?ife;sI-O(0UROmIgSVVpKv)V&pcOc=t@p&J0ye zg)BREEM(5Rq*?h5M=WM4sUY4*oKdZ*yQ8c>b+T6y7iJw`4DNjZZ};I}*#@jk9|0&~ zky-9WM9u>ZxHFBEr^^2AzTL)uMZw7hyZ?-Of`@{<83PGu+78P_ecUzkrHMANgP|~t zimFL*&%sQYU2VkCToI0g)t+OF+10CJA5~L69hf7#1tXNjuqt9ngS-r)rZ^1j}&{lyiqcFe68l=ge9e zfS3g(CF?*X%$q6f#K{ouD&(9W-8(tmSX>*PD&%0Pb8n<^T2&h}wYHTnrFl*52QF@Z z@|owp>F&Gt_n+(R{;1d-@H67}kJFSeD9e+!shk`yk|Q0})$Sth%*8@css=xN>cc;N z$~X7?o7j!l2W>S;nHWWY+bjJw}E07G`w}Z{&thkzVPgi{qjHf z>)-Q_xQlE&2<~8^^Eoz7IY*t&G2QJtG@{*LgFHC%O(?sWsU_y|sV!ej)@0EhJod5+ zSL@T`RI{(EdQiF$!l0@~)fuCica7on-pTRq(b4Y9WnHy{P*g=-Ra8`D)HTgscj6Cc z#ig_V{?g|6JvqB|_2!FT`{w80{y+s&Qf21}LDd5tLjeIX;6V9sHZ> zE1AG`2JMeePSCX&&ouGutlM0+USgis705tlKb$-I()Q%}wXjP}g3_oUIQCj_A}ztE z)vwp1MRA+p(EqpLR2l-k&+`TBz4eE5Q(1|ly^++rGZD2w!wLwAsM(%D2SndKn61f{E=JdXSIS}|YF z&lnd*N)(ArZARumGeC@MXl6uaYGYv}{Vk0Om?##684wwpN^6G3)GKlXaE6Ij@!FXa zs{k0Lrin1fdTp?oI&-Ve!W^hBtE#BxW0WwLbgbHtC73gIDvmkdv?)bPaT!zH2~>@o z?+sAc!6@4bIgod7EM?Jouj)XW%s8hDSoW^WsB4GpLPB67QBWqkm_<D0?GBG9zm=?|t$b&K%5`I?YnUa9a3fY3^M= zH}oL}FDX)>)O7>K(X{!iPcM^e1C|HnU^s35?A>_hh07m#_LXn{nm6pc)TNd;%R!g0 zH%-nLg)h6foKRy{tMI7u2Q#@bQ!Wc-1T&A5pZk%&_bvaQ@4x%o{)glL@I%^uyfYaP z(dKAoX&hll40xn3jk~wqeeQvi#kAeu7;9*%6OuzaoFj7FgbPF(x$`n;rCZFJ!~Iv< zlNLmo-J`0`yTj*h?Z33=?bkjlcWjL>-x(*vIZ{ee2q95fdvQ?330s*2ip9pHsE6@n zdUA5ii#Z@IYgMwDF5+Uo=qeF@;d*`F<^Q}f{GB&vKe)bL*F;oS1Og%;WSyxuXCOxu z6iU|SjEbIc=*?E_Oi&&X0T`(oi7GSol+UDl%)6oZ;$$cejNE~n7_vP`?vy)NjB#E3 z$nimtwM86E8^3?dd&hp>bgcx%T3z0J>?PvjbuBijiiUzP+W6F~w6mxdjWP=FRc$6+ znV5i1#1S(TRDM0B(5AJ)M7m|!$w@$gR2YqcDY-n=57m~Wha}!u0U>zpPlg0A zW!?lv1gI{-OM)?burq!QlzFWc>8mCgu|a^waOklqNyw5}GBZd39Jnz{MA5?m2}(eO zMY1I%!Puk*nc>J|Kt-U+$c>B`n8OUzm?Z-MXAG#C21Pd8o=dBJL~$&PgmX#lXG>j; zO9iN~)!9O{CPapmKT*4F$(?r@u-;A^L9Kv!z=)hFn~ls-?{Lnh@I+4GvVs(OkC1uw zAY{p&0chEFy=rUk-nv4OMw7wfcvhSV%jtZ>?um{1%6;cH_Uyw?|LpN{Zy9&m*^N8S zyzkyqe^4Y;+|7CEHrV}I;e+h<5c;MNmHy;Zx0$+W!DifG@84j(D;Gt2k(DnZ+tShd2-s@T_Xim8KC%J z!p9)q!fWjW7Y>M6{J~}Sj;S7YFhAJ}4fD6b$;*n&LNtG!` z63DDf(pg{%ci2YmBsa1wSymrXgra@Xz5d<)o^J2G)|zwHkA2RK7qUG@)s8pbh=_a7 zx##Y^)?9Ob^PAtdUiQesU}h=Hx1yQZoX|J|`$S|+L&4a5hYKhuuy$Z)C(AYQ+`&2p z(^-{6(;0DO>a?`}P#lwhPBExw*kV?2&%D99B43boj0pf9)bSt^md;Gc$bpionmJfh zErp=w$RdS~Jn6f1#f(?%*TR^V$&E3n)J!_&8?h=n!Q738W0+d!UruV4uNuH+*1{4on`M9k zTPf{lyzcUQM_WzdhAwN!^1@Gd7h8pVX;If&ttaGJJ{81&|ecV;>)D@$;sFI}CiRrx)q`(OMI|Mi1^?1!`7 z5OQO4ZG2djcS_a+>$2->uf@r=p2hQ956JH4Kl?L@sMjZQ{(A4$#f{j+qRQuoA=mW- zZrFqfCKdte_$l2vJ-T?N+#LH~_||s}lG~gu*5(VX7x8E!hts2jnbwID6Q`0~ox8rv z){YkUW?8TFML(AkWtR7d9m9Z_uuy5|_1%v>_)9$=r0io`n-ATX{sRtmSj>X9ZD?cL z#-xJOMwn?#1{j#xtER3A?m0-o_Ds_XXj7Pw#Sp) zaYv#dL9n^S~K>;q><9)2DXYdbVhqCW<9QOB%|7-g?EcW_D6_F!v?J zjD?Dy-poI8E^lfv*BMMeVhqi~ZhYy?+nz{{6<2`53NL<$a@q;9F8p+_88J zXil$+{97CR45nJ8FnorovL+{5e}#gPc*eGY<$XcLOq+Dy-=K?;sBDQ zrTs~lGbrf5Vz{N}7S3i^;q19Z?)KGv$IuFDp4Odl4_ylsGDB3f0Y%5g(d`p%QC$q?A?9?=4)?`Vw zB`}Dg$xMhnh=4}Kk)J9YQ4%pTV-BVnQIurFMh-FDzj1mquQ<=6NLf%M@-Z}7#BBHP zTsVEdCNU`&Fdu#b?z5BLfBVwzKYR3!@wAC`D)N!{<%|1iz3P#%Sz?-b-G~WmWf@X_ z^H?@d_hM2;yFC~@{rn3T?>@7&?qB%CPo}m8xPNwS?)Vfc(q)u&#Op$zYxbu_cIEsj zw>4<940&^9m`QdQ*I&KmZGSeedb6r} zp(+v&$+o>?QX)faLNjmX^IDJQy`^y)6>T$W<5)28*|^HK`~6_HGn*YP!fx4n+tV++ z`~43;HDC14p8CJUnb{*q>f7I zGoMoGI&YrYjG{=llh$&-ofi+Aj;`FyuH0b73AA8%gH|ZO)j{=Z7cYGL%;;7Qi7`w4 z!Z;`P?1;2c8xP00wlDq0rpuP;}T;bVowxO$I0wvJ~XXoR+Zel9EhT12Bscy2%+nXm01yE>L_`g zU3iMo5d&DyvqjTpU{x)$yiIZ0mnCBF=b=UBhDWm}zv&%Heo*!1Z5S7RF0l{U7cCl@ zymINOsm+|55tV8B0}tG_Gt8cvxqtog?w>q=_AvR}YcKOJ?jApQUtdL3m8f=vrj=1u zr08$XXYaayC^4C~)W_Q%JoEd{?L2g0ZM1nhwex~XzqwH)n@@I*t@i8))|!pV)9<3K z-J?zJ0hTbusM zGp}Oc%dL&xc-Zrvps6$EgKCOU8xmxcLtsaX)XJg8Sy|l*ND-k;I6h<|1st*UdItmk zj%Qv!dfWXs`;0YncNi8#-XW%FqydQ) zCUi_up&oidAy9+Cc_ScAv~|=rhGZZh8VZOrT@XdH0nwBtH_o|eFk5T0y+Y5mva_fX z#39efM3Wu$WrsiJ@j-F^u!9fSj(~|NNi* zouB&2pZYid@Bd|b*X%p~$G82FiNGIqbwH39yxX~T>o@uTw(odJ(e1u&MoeVRKx|Bc zb4CAuc<&GPs$NXpxhPBy`TB&a~rK1-1>+x8gdE`9~>7k36U`Jgr`T> z+x0W=$u^%!`%{XUQA=(bZKILhcy*(BOYQW0Z+(org@R7wz>T~Vs}<4>@TIK>FO=hf z|EqUw-s0*2auC8ijw8F1xpw6LMsvwvHl|MFKf9A!4=C$T2r2$&wM!5w`(?>oNjcQhL$h zRqcvePp}2-tdKKWIJ`v4tR^58Gig@By9^3YR(&Aw!O`K-IQIPvX zNfXJ7nFX@rrfCGRD`8F5w0nVKRn40NI^n3U18SloNyU^H{qd-OBA~b8KX+B4nWdab4W@NDw&4jJ&t-1{_BFo#=IbU_b2u7gQuI>iOO+;wraHK0^ zpYA4^SvL-!x&V!(REBiaTk6h_PR*|CG+TFu8IWh$E3dw~HXdt2!Krk!cA;GA;q@c2 ze7dtcX%;@ua?{_{DM%`OW|^Nk ztIDFOlc#uH>DOL5__0UIcRY0VQ!g*-w%Obm%?m$l;+Hr2i-MurG6qU-y*9n6w+_#p zdK-^-n>i&xo3bd!%s1lB{h_H->GPDgz9gTRGOcbiV(9K4xBK&OxbPo%?)4lIoJG!N z-l@TZvQ8J303xV?%+f5rcH@RSUbuVj+Fc)Ru*+d8lBqbQ4AGI&iafIl z5~kqjGC*^XXKN^9Vj~l?0yu2|VNTW(DLZBCB1JBGLVLcCc5->xZnjEH4K$c}kORc1 zRTZ-mAmwo=)YO1ThE6hE&3BBcPFSN0>Z%R#l-f)NrOzU}^udRJ>G!_$&cU63( zohvuBdjcJjZ+fzbjZWeQpvKJ3Iq$s@x?eYU?s$5vt32QjO+1_u)M>)?n>W3f*|H5} z%ZYdrGXmH-Vs%6+N`Mj@SS2kM^?Ww3>$+{57?Ws6bv0UQ)pa}?78UIb;W-gAdta7C zuiy8atErOZT^&jE#z4oL_%&}tRfCzn;j5~h2k|O8En{XkBdTx6Gk0&eq+P78rKG#6 zE(JK3UpskoSu!%olBnw4ci%OsW6#9ArDLr!w>w)LNSJSrC0}RN#5r-ezB~WrV(m}e zn!SH3Z)E00$y{0H6K?ut8GMH3^Wv@l>dx)A z-L>B1FK?XLYSk*C=lkWtX*U?PZuF@;Mo+$W>~8EHZ*QH?*JCEyS7dz9PH(oilGKY( zt@ZZjyS~kRFmX##5|;3Uftly~$K<{Le|+G{UK56k#rgSsYrg2Gm`AIUmSQd`gQ9~G z&Mwm3lNNFeQZRSDX@vr0D#~yW4$UX;z5Aa%aOX$We(1{4>udfi>ucNPT6-o{Apqnu z=e)D5gW@qKFdR%}*??nX6J1gYJ3jKsQ&FM@hyVab5aBkJm1@2>;hh~4Q}3yl=fl2p zB$9}h<9@e}j%M4V-sAVYXOT8uzgf27?4mt8Z#J5!oEE^SxBg3)4xf5M!=>9ESugMu z@_+d1m2YU{w291Q1nmX^jFizZMbG<1uI#>isyygrr|L!qPTTS0M~_XdDL@KF$AB<$ zgkUhE%6x*(y!6G`5Q&t)rcSNPCOROlOQR~4fY(}$&S-7y!!xg)KNLLqmM`7fpWJ$3 z?2B$_vm3-eDIByL(6Vk1z*JX~WCYWODOWh=rU^-f-tb_2(?vk=D57gaed+qEOs3$~ z45spG%C4#FwrQn~9EB5-2pp?LCTc?zkt7MGVwSY?hXpf>r0yUm=I#xNh?E?;Ec1h^ zmz8;M)GLdsan7r16AmZG-6ros6_!0)bRnbr6^KYy3ku6jXF303)_IzqL=aixp3C%P z^(9;S39kZ>zKM0V3{PDYUjD?kt{;E=ZF!cVj+IO&gROY|^+ATKi-iE2GrL1|%V%rF zn(y0hj_7(Ff4Oq+yLoK)L_%wUM#Uh@xK|Vsgh`H@c%f`kN36^9*_)4SjrV)p zmKo(mBIP96WIk+S9wiqTkr4#iu`RoB8-ppo>mii#NGCu8YnqP`5tOPsA5s`OJjlcv&$hbJ**pZz04-vaGAdBJ= zb_aOzu6$CMR{$g`rkbGCv9`6JLKf;KEgEfNR2Y=Vv2)41F>-RH_ixxW7%_JfG3d5g zXY1T;`L5hB=Fw<$>l0u4{J;9ywPLVa&%fydANWT<{tuhBWnzOlccPJd64O>6`;A>q zcAM1;0KLtWYE*3}g1$)VPaXCL@ zT0`PqGb>{`iq5g0=EZ&)*Qok>I{Qg~`Kx8-=7YC}lyVK0hD9~V$|}oJEzDuQhm}RGkjNvNCu<|d{q^Q^uim&X z9^E_o!1H_eS5?x;BuWzsl7VG~aEqnP$yGK?&kK9QihBW!Z$L z-@38(gO?62Rf8{H*nBYZlb0?}7WK4tbxdHcSO-;>4Ki1i3Nsj)gRxnsgxpyxap$E; zOFlk22}E0hdCSP*L_fG_j*sSFy}tkY@uFsDl`lrU!Dv+Uy_M|OdfCRfDvJxR@3oG; za>x3Y;0~KGrBr9W>XoU;b4Ak7U+ZW6eh-vRR+E{y9B_p83){U*7dK8H6vPbJ4v2v* zMN1}T888PLXOGSGLfv?v_C+z>{hMEY@xXK04bow0d`?VA;$q6oveaqp!PJOB%jF2; zW&1!)P0bM~(Z71%19RsQi&Lfha;Z7mfB0j6|3e@B&F}q@AKJR-juc`C*6GS)wd)HC zbvD{Wu#{wWJX_3XO*$#tp9GBGpNrPV7DsdNTRre-8TxhldzD)OMT4(zw{G>_L@-d0gD!Bp3-)Gs>R zdGXOFu=SgIbZM9$+w81R3YHgs==v4&UQ(j=s8-=fi5kdSUTx(S`Akh&!Y9k@p~?Ku zrQS~!^Sv^^cdNeudqsn6WFCchkT>kH)h?7&|S(?*5q> zYhaX#Tj#H@7e}XySvq|bpb#R9=8TwNY|>cM%Lku&=HUK0edkwS__w2X{LYQDU^Zba2x|rw4Wg|{nPg26kTuSq3-QbA`K1e|S^}F9T<3E~jtnAd zCNOw41!5(@}+NVAsCEFv%ckb zrhz5XB%|^0BR}`cKl?L3T@Lz9+dlc^lYjLu{pDjl)-1*ledc2jG9_4^7YVjjZfq1A z+iTldS!kCa>graT8KAd+as@;TU?MfmzU}es!+$vegChURv(J3zcYHfLM?@inANi3V zdHCUnRizsYeo=4zjZ!+Q0dyO8=|Q*=Ci+94?A0 z{E^PuIgta*IggFv+y|e$@>`#~{#Gs?eqa#XHu_awX?(u`^mH+Orc-t4B|DA7mTX_`oMzN4=5euRydGgRAAUPuT z9cGRt?oC*7W_3CJY+@%19o#A9be|ujid#-@^?dG1+8ib)LL7}2j!R8dHxp?#mDn84 zWznqNbJnf*Jh2lLma>?tq+`Dx-!D4#>2$*9it6ufs-ftV#0z$Hj0BX%oNtd#bW(L({Lyy~)vU zf98`a5)R|m_Nfnl|DVMF|CgQY;ng1iY*i6AF!cyz(rmVT!vU5^gs>2ecQ zWnb*=T%XM6up`}g%kF2NJ?Ah#njSbCX#4Vd7Phwbb2`d-GwBB|9sS;wSMNT1@$mZI z{7g@V?Lsifvh8BfX+Rm(hr$bsC0bEG&hxdRGG)@(XktkRzWEQQ*1vae`a?YbD8UH1 z@j_`!jy6$uuGS=UxIfrA(~LhzGa! zPhIe9r`-BE-WZLtkCXs9790pF(%&fh8)N_P9=l6{^?-5P_EJp-Q{M&WP6h%7W%NQU zU%NH9w!it}-g)8D`Mg*3GxV9nFpb)Vc6Ty+-(%Cyzvu4%;j{EN4`yF}>gmI`y{$hC z;<$B)W~Er)5XELI!*M24)6V0~84_!^Lb`&TjZYF(GERm>);;A$+v!oQM|HMnwtTVB zcwE=M4O`KC>F2$?9hTX+w_X)CDBVVXZPC8#xvO^_&YYxCE2CD5s8A%5wcg;TpS}47 zvNxpY$q2cTQ=0w2m#(~XcT(@}YZObWDTyi(JXjr*ca-O2pMUn@Gr#cARs-6MVM~1c z_|w8=L*fisUP#kqiesj#DqwM#QE%AK^CI^?#Nde4kU1wYk`Y10IfF@(f~f_v3l~z} zr!?E@7grqKd)MXzkKMI%Z8r~=yUbXLdD#Luf$psjFGhfX93+;h*} zOTP!E*>rYzaKOt${>_zy>PdQZ(zEQ|T}4)R#jFE>I`7(!UAab=?gXtG$J2hv2rXT;Hrz0)LYAY>qzi75r6)=4C)xzJb-DhKDz7w&!Uec+S7 z_W8oO2iDI0p*#F*FU71sJv=--I6j;&=7Crii$T93Vq)$jQo9F(Hx(UVWmRUtxy*S- ziJT`%((~oL+ZXOTeP;-5(**CmbL6%#l~`gm<^V|zG0DNX_SEOX8!GiGkvHnid7 zlXsMgRor|NK#`K1)M9T0r`5}VlcwiwUC-Mx3tK_UOB#imnJQdn(XVe5lLPHj$(K2uC0``@qnu1PuKHIK)pa$q=$!7*7(-ubtaf~PMp z#y85v|1|$kFfJtXvq{`~^kTm8YWu>mUC--tU!6U(HQ1*D~$(b_OT1aLm&CVkA8UT zN4D@VZT@H)a_ul{aJ-9@#JT7wuywSe)hNvh!lDkzTYA(kgPIwUb_z+!Rz)pwq&R5J zDNjcE@t{haktM}Enwct5*QZ66()s;q$g-C=$4|Xw{H2X*zwpS4Szfg4h=fzq4 zGuJllyx;53X2*#3z9-IYoZE<@J)sN`(d~^pGuVl?zL6=);o!n(cn96NTK#Yi*REZ= zoq+HMujM(t5)E1!fRKqQi5k=sbHx7c&U7-J&1P+AVhr7J?K$&48;!?zp1V*~WhYqS zvnr_72j*XR`P_I!i{^R=xp;+F40@X1%%%;8JA&VC#;=a%r`q9L zuN}^MYsodPmW=)OcsnLBl|_mfCyREJz)1+|rXhfF4g9A%rQo3j&*6nT!Erm0tzAls>LogS96W^)>h z>SoIyH@83e4g@3tk$3EJvf!ysi8PRskn_%Ymy;Qjz@Q*??1{5rZA{Vx0L0_~*O@gX zY2dk;6&q_m`}Vi~Uw-%LAO6teKYnoVh%aTBHe9)tRqXw7PP1Mf2R#%;;LZ}t5=_-P zwOpQ z+O|?lHuuoX4U2imEgD;s5}RwH9}mk5XKQ80qNWi@svZomGBz`8`YdHUb$TFePQ*sJ z8bKM_0v)?bMKf}M&Ee+G0#Qh5+|2NY7aVVj6@M_0@XB@AKzWgGZf_08qqb?=(1@mGTro03o@aSp^m;v) zacBIZsv>X1h3@$7Sfpyk&h`4ej)&QO)MXG^PLhC`o4Wq`_kaD{-~M*zoQMntgO^`^ zSyv(8Bpp~n5Oxwcy6LawPhQnX=pf$JYu*SASfLvy$fW_@)KB-FtJhd!l(Uo-VbMFa z_x#Vi=kZ7PkFFgl38?i}`vs%fPR-?!55Gm7V9~WPL~n>bzQ;+WLXhRgtrr1CiLLU%Qc~ z_>BkhD|vObT;EK|leVedljD?MT$k!*z5BMo#7n)=Tgy2g7NuCay+w4gxO}La)JRrl zqfy_=K{z~0w+^o#?4_fcTZt;pIRkoCKU*8xnZa<-C%0_WcQ>vpBb=p@N?X{Kw`_dm z@WS^$_0mi4zUOn7()AR}MoY7Z6r5*gRcs4`bifc3U>yaoTd>`7U_x{b;W^SoC)5twS2No+ZwW z*ZPBB+OMC1^S6211gE7~ZRs!GoPS+^a@aJEVBBf@c8W*bARgDViP%nzle^9@9(>?4 znY}HEczWsX@kUAv-X)hrK*Znxf~uv^Tj{E?n1K?=oF6ImS7=s$6;VvdJ3aM zWKDJHzC9WZ*VorNd5)M;+qAclBi^7_ooxT^9!Oe^2ob3*Ek1~;bC$N{=jpm09qp4O ziFMy&Z;&;YEoT)2u~~A&I!PNF^GSU?yMFQhKk+NS^+iqIEGdr$ag)^@n&sx$HO=%{HIEDzYk(nfrhI!DNWzFxGx zm7~lTr^?)O4!h02Vs&|_9p2j6eeK%*>(_^_$QeB* z#|(1DJY4KOerxC5yT=diNO5FPN5*O#Nrf^*8nbPrF4aHD(hVT8jK~d=I}>cJbvcm8 zOhF)lv5=Zqzolfk+LxN*6Dh2Fj@}-q^|Dt=HfO6WnIft(>l!qe1hWWsAcj;xYs|3H z5RC-tjcH{a;LIF2n9RspP(bOJJQoU&rL+khTeV=|#{HmTrHvOORmMBLopT z#SAiHvyS5Z=F0t#2olShTyC;^p5|QgW`v7_Wi7t<24&^Bo2;L6wz@?)YFP zrKBtFmf<8_B7>^aRWV|^3RUQc*B_%QH#*iHBIyUb; zxb))L(Qvajyu7oQh(IWStt&6}nuD{0qQ@xn(HDp7ZHObE_fpnqGe=?(H7YU+qReR_ zLD@}WV+biKF=w9ZR)HjKdTH37mf_tuCeK5%v*&o{#;$h{H_gq;53D==4Mbvg%4d7k z;A8#fTPNwB35T*r-s{Bd_=-32rjoa2t+;~_3wQA zfx8~QcfNlxxpmNL;(lqlWA7IAVtzPjrt|r9UN~P4s%&$u=oiB56F^YvWTq_5$`om`@H`=e_S$Rlh%Xv^PCETGWS&HU)cRFFjtnW^?URXSZ*i zF6$zj=6qcG)6j2E8?BtYZ*&&6=R^N zO$(yRbZ8Wu2KcGWwt$WCP*Ph5eQg>%-~JLN{cC_C7w2nNSXf;YpUCcuJ0L|M|y!~Rdc>*6CX4~`Cxn!QHmv)r8aJg=9dQ9tij zkyN-dV(eV>xt-mcf8#Iz+3Yw`h6(H1+VJA` z_LGl3eE-7_p1bQVGVj2eD-*A@7|dXiY`O^ZI?d}iNsW*%2&Sy0^Z9&H*9H_>cJum; z-~R32J~}##F>S96zx|QfsiG~4L2uOS_j_H+0Rog)6fyo>)x$M@>>rcP_dg;;D z?L!Z~B{qwl$<0BThZf~%m|LHq=4vN{q3@fE#-70t0h1yUtgdA;sY554X68FjV*pDQ z=80DK359e8Gee0o3(fq&yK9NZJFh&=+?|)^d zK1)~I)0~>pAOn_ifD>odCcX#UhFTTY!AeAa3=XPIPOwVnd9{J+ggQte0id;V6 za*fto7nfS=T|TV>$36w`J;#(!_m8i?aHVI?^(z|{{n4Nr3@9_Tq^cp-nlv}?pvW?> zjAZ5nDiUD~IQGcMWm#$)4Q)vrL_f1N{>sKEAf&`~5;ZMz@0paHF_~F6!k}hpwetv~ z;4XJ&S~Pg=+R;L}3?clU!i?M!Xt+I_Faw!6 zp`?EAJl{CqPn5Qejx4>H#UFtM}KrWorDmZ*=$yw9jtjCZD_wr zRSu)&vL&+Rg9QxG)EVkzgVFQPee9=y<@wQgbYs8yk+=ViPkrTg|NcMt7mG$c>G%KX z|LeK?9&OsWL(!(=FTe7Mm^2FVfa9w-CkGSn^AHw4@B@GHZ~y2&Y?}o+2Q!I6-B=q@ zCn@Yt?o2m%1YoI4(oq2^4(F5SzHqiT=vBj;*Pgq{!(0;O<`R9Sr&p9Vr=dQag}(1y zIQztn%SY#`7XxRG^F<^5&RTgREmiJUrv`q78jHtW^8=H>pR^*$AP=rI^@b!!T~E6aVn*`TU=JyScJ9m{NS^;1(U7QtdgBF(FZS~=2AgGs&W64w zQBw!*=FX!^A+{lI!fwIZ)41dZn0Z2J=FDopG$p<*+wK(ktu)#KFQwVLP5}@A2AIqP z3uwdcYT=#?xFMM4R5jsU)5XkrZ&VnOvY0K%21uk*Bw0_Wf>2COlns$k0$!meM#g{| z>k?6?+~f7UI>?aPvM1qk!Y7Hox5$qc^1h+}jr*$(nI>kFF8rUJ|(6(i-_xaC% z{s({H2b_1JcIVm6|KdCT^U@}my^MLg9D3=p6ReO|<8Gb6%!8HegZC64{D(gXQ?N+; zsmGt3yzeLe>`#8|EC1o6U()&dI9}w%Vc)OsO)q`w=YQTid-$&HJ1(p}a$i2LXKcC4 zcy{Ykf9oGy3(Z^=7w)_JTmMggZW5bv36}%MN#QI20GXFbL_t(QWS}ETta_!^)reg( zozlP!c3*tq;{A6|53b&7ngc0@Dmz5I7+Onb#2x42i|kC+`_z24IX?B?o3G?&FW!oN zlEP_gq(zozDb$XwP6}91AJRN?BB0!78fvo;l;?@+#o_w;>0_ZwRg=u$7bmY(-Wj}^ zkTFQjl_)XcinK^?q1Tndcl#{Dg&bVDQ=I zZ1yj{c>TE2OlirSWi}%vB1tZZPw;Bl(rS=8w7=u{Ex9CMT~=afJ^!P3-hEh`iA=x-;}uZa>qf#?{cB5Rfv7cVMH})zv$m1_g+G4tC;t7P z`m2BCl}j&w=XZW5msLBPz4txu{mNIrs?tqoST^89&dl@5H@f>|dYc;{clq9uH;Gn~ zh<0zJ6cRqRXZ+-vc*N^u4#qX+!bBJyIC*Shn3#W#s*VcN&9x?)Xq==2d zFaD<&{`8OiR9WRA#(UrK=*1uShU+r*#49kb>+E!mk>wl;8I;Wo4%A9~|M=c`?Zx}w z^=EFp`ujV9(9DC&$B~aM&hI_9&BY$Ysi;>T9~^uH{=0{3kKEdQ?bO==4>&D&j7I?ZHV!Lm#ehiPN(HKXQ|FcR4L4h(m{otHv+*KG9}NcDvE>I zV!TKfik_)4;(~0!GRxC6)aQ8ZIjvtTi%cZudM+cq1+wLF*`Y9#d2{L7fe$@;WaHj< z-1{K@s7nEXYN}H^jk8-a-;WD{bs{K9RZYEj3iJ#A(JRk>`sxe!-FN3)lfsIAnGJgz z*0H7(ghYUXg-fGu+D?qwk{Ots5&X(*mI$m}uGyXZWJVnUxwC8nBM|~S5A&VKJ#{>L z?sSL}pr%4*Km`U^*u3N1F@bt!3eLO~Rn_F~c9T2sM@JgPJh`RcqY;=P0-VTK;f+KYF!My(HSwlxeK^<2 zLa*)av?8mP2w_FFIJpv=Db;oQ+%s1xL_-pnXSrpZZw%eWxLg~T4rV5Rq8sw)XRG-*NmLQs{bKWJ6@%-ujK!kN1mB%?mOk@k;WxKV@I| zuD|D;H&OMVzGJ{C+mdOyoEht?Fzuwiv9xk+&<^wd%_}dzlrPptr=PukX(zfMsmNGE zba2J)@nK!(Tx6PN9@|@6v&HnYF8?}}~Zno-TXSMWCwcr7-c7mT>r@`M1k4Dvb1czF0pHzD$24EmpMB~j|Bqk($cX*eRU3XZ%qs`BWzT9Q ze?aVj(s-*JpZ06_lv@uLt^*djCn%~0BU5M9J@=fxest^V;oe&A^35ED{nVj@Z;osxcs5q6k4x{+1oq^iW7R8yYNYKoRhLvBcKER;82T`}2B z`@#@odtA52b=*7d2MZ#@qzC=1e(8FFLf+v1!yti`IY0R7>!a9E-L#G}=ON}bWrR6X z%=1)a^HF7^zVx$K`t-;myi~ZSH_QL^-Df*r9$8ULmEes!7C~pp$FNS!u{-?V?6}nl zs4x+cN?UNF(sR{*9lmF~_{jr&G`PQ56bJ2Mt1QeS0GJWn2@?q*Xg9)lLX=RT(~`l) zXs|IPkw!CO%3unz(qtKCq8icE$<#|ep?9N zCe*3ylB&RQ;kgI23G+n_M3205G|r5OoGFnrkr-QMmd;6_(`;SxE^RquDtaOUB(XPM z8-4bdfBu0x-!eP8dUSmBa&$yFiOpdiiYybuuq@kNKKA*I{oT#}Xiwso@?u=;jt16b zL6n^nt>o{w+MUALV9W*0(x z|2?PfICa{?*&)(FJbo$c%Oat3U;_b424{%GLgbVb#NKaFG2{{}C(RXog@|M!?RTud z<1at>Z9o3(FQh6u&&kXISx2ui3o(W!RJFubAgh5~CfHKT(1CJtL8OZmzKh)kfRxO^ zVn;1Bt9#Ck2j~}I#BS-VQtviWs7OqThz%x|pqGCyUlldZ3h`08Om$S6DE=q1W> za;Eb$7tb7g-GlR4!$4H)iB&*=4G6XA5loyboIhfnJMKp<;cn!`FF!I)Mnl7tkd)NS z5mjcvbP4)`VAiVQ4Qa*IKskWr>;Qqd()3Mx6Q|rbKGw9x_}(7<>>Pi2R8Ed|x3<y(^1_$VrH;rP>~{1kvS`KwT`F2k}_ye zNvn1VIqD32)i`~F6rH6m(V|Tjs```Kgw|>L7 znkEBa#Ex!Vzj5ismtKDPmE*l@zL|QiMw@Ot@@r+EqD3MB;G72~i68@k$%}N+UfDS^ zRnJ!Do;?wn!npOUH?Cdz^FQ?0uf6o8TZvyw7%_{QSUh%dC--?#spr;VVQH|wKAF!4 z)o@R3T!$D;TxuXGvP(L_LX>)DGvc}xKWb7mi3)0)6j<@&*MbEO9rn%PSyc&5O3l1Z^Ckr$ArdSpoJ0{KW)7VKyNlhh z4U;ic6kSj!C{s-8KpALpyhwX{Wv?e2BR}rBl|miSO7>*6`v91km^!$+=lq~Ii010p z%odHN&Iw1G_T-zF?_+SP9@%8kF6M34#8~C%=lf)4=81Y{Q6+=TiALfAV@>@&S!pPO zMS~Zcz!I6)CBfWG+0?@b-HbfLv?C^T-Fm<}(5w?h%8doOrrd`dgBzHSN0%3C-<((f zujAQQPmQ-z{_`JwHgg^z12X4Q2wgilE4(FBNd#h8uje)^zdbJ3`bC+$!=w4`EKcfh zS6(%~;FaRaLLZvyQ6k zmXuG>@Qk>LFDZGX85hIQ){fRkYih!p$U26otIGa7g(`DX?*=WIwJJ#h`(z8$7EOo` zbDx^%xeZZ*5GaKZ9b?bO=eEw4a(wUM&L}Ky=D3ziVZFN-Gtva-Mb$C4v3>j9n>&l? zYrpl>xj**gAx~5^Cl;d&K60+qCId8GZR)n@p|o+{lU)!JkaxSrXMVE3c=}-Gl{#UE zE}JqkVIvTAN~#PZgCpyvY6Zr`rDrH$3?^AA0-EvA%GdbdXKsA<2QPg6)8X2lO#0j- zm@jfL56NL|-OR#rY;Q>vCR6FG$cWXfqu+KqcW-pzVG4v5iBCWTz`) z=2==F^=U|+qM-q|rfil7bCRou+W7UtT?CILHIVlm%#S<+oH{_#phh6|YHHfCgBi5! z@0tOoSk5>z;B~1+tVE@y>%NE~6v&eminPY|NWnidY5&35%_lPNmhV9hu+F@IhzTaE z2DmAhlObiia7->Q$2c`AHpu6PRPfT};}03#Fc<`|EYI$^_q?My%-9^Uk8P}VehA*P z-Yppv$i23Ci!6{CNY#-TSw$FlKW6Fsa3P$sTQ z*LQy4eMO>VOIe3*a7&i}%2JksmiF^2@Rf|{ow@t=JI9|pSAF8qGuL)w!Olz_lvI0V zd8S{T%IuuiHMRkv?`**2*LAOU-`Q-Hy(CY_;Y)9wA?3+4!`Bzi~r#( zFV>%V`A>iQpXym&x!!uU{mkS`pWgrCX`dga#hn-qZ@d6s9C;T8JPWOY{7M_qM5{6% z483PfMg(JLjsQaH%sRmx+gH0zgIX84S9RG^4Fn2O7#To11A4yt?ELy;`!|31^f&x> zuYct7#(9=cLttViRP5T6#LSp; za7H{!frtgRS@yEgusX9jT3=IV(8N#z<*LF~t)P8$e{L5+hu~B)?W(jsM1u;~CRUIdCk{^KB+H~u1cIzNMf7HeR ztxDf7#(h32%jg(y8mPYQB6Bi?TGYkOq4!j>ctUa(ha-QM*6(*dGe-s?HR-9Em=FX8 z11Cbz5Uqu93RUjJ+dQ}epr8Skp<6j%S7z(Ia+BAXNxQONL{;Y|vK(?J1C}aXW&m~i z7BHfYhKHp#3ZPR9h1TE9`8STTo4sg8)HSlmdkd8{SxhEKL4{a}l|7s@kW)2+T6gDo zDeKdju_J&;(X|1(F`7NgM4`ybl+>TdQ!cl_xrIZ2Io`6+du*m>62QFEMzYx6zd z_vM9JGPS8Vuv-RPQ&G9^;_1y%=FPEmvRJA?laUaJNXdxoYiDt9WAQHKig`5_M6ia* zCufEJ`-4yaz45nv&zX08%D-sC^9K)4=hL}24Ew!)+3We9&-1Ro<(OeAE7^ELClNv` zDdZ*fzZ(n_wbg-3^JekfjVsr#UFMsYw@#fxuYyCJad0S1NjvDD6ci5Y-eLR`{{C-$ z`@`q*k^+(Ow~;^H$_Eftk^?|yLT^Yyt}vZ0=%tuc!I~E? z2Z_|2vc;@uY~dkqSUvs0hA5~tg3%y03boe7PEn!_8k~(Nj-ffwscviWyzI8Zomb9}|Sd9&unW>7Xf)rh5N!=gr*5ERBuRhwzAjU~)dE44FAk#8Y zJ4;Z=C@Z`U7E=Hli(|J?B&etbA*QB@=9mJMLdvS%!EE|_h0DPawh?TWxuYDzC_*++ zW1{Dtdu8jf2Ok>rOY=Ydn?FJIf_(_>(e}m1dc*u+QJ<^pj@!?~fB% z1eJgh*m-*C(#=lxtGp6K8E^_zFC=fg{J=b5lu*I1xw z5T+I)B#NyU8(&O2Z!oa|f+gZW1u*+$eDzWqPE%bdN-?N!tG;W|cRl7#CMkid z?CBSOdp^DPYFyuHd68vVO1qqfnPbKMWSNGltsgy71$}a}=!wq_MjXhXZV}od3w5Y+ zp4U-`{M^YJp%rRnp$@GSxh@uh=&Ufl<<-^m&9XPI8@60&%~R*eDJw<^v>5&bMt@(kuGD5PN2&t!BB%Gm=U0GUE_Nx)yA@v zB<U3wwxeQNUbm+f$YR5OBV z0h$w>QDs4B-ugoVPB4E1mD+~Pd(g-2=+^wj_WGV%G`%KfsZ&=(>#50{Wj-Gb7Hhpf zQEq8gTrP_Tr&Ff>t%oo4R42d?T&oEzfEmannMzM3H%bCgVX|b%U}WMtcnG9Rrin3Z z-Pj{Cmo=!z)l}*1ylsZ%cUS3ePV+x5aOz641gnh<=FK7jz=i^_)`W@0EHhe=W`I*9 zWDAl(jjefote%%jPG3`bkO3sdmR%P8>(?ho#FYZ1PD7ea^U2~|BX_9VDqMe5tPRW2 zuq<<@nw*h`3(#qkj%SO>Lh1vpHj4RK|MVn0Hq0|i3hDauOZx>Z?R`2vDA9=>5thfs zGM~6Tki9`OT>-AeDv&FaU|@(f#Yf6Y`isc}+gs+JOiqO;PhIX<4c{wrZVV1EmCr^+bC zD>-jy`p}iRPmQsW86`gq{g0d*WQj*=V2);WOzWjZt8z4LNFFpJN2Uw0piM?lO`&%!+`fU$AHkhQ>!1^6>!9M4!UwwV{Zu3*(bLSi-#ZQWW(PD}}{XDYJ1UsP3|RE@ZF z^y|~-J~nv{#4uw(48mkEk4`VUHx@PfsR!a?;N6xBP_0DU>#5)+d{EL z)w-(+xK5G?Sdt;TurHdPZT3EkBVj4jnR5kDum|8(K}-Ed};Bcw#E{-fd%ta4BD<4)j;cA z-jxS{ST}wkY)a&XY$!Y>g3IoJwI?GASQXvq7}7?7QAKSfoZGZRR_-Go9lg_+zj&jZivyc{Wb&Qc+FhfdRZNrWw37Io9=ixHx zmAu}|M#Em28z~f&;PNP!6V=HNKqKM+$`d2QI9eV9D+PAJF*$zZ*6~4sPp@w_rhN$p znn&~8%#T|z>J&jNBw(F^qNvw~<{?p=0vKMo&An^d=*YY2EHIavGIfFJD`&^Mg(tJZ zz)2rHZXbT)j%Po2>2rf??|t;`W8OS79&N4N(cZW`X(qF5P&$5f@#60;p6>?@s>9bE z$3v#fpw!t=v7621D__0t|N0kS*y~kS2l=%@Pl^&}wsCIL!--meI9O6}LfhJo(>A9f zA7sQKoB6_pSv#H2%(;A6@Sy0I!)c0{1ce%rW505zh5*SROEdefxwXu21-xwbtEQ!e z&obMiW#$Zkgb;u(z4m}=oLRh%n)HYifu)NsoxJG@QJK^t`J;?Bgfr%_#OgYj+5lal zUte>M0sx5_AV7p(HLH>hELDmKyY3*WY?gr=LSOBWWy7-2g*lQc%Wse?j1w)9bL#ZM zz)&)BN^oYi7>tQgsyWrJ_dJ8OP_LYWy`g41&gx#Hk!Y6EX_d?~)s3vJe-Eb5w2Pt7 z83wbhing=C4Z=ln+Ac0f$;fpC$;9fMW?)Kih6Oj9;u5&9#v$1sNZ*O6Q>{^-0IG!g zNpJe-EfrntDSN#kmFL$pI0>n0>v5x+jE~!%5{sxqB06R}@a!qiDg4r)H?#DgO~ZWX zf4`-T)Gy00qGpVY8Dt7XD6P0S24XVhW!9ide4_1Z%UXbzz$F=2mjXTJT8U>iH_raC zjW2xu`t#2{+be8%cKyuh@wwAQee~ie_v?3WRplKH(gcLIX=5ww1w>>FW_XCgXgPES zG7}>qBV+E0B{CMJC`nYDW$JqKc;)q$wp-d`IY(}vQbu~<@ZbWMwg)#$ZoFG~UpxEY z6?)I*#ncsF+^EjY$$<`JQ6T9|C{H06K^ss4XNEd1hJqMKk&;9pOUe)`tHIvn=(IY@ zQ8v~Vj+u6j7n3%UcP5(W*>eMW_vWda4^8KL{H<^M;bH2z#Cb7%Vg5VEJD=Ms1~>9q zFBWSqPp9Gf98)e?M9{Ey7AA}_f*?3twXxD}4;7^7n zRU%?^HQ#a&x?3G5XhFyIIte0ybC~7biAPo%I?|%SQuhM^0wQZ`vL(ojYM2q_x1st( zON!?o+$UHaTOFg|P8DGl!h~V4v2{IKH4}mNpc`aojV4TWmY<)rAGjIjPNZ}Av!&2X zg!R;D+N8;%olI#STd@>V*PF<)ylol-K*SDg98&aPVe#*I@LGS^&7P-}@^L@SBU${e zs@VP9%el{k7#IG9%X?pV{#wlGa;p#ByY-)6yt`S{aE=J@+#;kwu7g1~?3I)k&NOc~ zH2Yu8O}<8&0w>c8rf_O0cj3>Le!(hK7_czhXr`|pwY!NY#N6tz4vS_HL#m=7C=*2_ zpXHJ>_4+b4^m!)Pr&7L6^>-+h998ds?C#Y;wFRFv6!P;^Z7d?78z z7$$S9r6>xIw&h$qy40~N{`5BJ`u0TFPF}m(&uZih9$pV!7qZ6IlKmOol0Fj;`SbifAZ3A{?3<6PffCS$9Mj<3+=&T?lTV{iA|a~ z4U0uoF_#gK7#ls)Z20ek+-5y++a2gADoP428~NrhTponl%%N+JJJ+&1Fg=uXoT4xZ zTSh)37r665WJgrjp$$Q2HI>D0-?{N=jz8a0ocnJd6>B_iNJ@1j@`c7Dm6@cuPzWj3 zDb>)L5M!3b;Sd{})%sxQPe|oN+A(I00H{biYYwLM!OSKLw?1@tZH%5fod5GreKm8N z-g%Tnr9;khm07d`v@0VD5;ir!c~P=G3@l3{^{^OTFqh?!tGzvh&WJ$?u+B1659R3|3jyi^4!Gg?S84KdE5Hc>%l4=vh>bJv@Yw_2`^ZN3<>ze&0KyHjxNgd;iE}n*RU1&a3?MZ3K=ie!-)X8jh=9EKKHrzzh!Hhg7XH>RRWQ&T6Jb%?ut)Vn3Cx#ha|I3V%bMFJW1g*&S$1zNJM&%sM2RBl1a=mt?hOTS_^&R~(yQJ=mhpD@5FDJ)l; z9!&>VkFPAITnFDu(qs_toX@gRSsaclKN@63=?OERCD8Sv_=)$Om55VDH7_-?6((f4 znKxTF1b~ccTW!YiL<;q3Tf^N&a(A{7uql&@0e54D)6kx zh;t0RKb99CKmF$(zq6S(Aa*b|I0rcLK-!_A=gNvRZ(>ZQP!Z2g9n1(~P#RST%LGTg40^=}}{KvzXUX z2U!lo89DD_ib|d=X5J+Q44Hy_R=Hd>wt0w||LmkGNhtYKK0Bb$8XR*D3(n3j!o6+k zn~ehMOg^)|{>-R<;auv1{AiY$_(5cIHd>iNZ3(vd~zR-BD&KVpe=LAd6Ou-5mL1C1vMMpQoLGBL9 z?9#AG1Y2nho`{o@al?35zx>YMdiKU^d%G95iguxt%^aMnH&R=Axx$tNmTqhEs(%5% z84SiC1{fq*q64?Jzm}a&18HY10Vu3yrEX5G8`xfcFNm@4ZRDsFO=bqlwZmu7aVP_! z?1+zeqYY-=D6X-<7EIG#wYin?Cm zBB*xGBf&H%6>7a?g;`6SOrn8}9a+=_m;*dfrsl+QP=py-Zsxe7$Rx;a!?FPw_z z8U6Qrsqm1bLru?2VM-xNpJ{T})-#&}lpf5^tV~)YX-rAPlhrN@mGvpRF!aF@sbNVQ zdULE)Q(_-4dYPLN0gL72wiOwB~pFvE$NBuG&L8=%zDV}SyqdG_GTJMa0u z*Y$n(eKg}2gD6B?qfjppvALOc{R4rw{bV6Qn{0Kb&5%7ZZ&n& zNK&5!sY8<$#4IT>k(m-ZRUtJ7j7iN@lSi=;QylpxM8E3tcT4{<19@6`z{=}*3lbdUKa5GkNHc!$*ieg@;nggW*qm+(_1#S|Jsm^`22vNkxQW&C(iof)2=Nwg^Q78;M< zIeciVEgkt+dg;n`IS^Nh&-0>n3#_!yh$zPRec$!|{p+{9H-TZ!P~sA7wwzz?WMas= z;ZCKl4WW`RacDbf(swgPxzK{$?~cp6-+I^gJ$LzEpIUR2u?3g%)y5_6#+|{ijv(AM zJ4rw=W1Lo6 zuF3p7gh#CY+oN9RIMeUjL8iX~@yT=L&#J%rnM;`@BO^Ev4x6?~sT3VLpND8Fj%}tH zCpm#;zLt$iOSwVUM11+BTpGaTl7?lG_si+9oc7B>kvqbgv5_*Cpl}Vl%9Mi&P{w?V z{94ja-*dWU_kmA8M_>2wZ)TQFwVc=Oy!CYqo}^z&uV{uncI08MYtfQ3MU{XyrD$yw z74gKRR^%E(GP4BBGie>qI1k>F^D)D{)#mji|J70b&yK>N6SHJCvkCOrP{2F(YI$vv zG04c7dM@+fz>TPcI-HoFAV>m{nD212V3vcuSppW2jtqBbZo8hu{p9mPC@Awd$>+!J zoyV!k{KxC*PG}3CHzcR1_l{7%Wg=e~tzFunO4^EOE-s~*m(3)^2xUelmS+U!CPs77 zS&Vw}@FE`F+DY4+gBH8ar6_Bf2c|_qaFob~W%0-60A#(%ND|DhLN`N&%y={4qQ zDQ|hgfH0UrI@cwlE+08zYb^_T1-L8PS3yBxY~~1rrHPw%?GYdYhebG^9JR+YG)+vB zV(Ny+3+FTEj?Qk_+4XIvDk>4@qE3}WOGFdfs{PANdhYg_CqwIzn{%N1nlNt{I!~D+ zF^h(dG}Vn5D4{gpvh2gAtPFQ)P<-FZyIUXqI9P=;gJeFBl1vrMo{+H(bHCa18)a7b z+?14wI!BTY?}Z7Gnvr!!SoV>7w#BOnX_?naw;P@Na>$&}4$>TiB$i8-clk(kwB|I+ z*KX~*&V-3MclkId`#kfm%5p<8vkEYCpXWDa5O0bS)`=RcXTInM4VNAibEz|T)nw5& zoY^#|+QEzqwG7mncmn_@aEdylX^fm~$J+C~!Si>omuR2-+|%bDy}zE%^JbB$W>uLi zE!w$IP>#9xW|Dj7oKKDu#mZWb;K?g{0rRpN^1{AjL&9O783xu za-j6y+TUc{E9o$^9q`!{l(Wo2jkMStv(JpUaLkcEcKrH>kEM2lOFg<{u7Ln`ZEA}0 zs9vNF4q=4=Fs|E>Xzp@Zv?($5jGkTh$3^+}Tk|K{{Pd+;`R2MP)t&*p)+>TTgc-4q z>48W4Pdv5${HI@{_dc`;N2a=PqAB08_%5EFbNy}KKb#(%o0Mge>nwXV@3mlaD_~fi zbHDzXXQ079e&xn>pY2s;Q}sBnge9#cl$N`imh-d@L@{Yf4DAHeY^9!<5u6o?Qwg0J z{oF%$|M@Rmd42!Zvzr?S7KcVc5aOklK6w~3*hmSau&88E2Ld3VWaO4yw>JbG1(ZN7 znE|<>Fa$FrBSkc&URLF6WJsuMMH zEyeYI|EHec{hc>+7@ZkZqm%FW%C$c}X=hE-32U2~!I?1uNreC<8Z`Qw_iz5IcieSO z-7}uoEBgA27aY$?OT$S_B_cD?1X_4HCYv)IB8hXkfS82c3abIkB`B!#RW)x2lx6@^ zW|=SB$+0V<$BcX*5U3b3@*P<0%}F0`IeXXl-TlF!ZAY$*hUCD`xr`k#nFdCWXdc3| z|MsKDgcVu-%|!Er$yZh~#=JR)-%`|`OXJ5&=DSY0ms=_szWYLCss2gD-^F(=3^fF&U4G?0Y zT+te(j=umR3++-&$3OulP!5EJ(P6KkZ@qBlnYI4M7mKgdu~7149tLm&sY=?;_>m>)XuZKjltl=QjujTb*FV>6EN~@NHilMmEFvEeExUz`0I|3r|dmZ!;V$kI3Enk#bGcbfhA8hQ|UQ~ zz#8@%qr#CXf$@b=1*Lc1Z0^g-r*oStc{WEBh%2!IFz2gTbM5Bd6OZ1z@zhtYf8~|? z9(_DF>$%~bz45d3%5FTkNP|u4eT6Sy>sz59U>m(AJ60$!W!51g=eCBYwg>)4o_%fJ z+G~^fQyQ*%H;Fs+OP3;*h7|HiO?ROCV=mderK zi#K*MI!V3J5irQBH~RFw>jzKVc{p$2I?)#cR=$SXO%oF-XQq=-U-ZLm z(SlQE<{if<4ypirG4ZrFtZY=Jao_S>U|tb`WZKR7GvHy`nb0v6B2V6!kJTl%g{dpB z&U`h+=<^0xcLF0}A!m#npvLC+Z9jCWpMFoCrQ9Wh2bs$Mm#+T~vNg-D`@psLIiI;U z?aSxNyLQ#S(GAmrBS1hjLx>oV1Vuq+MjBBfXT*?;8A%ZnBZV}f35BSUf)dFP$q>kq zD3XE*fP^7z184y4s!df_S65fnt9q}V%Y5ms`OGkJ-Pokzy6uC)?a$$;Kt<{;B_yVzGNR|X5?#~AWvl$9X3Q$h&=IMQ%;clOP*<#!x+-jI7!*m zqfo%w;gY479==`6s?WiTrbu=6T*eo-Myh!4VY4cOc5RqUlpNFGn2V&o?YAcVH}1Z8 z`~G|0|LD%^_7@-faVg3^rJ3taIe+oa*9z4GR9jLs$0yVP$FeA3Sv72gM*=6m?ITZL z-yO{glP;&|O%bz}axpb9={MRygd84XZDM;4nYUkd^gN@Ib6ipsj0+2_F&z* zt-&Kmo{ZnB;wYCc22e$^Sp*W$DqOt}uHE^Sx6h)7Y)+v$g9x&Vs*vMheY&Xx0YW*c zL~D8i>S{bM!>n(Qs|j-cs*6I+eQx?zB%n$2*8c8?@0>mTwU<#Agb0R^PNxKykm+q| z7JXWE{ld!E`g|s$4}bKHvSsLE69%i|xLJM2Klyyl$x$k-t8`iVa;v_vH~-f5lpz)d zp#_yZs2Ko=`yjV<5%mXLJ+uA3f9t(J{F5*K{QaiOSNDt@R{^06GP0c2ys>QNV=!hG z5EpULmDm!VBgZie^Xs8Bi>{l+q7obh-;t6YSJQ7?ntbVG`O&Z4c?K-ShcAQK{Uk5v zcv6PL$>_M8NNIf`3lV|zg7X+gkhpOhZDt+rGI11- zsCO<0=J%9ybEhm~U_>w|^N2hl&9ST1-P!b&ux>W>JXtv{$B&Zubk0Rsz_Kv@`11At=0ne( z&!(fk|LG^M{l=qLJNn4_kvkkskX2Mw%>$@XRKbg!@!>DokS2!Ju!)7gKw4yX8=!jw z(IDsjHb1fKch>7*9WQETBL~q`AX?RzF3rEWJ-Qb|>AA>WI0zdknH7qKdCHt5=)2Y# z$fgo4g+0n7qXbDD2pkzGfH{~sH|j!M$zGK{39-`VFYo8$q8pND>;irp==88W zS}kv#FYmYK$Bj2#>awc#LV$5ACo9?XX zie#QsG)BN7s-ZKhNC%^aOs6@a7DPn)uDe%+-HcEdqe||IS6=K{*A~UBX^k!te(?5s z-lqVc_UMHF`0D5cl=19!@Os-928*)n+M+DmZtXIhE>Iu}T1v817J8O@%4p)au@#=U zzxL!W9n4;i^2qY6sf&s}PBvypRRk0&sY$m!_tL>9pTGO{*T3=HBU2u`>#~ks=yRG9 za2A{GRhW-wZxyGErBNoaq&i?C1vfW3KX1E*hd40-n?8V`(-uL_A_YMx0_{{wgPZ#( z+}MpKMoXGmn2ONh7ZFU_s(TE7;#+V1=vQ9-@4x+hq0l0y`++5SQWQ!=l7uM?RL2Is zB5I_))4PNX6ak13_Heo`yRudpBg#L~vS(Vv68(kSD9=0*oJff;N-3h6H3to?#%Sb_*;O|?w;V49kgz>f_ z#>*PsX5S#JgeD=YJ3=b~P}f}SPi`uIuJjP1(?vW~(TWnI@}!K=0N_f(Dx?oCy(z*4 z*YsVli>l2-7Rsuq{>KkrYLw1Ep^;tksrZC4Hxy=6DTY~<)0_&3N_Owu*Mi#oOv3-+ z#@!Eo;R|2?#HW7vG0rEw}Ex#n7b|K<6xqFitVG){m%@vM7);q)(wg3oe@a zWVs-wTEM)u>>`B3qDVRSfH|cMmd(rqj4mOBV18g&=k(}kyp8^MO1;`*!F8k4ebc^@ z(pb6N9mRD-r(w(d)Azbx*!A&ZJ+0y>S+Cv+7FiP5=A=4PF47PyMDHPMv!2pqEenYA zL5y!+sy=dSC0%~=v0d-IomRWf%JDlRy(gfv_M9%y@n&`S)o&eq=<%c153hgpd&ewh zI+<6qes$;U^wkI6J|^`QjBmJ(9i3CeV`ku>YodsfQc58)M-wq|Kx)bmoI2#~76_}w z+Rsjpm+SJp>$9!4Cc6jwlX=ZDt_PPV1UfkSC~#)^drv;{Z=UskfV!+^`@8EU?Yt|*h3-MA8Uj;i<8eKz zFy5RM#gbz3dyUgFWP$6jJDV1;OyE{53d)FfTLF0L+WU)D=+m}`Q9>|eON3;g&$)y| zN-lL(>3J2aQ5@Cf-+0gUfAt%O@BhLVU;W5Of9NBh9Cd7p;9y}ixApC)8I{x*KyB zFzfxK)G72AuT*Q*5<+K+{(KDIf4BX|dn-u16eYn+39H^#P1`yI5(Qb2hV~d_-Sy{f zkD+s=SZKMLgctU@58heM`tZb=2Lg4Rf8|&FwSg_AJAg8}IrMSB1_sUKlJ0xQM3I(=D1n>mOu4@YyaABe&cH|y?O7$&xPelkhs>N z??izLphFZS2IuI;`iFP$cB()Ch3`DMGWdbu1}as7UeFCUV5)#&c!W1r4ywQ*gml6N zHnCtpS70zWFO^Z?Zk^~z;Du(@0oicz{iqDW0B96VMbXDL1W}073t$8i=$rvqu{;mF z+J-ElW2!y=>Q?pDk6g{v5^!N}(g6@mh!)n8nNSe}VSb@mAL`|YS;q?V!Rs+M`QiHy z0;NDcHSE+gL`o5^XL~hO|64*u>40%tzh(u{)wAuL@%&5kV*1F3Y99tw?6Z%lZeE%& zJ6xQy6)MT5R=!)lHtY_*L3;??D$i>aPqYV)qI0`0Qo#D=T-tSeej2-FR7hE@rlV0+ z7BQ+>fsMCs1QuXm80Byz`LDij``>vH@A>LCe)_q$U1MqL0;S}Q{)u5w&|e7Z{Q}@l z0Ce9Jnh?O?Bz2>eqzuz_fzzu{JyTr%&hp6*<>igh$yw9)P1`nWXVUCdn|D#}R@3oh zDkG73Q5I!U7H|e1VA^6nly?lGgt)nG5^k{hWGF*v=ok{1rt9@<-!PQKPM=?y7B%xw z7$(640irXiM>&SQHkGSe{P^+Wr?J`SUmoLIi}q;7x5gricehpN)mWzZ2ne2fX{0%Edn6{Fw$(Bpsd*I)YYc4zv; zmE1SA#pEf0S?CHyd4Xmhoa4+Jx2ORjLx-lakOQ%1kY<@kqGixTgrdmqUXX-1Br*(_ z6#`L)ne(7ul*CUJ*@Chdn`<&>kZA1<>obM{_^uX|N1M(|N7_eHPHnbDsa$sFx;q! z*~MNdl7~ujvv<+`qG$jxM4Zb2rBIj*DNRa0DdW%Yy!DyAolnjle`0h1Z$Oa0*d@(QEZ9%m41j|Ff-XXI>OnibsFr^ml&gjh|_}JBi&BcKOGj|BDZn z_fGrec|8A{um1N(e7(}jEUT)UU)rfZ`O#0{5Xe zX5$`*)2`ef?WbO=X+Y=&CNgrWAPGPOkxr0_e&C1#2DTyrFhMm0NpSNcbU+rUhyz8C z3{{HKR-x*X!%Q?F@JUZ)aDbV<6Z+rK1aLB$Y!|-r{dqo!v`y$c)rqO1REOk{^9nhp zc)96sGW@;`@?9STs$6EIK#cR&#P{ZAs_Z=*Bx%PYheAg1O`pnXKBOTaLL(X20V1#& zR4iP>C~NxK&DxUR8-(FrhI=gzh+Hr~Cw5%pEj1dAch=qy4 z^mK6x9(roSBz_?DUT`i3Bdtj>>iCT-ayky5==!%qT2#ej>$MA;BJTJ8%&Tutmt9em z;A%%s4-PT&#YPIz7 zbaMS*(sgB`pqq>@-?;bH(|Er^P?elx`Na?Yx%YkFfBC{s?|<}Qk-MYrt)@Ra>3_8< zM)hpIe6X@qfM_kZ`V9@J0lkFP%a#P!{BI&8oYad!#v#*Jmyej`G(q&Ec`kwC40 zsAUu=kaBMO)U4KN-KpwiI<3o)gZL&P_yTr!@hB^!BCkU#vj4*;ul(D`=l}f85?h@V0oHp?N4TQxq0g*s)3{$kt4BYUL#7R)hotta4K(dLR*Y&+oc|0nbA`Vi2 z0orUQtMysiAFUeC`QvBnPgElu%)fkf_ZOz)(^2{Mth`%?HUu!9(e}6N<r|3+=mT014@4uI_r*;T zGNNE4lE`#HUwTNt$Dq_EGtdDMa9~P`at#K}J?aJ}EU}0Zidk;o8$q}k>)`V!07nNq zO{}y(f4(_W7$6F!%(Kqg#Pbf&YJ_+=7mUiipzn6D{!`Ti2)80+)!J>QJdUyjR)kQZ z%`%EL)TjYexRRxN20*PCGCjGQAcIq9pU>7sI|gn6_pekl&u5{SI+kL|WDu)V@(%gV z$d>j{UpICJ^9wVpw17KRB#~oC(WX_Oq)U=hc`$wc^3EsjFMssj@%qNSMAuNns+1VY zF4vt&jLrPgq7ELkS6!9io}#0NP0>O(39`BB3{uPC-vt-7#>4h06vEo%EAw)%(~67J z(I_BR?2@8nth)8}?Y*$Ct;mV$*zA)>XBy+{*?BO(e!9-U*qIUTWf+T2Orb^>dP`0y z>nz7DoT`*8m`qT*0)_7d*F0+7M5;J&$j2JytPwJF7Iva%tAdBVF4Q# z7AR0!hr$ezRx_Vy{Hq^&`spXH)IDZ>H|jDSO{vQ|oX4t-NUG7HpkV;vDmETTT(A!L zuEsVD7&3o`UA<1ey=osjYpyTaC(kiH zl!}b*Avq*ZGLeP^KY#ZwArt~GzCfOI-XtOn3@++0Xc35OK^WExkr8d2IW{TCiRh^_ zQ2JrF1st330|$gK42aRqb|V`N`%pnK2x^i*0TAc~Mk$27C=HD(+<=S_8KQeuDlLO) z+$n(FtJ}+B{3EZw^}RRVYC{xK!R*%N+!_~s?kT1sWjP)BYP9ug%BQ05j#<9=$S>ZL z`oa42UwHZRV_!zbOtdk!A*`!vQAk?^cMC3g^JMve1&UyXG|&`7t1*Q5AYA52nWi?W zCb?gBA_u)4McH%d4I)EW2z{vixmgf-bF9-;8*a2T3YnS5i(Z=o^caLmouE8eej)P3 z%j5U%UwP^@S2lD*o#Y~f<8g6Z$!QF&qwzjv3(0CiTp-$20cFvt7p^4&gxO3WLZwJg z?`f4tH^?V8NLhk&EuSw%$CDm^zYs)K76u1*`KZ- zET*A6rLR{xn8Gu^9nUBAH{`fe2 zX+9~fbL(5T?&7yjQMEq*^PhhIV^{a$Gxv_4k^3N_g^8Z`woKi!LDO|YSFIr_L_2S$ zZ!i38yPkQi9V(VJVN;w%^>R^&;czqL0X!ZL;hjD33iFv+bZ3Y$gshSQA%i*H=sX9H0;2o0w+c=f znBm}X9S{~k@%t|4gO$Wp90IHZN3zKY%76kU9tm;JmJ?(p#UlD%$W!wywvBKMBnSir zXh0&%VPm=Q#%|`GVr1B8LvXP>0u&CIZvoaqNT|(PQP5WIFf#WDBMmxahPn{6E+~M# z?TLwWqDRw78>^wmo5d6e2s~&FxD3H!l*UWNxFs?(uLhGMr^CP49180kWaB2RQ<$cp5MGp>ji#P<90YVEw zuW+in^$G=J2-6dLWm@Q!?T;QcuN<(D5PP3r+UXvgeD3l*mt&>3tP~+Zc_Zv5EzIywO9oaj{r#gMcwyvB8Nmxm=b(uE_au-*sRSJiv zi^v#>N|-U`2*>w4?4>2FFx}4 z-+uoiRc2BuP`m4}kAPWlG2I*lRD#VrqCM>JLmU|R`7(6eht{(|Hx$(YX(dUx(=h-m zL65L*Qge1TTD01U12ZW2xf;4wtzL1q~1{S`ZgHvd7y zFyx-g((Pomymr>jPF9E0>ak0EMW61_9<%r@q7{xDcCoMFVlxd86&P{h#2b1C!^g4_ ziP%M9Ln4SI1roGSCae%3>d8Wspn@U@rSJk9L^j5|JKm+6`{SQ~?wK`Y$YBa( z?p_FrWSC?xO*=9`K7M%UtKa!2&wa=0&hc(soR7Ox38P}M!FAPJ7pTpEtSSUj21)yc=9C=o6 zkybQgs7*@`RZCX=(VmM>DphJN2sDVLUPdPX-fUG zKkzTj>)AZilQ7aE{wKfsKmLQo%|E-YzkktuYdSio*3KOC!Mddc6H=pkCKyFbkdmEc z6GXy$$g&RMq`k2_3&KwxE?(N%hUld@d!xU3zFkSq6%iEua=rhd#}5||Ub_7|qhB6B zw*OqW=*Go#5?ASJQ^bh@tMwc8{L+tq|NrN>Keg0q<@bN?uYq?|t4+2*jGy`KuhY9I zbYUL0Z+LVu&us|PUwrw_PyA0mRmM6nX4?Pt-}=jsUw(WXPY>j1<_lQB&?od^R7o+3 zW}kZV{*9dnzkF?XnqWh&!6w^lpb>0j*h1N`7KveS^stuj;dZ)#oXf*~g%HX+*gJu& zB7|BD{ef{DmGf$A+;^#Vw*U_zDoUb&^khLaDw&%~{+*)XpRq*@-{bf18yBsTUgQ)g zi{g=;y>?gjo+#JNYPDW(19v@7wQ603>;)SI0bE2Pgn*NYkc$x3VHn(Q_N~Dti*tG) zYKRd=Sp~T^+_ywd8K7YAAfOsT1*p2AtfEE$qpiAk++VK`-(FULQcT4QIUPwJkK$}P zs_R=#yI3yAw^xe?iRSMfTK&G4I-z2{z4H27MVEnCm~m8og=t<@)pXij*=^0n?u7&s z3Zdo%R_Y>T*L6*Ywq5k`dmq{P*KRlcmw)Rs@Bhfrx*V-Mjz&?&9s-dW9g4`Tjwo>; znYd#xsk(ba#$Z?l0qKn*;-sn|n|Ik$l5C~r%XK-aZS5;T8Mspn5^p-`CYhQAsnsQs zZ;8P%x1i+MHBgdx8?Y2pfsg`q4&{VK63+A7X`j)$S`R}=$>7TPr0g&^Z8-*U#ZapD zQO(+&;?lw4`_>CPY5KR@oa^pC_{2~AyPyB-KO4F~y68?iJE}E7n6=Sfs4D8n1r%^0 zgD4#R#-_vs|LD5CIV;{?FJBzjX?Hs|-ME?+*>1;9QSUnokccrgM=!r}^;6$@`)7as z^|RkidcUqFm*=~a(T-G=WtK|O(b3}WcOQJu1oha<@pSw%VRyLKkyL?Y-=2mKefWbB z5QO0YbZc6io72xO2qd1(=!$W0r>qL^&7EV4Ok$sjx{rr+6p=})};`EPBF zZ`XC@On`1;)!>4FVd8x;LA^lH4X3DXuI@Cv%VHoH{?|KS2LOmba8R7e=$tX6B1m1S ziXjVFIo0XrnOFtM&ca#BK&{&tb~4nmr0>v+&P~!r9DD?h0I7f`pj8brz`d|y z7`9Byy+(M`K%#kyt+stH(~3KjHLYkp_TMREBlbI2~cO ze=r|^>F{`cV1NF&4`2GtUwiiXDYfYPsYzv6CSUh#JMTTZOOtXb$h4v?Qf^I>saL8r zH?!eBTE?R5yWtGd7)T#EO83%zspIp}_GG>*<$4_sBQb2iPAa8jRF)ODv*`h%P$MG% zC$oB_gnrW?aZsIu@HYZMK<6|9rDDn2@StWN8%jwte z|J-r9S0P!kNNdGc|MY+KsXy}{efDqt+TMI(?QXW?Sac%uFtA(=?tvFTF;M~xBH2K5 zm1)Me-&+0B)%q^%8+CbgasJfSm1Wm03NI+Vq65~jt)1Dds2{xgt@#hUH-7f)Km2q5 z=@?^^RLa&Hr?33~aKlMLwKDdfe>Bgp!N@ZM|3 zcmK~X-TW^;_FS(}mjsrME-(Q#Svoo$xS4pCK`J%BFi8<~*|4+b~9x8cf8$Ywea zi5}=gl<_>?Fc)6$aY*(a2i7IHr)GLLFLqSo6c9^ zyxm`W%2^GA07HW0YzipF!{9RVg3>5%Jv(cISB_4wased=srz24QJ7S4r3#z0aFR#0( zm#5fHfDmy&x0)j`g;cViGi5F!b4{5YHzqkD&c z6dSRn2oZ^gr@e|~>d?*@sM!i}ZnQ1O8m2jKn~8X<8>z(r3-KVTA&ABhOr*11E|+S) zo=n;*OtT&IX{+yI?jvzX-4(stt=0ofmGX(s-*$VP<$skPy|1ERK{4CtNdw{Z48x2vbroQvbq7U3!hL`VXZ4LCj_9NR zW&2Xftt)fM*A{K6Qdz5+hHRob^m+kg%d`2k4&^$xi;!-eb{^NiClRx`@_V-1(>{uUC24>Z$VJmF z50}kpr)RcUrL{|hXrPbXXJy>q8eboGSAs(ndU3b*;jZAy{*UF={o;@R?d3=Rjjw;^ zo4X(Q!q&KuUKl!6lBHvg&=yd7a4RV;XrpIq(SM)@vlgA|^?04aau#hX8Lwpg?|s*)HiTDXu`36K<%KK;_ukNmawT@i2QhBw&U z(A60bAyjpkJ4GZovU(e=hp(hRmp+-h$R^5ga7+!edKm)r08&+V)*&+l8Wp#te)at9 z{o|r>4SmL_e)vRNW}MY!jM>t0simPOj4nW@@+RB`Gsnny-ZosU>vea3Jq(fmzzz+C zaHUd54f*P=Xm$^}hLv@MBG0F3Ycf07aX{SXs(>^(Ric?(3R@zA0tN;Fm#Mp@_W1Q{ z-+JTz|94(3%IXSZuA`QrQ|SN&N5r~MP1A-|8=FqO>~o)U9~~2|%)L)pRfJx|&{-O8 zyk$|gO_P?5ulta3wJx6Bn}1x3Pv5-ziMQ^^uz8ViI3$=B9@@G%DcM!r7==hWbJ&!% z?iAm2(k>8gLn~xxt`ne2Fn1BO8cUYn7==|)M(|+OZCO|sv2`zsisJw9(W28jK+g-5 zQlABU{H?FN@TJ|SKKAk1tY)iq^sL^eA(+q;ZGX0N@B9p43eq}_1{DR`b^8~->xcf= zn=k&YaJs6J)DYi(^X`xS^WPTNbsVlhBnI zh~8w!yn;7FV@Ds>afEE}8iSS$;lk1)#Sf{DH3ZMecsi+mc~QOJgJ?E$SvNw-OmV&T zv)kt>u(^=G-_tPdyn0MMePueQ8MsEi4(@6jL8OX!fV(le@tm1j|otlnKr2ob6#04<0*X>K|w;#9iq0?B|8 z1e3E878?R2GB|RXLvN=(OW1aQYT2JoLm#9}X;jQx@9pTcEOwS>Jx#yY1yG zcYpPjZ;n-VhE6mrO;!Hi?{UO{m38r%ZvZ@A0Hlm z+vS}nwy!MK=jV|f0C*Uhp!6V8?Ojgy*2h=J{*lSp!r5x|YJ9W5V`cCw)mFKVeM~z! zzGAqz&` z`tq`ww*kq~G@EK-s8xq)wmBqs(CfVU1JxJ*{`U7j^77yQ`0g8Hlp`^O2xe?b_5eCy zHUvQXfaw;JqBPpz;~>QGjzQc-@*olz6r5n)yP#Z@x+o=u_>L7F47z!N7%lE1$=mVC z&y`O+zG8M84KBOy&xzKx3{8f5si>Q2Xw-bW5iHFN@#FdlOD5~!ngbv1EUl}viyw@oLf%j#q? z?eZCYU6{;YE!tqY?_{A zDhtoK9@UFrVKiE&zD%Cn>Z&xb?K=vTn3m&3-xLT=)d_zH{>~Dzir7n|xs8rxWpz4o&Po{|vx5+U z?xBdk{OeziZ;eMXKfARL@@-NK(?g)3NpeQc>d+`xf|ip6>ITAV1>7Z zWL0;#Sm-2X39|7e4lhOMHAqU8m{5{Y2D2a`bfpX_6v3(LdR~-!&0b7zRSFnN_uEmP zVrYg@Kg5UvsGuEfO-7MSLYd7obS(ss=ui^Y3JQkon`5(bO`?%Y5sgTfbN!jAzO?Xf zn}o!~FpO*jKvBecr)I{oR9&~%zIhmQgTVJfm$mk@y1BG1L9OksF4hnF&Q2GD>}8_{ zefK6I1faq`7>#_eEZuhzG7Lcuk#Z4c+gm=Hc)*rRA0Q4R3nv9jH6wIZS2{j|O(d2N z7H5Y?yO;Jl1-dQ~#o*KcW>pod5%;!h7~KP83h6-eoL~VGoCRR!53OH=rlwOVDV3w4 z2Z)g)5$kO|3e)#JQr|h|z4NQfRzx$MRnZjg^EkVDsot8M3AE|DzN`CwlrS6BXM1s8 zkBX|aC^H{&ryxY_9tXoRp`HVzbY!4$pNRmnR&NvGez~7mB-zmBdOI00~8P{Nh)- z*GJ*c{H1UIvw!`!{>HYH-|UYTvkAQ4$%PJ?mV#E`$@=lQ>=xC7^GiFsl2SovoQ+dB zVLuf)P5x+gwbN{UY(wD-R53W`Pz2*1lfe^@IrGn>)Ai!;*lyho$Ce}qxI5rj#MdQn2cDK*5^y>=Ir!rnQ}@wUM#~=h)qhp2+1-=SM92h>Nu(D zE@%&jV9TMvdBk^}_Q#{x33q!pVjRLfYl|XQ87+89tBI}co%Q1U!F2K)*Je+(x|Qrf zjBCZVq1=#A1(p@a7g7Mf5D!J7EGF0Q-uT+hp9=P)|H1eDrO$u%XOANVvcvMDt4e(k zJBz!$T6J$q+wG3)-WEQ<6wH}s$O~i^5bvF z&MVx6UWh<6xK*#eaVP%i*YCVNE|+C-T$d-Mj&`QoyIZ2yhb5XdM-q?)ZIyFanGVB8 zrk(-~zL5lInbl#xa&`CmQ_T;(e0N%({0sI=-|C)eC9YzXJQ`3*8cRFII>5s~Ld6gT zaj`~&Q~Y8kC+_+V147|GSj7pEm4*ktdtVREF+F40uylq(+2q3E3a3oN>V5v@_u;ii z{AQ8Y7YC8JAeyYC9D^0lArF&@K!Kz}V&{Rip6z#&*f$|42zqu=s;JZGL=@f_^ZYe@ zY`WflYd2pK>?C`;iU3MTe%Hh2fMb)-n9RT-RY07KfcUV90KhRodJBy}O}0=|A$%<1 zq+MPg@BU0V`U|Vm-AU{>PYB?Qk#^GSU^o78r&lXBdsXbB)WgENqGAQ8Rr zTxE*jRXFLJM`C?v+1RK?kQH52m(BuMsFo0g2qeR^3RU2)KpK{ph>#ae^M^xQ$h&GF zl18dXCvZqb51VSOJ8L_3eK13tVn$IE({Y{0lLx_zC>}!)Nm17GQ861$h{81qJMjQ@ z^Aa2nB7L9*>L7(-B}^B=*lUqJNJZai^Ub~LT5E4taW93L;f`7h-J+xbLRtsN@nm|^ z_v@l+qaIda!q7t!P2D0uRr92}QF9m(MU>fvW7ijU$xAx_(kR7$L5C-a{N(QqA zO3I-&E#I~F0765rC}6Eqa?rMnL3GeT4H#(^7|qmyarSDKo9S}@FceQPP5abJxu&-w zD4I&yVl_1hzG}n5Fc^<@&;vAFN88t+*VDL5rYRHvJan^o3wtr<_|JE7) z_#BoQhi4_{t=%md)oX@3WBGwwM?dlM?X$87+@Qq*g(@a=MW=8rQq1R}{!gtlAihH* z#=Adradp+Lw*9xicw3PS6p<{_1zAUFs(2cOD#gYH4;xZ=hydv!%dS7~y0g?BbawRg z^*1kXZ>8REA6>h2$;g#hr$W^&V{JZiX>?=L>Q!7N5ZGu~He=u4hvV}LN#48OGn7zp zBvL|6A=A-lGNyUq?1HBDv1&j3PDUfqNk^pdlcbmZhdHggS{A1{3LZfIU)! z(p>_whzrfLGZ3JlgmxLfdZqeddFqk-cU~|5r#qfbLp@~*5?>wnhehh46Jl)sL{~oD zl_GjOdoZMgu58Ql974 zJU5_1;^y;qLLH)T1@VEq0^B;Dl@G?Xc)`u}bztOWz^lIcmB)5|{?SW6`JpHNo!@cNIUoFNE7DRxmZ$VMqQJh9>uoEOx7VMeCtU>GZ0W40|lorjah z^)2VS4wVZg1qh)hTE~juSiwq#s^;i77pA1$tSQEwy_;+S0b$AtA=F7nsh>A}6eR$+ z!D#`gZPISK9Ia00F(JAqs1y4h3S+NQlLj%eAUZ`&#ARPCPsht? z?uWi%jDgOSl1Oy1_CxPM5Y5sEGHiZwa{2o1ujU7Ty!Q|y;Vz0K<9Y2dOj{pKd3DuQ zosCt+T>y7FFi5!wPE8?Q(6ppf>7pqtzqgQ}01~MwNa@{^4^D$Og_SuVafq~#95hAE zX6i}}gO-30QG({?q!8k!h4HiJul=o$J&uF@IrY}9Ta4OI%A&64^%&XiuUB2$P1kJz zv?#`PEtAozih(*nbs)$aIvFrbI4KoHh@=uO=w;k666vC8h>-jAoYsU2pVtX#VR0Dwk#y^7Kjp!RP==uE6GAtQsKQ8%22Tv7Z!2q z?OxAcKNx)#b{hWhf_ojNmHd3!x*vnr-ilr{B19{Cgh~0fTvlr>|ex#&g%!>vPp0)L{@d1gsCS z9pah_K7Lsc9{oj6@s*T4SEBkMpJ zLL!E~$6%Hr3=X&jtJ1hH!au{&F}#-~iH(lF@YsGEGN=lfq&#W!G2=(#w}*TPcSeyGBw6R2 zhI|t+Qlf8mFA&*15(>$rKr2e#WK3ZVG03(P!Xw4L>xC8Bv#=8cK@jc|E)1fg;UtQ= z?>e%ZISot#ftQL5IvHT9Lb7*+a3#`{;~^Pc^)3iU@chE= zxJPV*cFeVvB4}b#gfX!ON(=Ws_to;dzwI%to@v8dWz5#L23z&#Wvr`m!F65DUR}NR zcklib!UP#}A5FVPweokBXo+hP#{c)veQu`u=7a`dkmuN;Y4#9H?Ch093&OokWs}i<|BdqY;DsvG0;Sd94;gWaEFLu14g7{{dS-K zw)9_ka3+oflaG) zSazK|fL@UTfBeSz_kOWYsTeC_w01RLTM?|sd zO-LBXbo4+7HH)1ayBO=X%h3B}`Bu~qFP1+u+xpex!#}rI0YP1;su=wUAifb}Dq)@n{2bIjw z%~3%RSVh=IMKd(ahmI2obPp>{NT&2E7v+!?W)qVHlD_N1Eo5^Fse^(jLZET$Q$OzV zw6#l_3-`k^)^$0liy<32a-$qE4$To{QXpy)01669AbY{3%#nHRx-1VBf>aX+A zL)ghh0i6|-s@7h3`@!+TO%eD0*MK3ZG6d)3WN(vLO64|nF zto)_R)nlD!N+eeSjiPd95Tq0V=k4pC`_kxpKlR9YIc!ou)fj zwU<}j-ny?XJ#21e3<9k|C8eLA6u-4QJ=)(3vsmOj$ymX&vrlVP(n9~MPd?j(utS<+ob}6Fujb=t zfByA02D;b8w;nlY_NHt&ah$~1=S(BO1d4k}W{5%(Svift$&`nvl|M+U4FE88m0Y>) zBvj5bl}nUNUxLe^FHFN{=a@MTD5oGrl9@VHP>9$@gTw}rh%e6LpVH>}xBKbW4}a;| z=_rW@%|LL;?trK;P%)@c0T*d$8(;Cz!}5n2Qs_zdO;b||y~v7-lvgWTS4E>`iD?2MeGiGF?Plu=JonszP6hiOixRY8S#eSOOIUkY3E3wSa_S0|9Zs6eLY0kjsLP zu5uTcC~b(r^HjW);*{%c)Zfuh3znm-BIp7>JCeKSCp%l?GtmqY)gj1OXbPuOC9IV* ziis#VggycoinZ;;Wt79bFMa(@$KFpZ?S*(Vrq` zbZ)Cv*Y_*4^QLXyI_V)p2r^W1y|`PQ9$y=6KQ=GtTjwXsv*Y#REH9e+g_qu5Sdtve z694KaAAjzSe9x=*U*4Vn#-;gbC{BY^T16^|1Y{tRVW?*?*w+U!^H9C$F!d#d9E=V9 zFe^wgB4MLJ2`-$DnyaXZk$aCJuNMGXW`!su566ybBdmKi>t?O7MyLg)uoN!Uow<_K zDh(1Z$kqaJu|5O=4on)=vv=Sz7su?-`2f3U+mKr$70tVC=-ke?^pTG|D$ zkXM$-R>QKE`>M;JNyIcbHEvqkR0_bPpbdOF0ey=+L_aS?O4_^dOLV~zb02G2sskAzHukWBf{=k=-P&F&J+-?^V9G%ca z3|fd(RChMyT|q^mQ#WKA;f5s!hwQ+QWc^|tMo&LcpZr4;qo|~-;b-a%544iuR?~~d1@4kBU0^+-y=)z(1mLGfR z?N8;tTU$^en3;t^ppYR#6iyBF7ayITO?NJ>x?_o2;5D<4BH-{*K^RNboZzrXk3PrRy+-dRGk zZfw#UoxK1)Ag|sTO%Gxc4k~%Q(BpH%Q@*f^%4PyG++Zh;Z$I^CPuefNet35_NfB{W zg}NxJ5RB8__qsf9Q`Pk&vq-`a-G=}OK!idY)J;Mih`Ay|VTOUkBjyDD<^F5qb)#um$ZrLGwjX^Y&wsgD^mB&XD&$yY>~ykpH4U|} zCD(yP)<7DOVb$=BR8O--kr{POIThP8*|KmJ%v92OySH9IgF@=Y3W*62)6bDHj^hOQZ^rw-c)G0YyRP@o9X&Sc^rV~{`8{#;L+m4cg~(TKA)^}Fb2}V z6c~u!eY;Qlt0m<33||!?Wa)xjT6FKb*F5Okpa9iuplCT6htVwsb+Yxy4`*BZ=lEPv zJ#n=9>dRlRJP45$l}MY-AXAt|SywSsF^)@YjrNLiMFOHg=jL#V1n|JM_YJD6aMlzI zf#@oibN4ms=eDPxy4}3Ln}2?s_M)!HF6!mZdh-V(Jlgu3d-dlpP3+=?g}adtXI?(QOE#ko-&A|U zVz?+EHUjQJMo-9m-CQ|uuk~`E)$y{WK|&9Oibl)PG6;o|zTu`^+;GJl0A1V&9n4BP z%-;r2Fm>P<5HJ}URf4P-H@Ij^!l|hjK1(@w);R_N zWiKY#4Qe7|DIYEN+^S@)wt6r+urObmo^{I)99(<$`9FEuc0Kx{EPv(jmyhJuFy7Xn zecOJ|cYOFG?|(ABzWnbC%%jdq-H+Jyjp&Ia%_$;EBZOLpuvKhdDh@tQ`wlS)Fp37? zKm5KQi>82RRR8=hhHw5Of6rF?#nX?xb^5`#7tUlwnUzLH%W*jFX+i@6HUi&G%{XNI z473^%(2c+l#OGk*!v-S6R2ZA8crYoCN1+?m`sM=pP--QG+x64cd}T%Ura(WWj|$aQ zP2G!i$Rk7!$e(vg3CSUkD7_~#ts`<*Ivh&)u>XLN0Ujd3`xv)7-kB`7kE$Cg({bpY zxz@OxtIsKCU~-QlZ&C_a8C8qW3lKCBNi=|CLRBwl<GU zXZN=b!@W|2~*H8b-`*!Y?@qc=1YfMpa>_Y=+qd<*AKmS5~>zhAP03#FqqR@kG z;yh%~vxsk6T?W>9zT5WiIbJ?@yxwUg#i2?QHFl6iUA9GR%5ojF*Ueuz%#4SIs0`_B zviSra+6@7@PzgB)vA_^L1gR3fxm#|ZH{aZ?u9(xYAF5aUya=L14~~gWa9?H1{49pg z7whkv&mKAN78S2ZQIJ_AZ1f7Cgf*DS3eq`UPz_cO6d9N#WU($r7Z%VWyJp-EF!%B9 z{5)zQLU)NFzi}ttIPFCY(mI2g2ztx=<-sFid@C*1<9>Bi`catArkZ{GV76rw@S*C6 zF&1BY>Bcv2yd66{Xv2|0nCb5BA`+lJ+zXY1e}SGfOAH9J<<(MlT7^prjDYq>X?1LE zSDZYEAA8?-zxVh9TZ@;D-&^a;4U1qBgL}vb=BA+wsu`wgq7DgA^}r1>dm{zh)Y~FC zT-3q@K}RqU6ooRXBZ;?HPFIhdJX|CIIE+n)W5&S_$Qt`PlsVOzQkH$RT*S=K#XcH2 ziv9RP?|ZRNXf9Ucf?eunMLP|xI-|QflL!dSfLYJfXl`?Cs-C0fTE5ib!%L6BSKIS# zvnqP+dgeJmBP0ld!*e1%4C)I)$Us8Gcrnu@YDyqLmXHYP;5A5qA~ExWtK%1UuYRrK z4~qRKANV15JypgCU+!(}RbY2l0b~X12Z4jOrxm0AA+IlgBjmYE=eu)pA zL#i=Tu4YnfCEisd9SL^l3unmOqqM?d(oq2FQnASJ-aP?5aa!>2KVJN)*U$bhub%&- zr?w7(NST-)M<^v-a6F0)Vhsa7SO(VJ@Tm~JZOop^ivoghcqA$c1`Hcy<=WJv``7DN z_tIq5R)ms(ICLGcsKP3SlORjC86|E+Iqr_gF!(5vdnIAG!;uXd)|d0}gt-Rmqp7eJbqV^d-cjb5XL+h=7X< zv72F$7K3LBm;=O7i5hf&t*L9zX5Nir7Q~c2##SsceezzXIf-gCc7=ZH15e+$_kuLN z01TqpU1;P~CXd#aZa2sG=z_aND#j0r)^M6AUfFp$$)v2u5-EK)@4o_aGXq zj9Dx*ZRU5N`Gxpj1(3iH%vS1eZx@G1i+0&N+MY!iv0Nolst?<6zrC~bL;fz*6G`?9PW+|u6+302oy=zrJN!68r-mgW+~hu zlnQJ?3jt73Q7D|jrQKA_fGb1{JTx5+KvG7qwzmmFRs_$t3jNseS=C&5b#Lp#Z{7Yo zmvmClAZx|-)740dIlYTMf*9G7;UY@!40Nzi&ESFIOnjmCB=E2=`%k|J6pTsITCq!B zHpya10CFdL;4oXoiO5n1mZc=By8&Ej3qk?`2=WtIZzBB7tMOlX+y2NKXP>!Ny{@VV z*Lo2k`KEDQgdv!aa?!Cj0$>tUKJ>RS^r|~@ASw+vkKl+R3IykkLb6Di?Pjf~^=Rf= zL7ZHQMHeLj(HAc0v!HOB)6Cgn(`85kRWC&Xf~s}`06{`8Mo|DtWOsFzD#Kf9ZAf+u z8pD+bs|O<%v`%!()CI}NYSgGvBtTDtU!q714&S0C zc%hobU1TjXcSO;~@*TGYv)d2aqqn}^0YOCR7DDK|=8t~QN1uM? z(fI0@8kB8LzB-dGttaE@)^4%8Ure_us)I2I;nsJ0ezpe7YNXT24iTBfG7?>tqjKfr zb#BTB{a0Q(e*V)R`;o2B{p8*ERyUvY&_v`UJuPczT&HGb()E^ya4}Le_(rWgJQ`x2 zhYq%=@*+}lXl&VL2Vl(*ml!otTVI9%9l1Cl%HVVtP!K50`E-4BuWVBl>wZ2%eALUm zy521?2^1AK8&&lp@Nan%DL3{a!bCOEsGr9CkG7N3GYuyJY|VYJiwvI15T?F28ULa8 zy|p;`mGycnmfG!%L-#MgeR^J0E}jQWyMsUwEwWEiKkIF;PxC&B4Yr=)@@oPpB>-9c zVw)gDf92}@Y&N;XIP3lMyW>aho_^=a*)Lq1XB_^=zwo&}3L#bY-+AK73%h%*=OA`# zRQjYU4N=74$$aEAx9m)AZwIZix)ihAl|8oPh)cvAKqnsYoVP_EPLlC#I+D-s9C-@J_lh zr;5C7=7JGn0s~mYuxx!cx+l3{cm%P9jI+ERxStpql4OXQ<}=xF44z zjy{<8zu{+hj+e8zdwWDWC$68rI(rb6U?np?ZW7yqF=Z)x)V$xYT=|RzrJ05{OowV zxBDwsx8mAUz%V*}V>)))%q+$7^4-&GU%pYq(%elju3|M(nNRzjNmEzq*fl?o{kRFY z`L6H!?mc3t&6vup0)Fyzc{ilOi+x82-cUOS8RKzPb(E?{FARi{!#T`QFf_| zNOb+kb8~t7=hw&IDz!2{DYFOEuIou;RaIqKmf>QjrmA-CVqQS9*}HN3B7$rLL{tc) zW_VE5APKs)SbXsQ`a?(l^{sGw65IpfDl}rA@>ZM2Id7S3?gz_~xCbixY<*{$bmVN} zn~bj_mVN4T5P<~M0Z>2@RZ#=oO+!Kb#(r^Q6vr*MQwpQKK6l4OxJol&l-Md8%M+7b zYAI@Eb$-4&n9bL)p58?X&ar58FA;`jdIFZKJaf|z4zMo%WnV* zQ>a5Tf+7S=0go_TgmGW2%Aq%58Cq@x;G0bW7ZdS!tzs8U<`9L(&6sbH;SKi&RbV3n zL^irN_3X~p!D70V%ehtCxttqX$_K)z5ZH0wU**d^mcd5B_fr4D<*o03`S8iJ_KTNiU;N0pa1k;^ zy?oYxXw?+-I^&Y-hxWERg+ijho$Ezs_it;{Pb5|${_CaEMeznVSX@dgRe)Br%p{mA9%mu3ow{d1+j1 zSxArXef|D}MGm!<0!Wa?+}mcS&#^3373N_OdnnehHfmRvqbdshVL`EmWgibd4+Wh8Z`lZLm&z_urVx68{wsK(?Cb0H=9{n__Na1<0PWhHt5@!xAGSf~&J}!peA;{7Dq~;Q zL5mfCq@%Qk-~U9sqQuHa}wWr@AhjaFE(`V{8ZQbvrF%*pS@gNdZD@dsof7h z|Jc)~>*Z}MTx}T$xM-wjRqgxsJ3szhT^I54qtnZej+!M7@2=0!*Ors0>5%fh>FReP z?9X`n_Ihha53Y@$e&38<)6C6s?}lCjq827~;_CXf@!dPGztw)B{`Mc`@f(_~$j9tE zp?NXwuRYXaKpmf z>{tUUB09UG8*Nq7qqv^Ny;c8aDPKDn7j%bKkmT+}Ckj|}h`WI$W#lmW0&=KQ0iAE; zPykd0D2)I(Qr$xkVjUz>>zr59*?D#N`1!pTx32Dl<26x1illojqhP5XTt2s7{@l|~ z5B8xzPjnfHPz51KLMcPEnQk6*bWK?*lOd&so!%O({~!zP=NIS+%< zz5t_o5YY|vdh_54rXJEoI$3lHh$3Q09m&I^W$;%<^_w{rIe6EqY9b5Oq`GX|ScGLI zI*OIn7K2yCNMqCX9TVDqo9HdWashR)jzyc3(=%99RSHBYy{go*Ux0TNw3 zZgfTp?S*ljM3k9^Ob! zq64X492?jy1nw{ycZILxy*7L<%OL}@G&yt*Q+j8zv$u6V`5F-Ut|z3(ImDs^?(Tl| z=9N3^x(liV2LzW7y;5@p)V(bt!@<@op$YB&s+#wu(Mv!{5$^}46F3JFd_fx~ou`Uu z9w9^IQQTyyG64IOo)|FC3y~zrw3;z4L${r^SN`t)`1^02|9W%nV0PsYrYaHgR61`e z+e@p{vMw#;Rj!9D5}@^5iY3ul>OwFI#pqnL?N`m(J^z8l#NZG$$-%K!d9zubGL+6S zjZxn!Rw2ace7@WsLFB-AE+A+QBP&QTI3NTf(uq{?t+VBi+&n*fZ0l=v$Xz$4uL6S0 zF5{Wdt0Ir8KKj7pNlp>TZo%>_Tc5hPp!9w*5@7(;QY9f!Ol3vZkTR-8Ew?XU&vuyF zb~-JZw6b#8e6va!!cMVgMW_W!PkJFLDcoF9k1H+9l87AQ`9wj3s!`xk2K6+G7}|i9 zXixOwQ*!2Usji-vY@VJyS}fCR-O1i)BE64yGd31JtXH|c3{qoPh^u-tpG2ix5(tRDw zG5~=P%765kukK&ki(TI?&erWZ1{sg1L3HI#5rqidIY3k4TC7I1Q8B7%%x20dG(!zE z5oidN7NKCy8t5e$HP@Jwn5V85R9SEOn}H+RlDIT}fod8{@? z=!FJE;prxI65-;Cm4@gvVFk&Xcw;!(i*&Mq^9N|8I~gEZ@_vq`^M(D{kG_4pb#{E8 z<4eW{ObYMY2UA>aYQU2+TVlb6B zqZY;L`KKzzDgCX$OkPejrY5IrMkANt0VP7ZO}HPD3`z%3I74XY%kk)!_xq2&ax{JR z%I{2~ItmmSeg})0B*;Wx)D@6pE-n*&8a;k|PqNQa(B&-NVoj|>kUYHOlAvhzXcLz`r z0uegRGh78EOM2mKBs7Z0*DfK97y0V-$Ila6>;jf$%3)SEiE=MUdq zoIeuo7IBuXft&`8oh?}#PX&=eW~!)zq-Y3c1*Dfv0!3ej80K6zCIMwsYFKxs;sMXx zZx?OrK?;#-mHN969{r9dZ_dKg%j(_!e zX>arH_|3~GYSOykHn@CWGBv46>d#-TxDVuE6n7(|$0K)|9Z@(L(k)oX6u z<}`b+wH%y#D-xNX!D;r{&DSzT?OfUI9=P3uvM9`k>UITL-nDvuan&rOS^JyM&dP!x zo?Y!7P5XH7esga=Up6al*TPI8*Rr;1l9%NuS)#3{^KnGg#`L@uZX0wfWws5KvmL)F z#pS%~SIE*%HJWlE!8vwf142EJ;b28nUIJ|9Sf-{T1XD7YqECPdYbsU4|MqkMAQEFX zxTGrDLH(e}g9eb1_J%Md=5~-;Qk!>_`G{ylCo4Oxv?F4IZIUoH^TMEWtq8Qqn%ww^ z9;ZKH^SIEBwi+1_h?WFlZkaN&Nwmu>|JN-0(V~6nLB@SoGnv58`t>2r8vpk(KYzLW z>HEu`iNHf&ZUVUh>>>1qI$3gkr}-~>T@rmh)d6F1n$iBc`PrMNi8TUjSb93I+{abk z=6THAoG~?@SQDsWPO|ODGRxI+Fq0gaeWG%@KarHHW8;<4 z!gE8&R6v242uy0KdIk1s3{%x)q(DKWgk;u$2qYk5GIAiK4IxXJX-~2z(m70k-D>xf zJFibC87n6zJ8G|8uivVP2@bB%@cq;K-@SkF()FYBV7rYi0*#qqaB3NmW74Ds)ggw> zv6JLr89Ap!q{)n#v$~QL3ku2PsMEFx+Q(bxk6dh(NeLy~?>{`7A5Fs3hktz{JD7|f z1-kHo19q>LpUgkHwfEH-70Zmj{?rSrcGaZTdw-SAH=(eD(!`8>(KHJWs4r}<8XuqR zDq139%7-5U&|xnD;x5W!*|v=^4@Nr=B|wb&yuwK}laA+C@$SDLJok;g`PFjqaJ@5| zs$Y%kBahBmL*%M5FG|jWu?=4Ijg=E>TV<1OhR5Itpg}SrgTKNaUuH&>jYp$3^^1$u z>76rUu19V>rOB*zIjL=t4}cH|YEU9kCOFERGUuQifJiePah82%Ej5rs$KV9c%BmO_ zs>yja9d3E3B?~bnvE(FUq|Plc*{l0rvvhNj|Lt&NYQ!eq($rwXmKBc$exLa>AKTcC z;6Q$Ba%y3TkZjmlP^aoi752t{^^^JH%g^o^hCn^8)>k1#B`FElAEjp=K3cg=n4}X8 zLP3m0SPg8-zJQ!N{g>`^#JRW{l9=;eB<88TQ~8$RgvepMv3dDTes40T4doJdCD@^6Vy?e z1%v^u?N8N9GMv;k(_tFI3;W zk)6D`J`FVv-4l|fah<>C?tMB)Sk#E%o&UqDZ|#pV4-gc+toukR)U5lyo2R6JBao1i zF-(h57|+VQ&=g5ki6cO!>d3FwaejHJu`Wk^?Te%T+R&TBQX>C8L# zgsPfpOwp7?IyLAZvmMp~HT(}VI>ea~F>K%oO^vXr@EG_H^C8Uk!roDF!)BVuOhuy% z5cKx2J<#p|5knMe5*ISR4CiN$F0Rh{ZVh!|#CP9WI?8P8mL!-+ZYCMR`>)@bUsQ{x zWwMNeLHn2#ftW_)qOSaOcT!Hcm_bLr{!}DO^PGn@50v*;GLJ zX7=8UnHWEo_eNrn=;m1rIIv?c9M)@3T^D8t*zVd-D2o0<^Ml)06@(8vJH!D^2;yH5>X-t zi{4q`^U`$O$GS-zwPym9nM?)+1C%VN<-OFs1`~??kKbvXx!)eTgX8J%4(qX+F&kKk znm(dW8e^s4q|3I=lR8))vUT7tb6M^(?^Si13TT}{%yNSgJEI{1#b8V*qJ8CR_56d2 zTg$S(+<{o-NUU+>MUb>0P|FGPFb$eU)?UQzYOC*2QD?|lvPi`s9FyF^&4xPT3P@#sqVgp1ZYo z>+Jl_Yqt--ck3ZKR)2_o>HVSzAFl5C7@izG`J4IMr|Sh&p|rQCA!}o2qU^kC0@2>c cAD`^}7sce3h!6gGmjD0&07*qoM6N<$f()<7!vFvP literal 0 HcmV?d00001 diff --git a/app/dataviz/primerpedia-master/design/screen/most-controversial_sm.png b/app/dataviz/primerpedia-master/design/screen/most-controversial_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..993d89c1caa5ecc5a10d415351bb64a659f0d0fd GIT binary patch literal 71861 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 VpIFdXmjwU-002ovPDHLkV1md5#iIZK literal 0 HcmV?d00001 diff --git a/app/dataviz/primerpedia-master/design/screen/what-is-wikipedia_sm.png b/app/dataviz/primerpedia-master/design/screen/what-is-wikipedia_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..e824b02ff8cd6440f6e0586cdc6e5bc16890ee97 GIT binary patch literal 87609 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

B_ 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
k?cmF0-iP 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

d1WD(UoKUEV(qO2&F{fM$y%F#7oHU{YQK>4c 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≈EZ|6jzJALgP>M=38O6X*fYF4se3U4X&~_s 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 $ZZTbsfX1msNqCG@q;2hzALT|-hsjM}tRyPh- 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